From: ms Date: Sat, 28 Apr 2007 09:01:53 +0000 (+0000) Subject: Hwinfo-Hardwareerkennung entfernt. X-Git-Tag: v2.3-beta1~752 X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=commitdiff_plain;h=e989d2d914afb7d0488c086e553d2b3b43d3df8b Hwinfo-Hardwareerkennung entfernt. Alte Paketdateien entfernt, da der Packager neu geschrieben wird. git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@505 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8 --- diff --git a/config/rootfiles/common/misc-progs b/config/rootfiles/common/misc-progs index b9570def07..c6b4673585 100644 --- a/config/rootfiles/common/misc-progs +++ b/config/rootfiles/common/misc-progs @@ -19,7 +19,6 @@ usr/local/bin/restartsyslogd usr/local/bin/restartwireless #usr/local/bin/sambactrl usr/local/bin/setaliases -usr/local/bin/setdate usr/local/bin/setdmzholes usr/local/bin/setfilters usr/local/bin/setportfw diff --git a/doc/language_issues.de b/doc/language_issues.de index c0c806382a..eed43da582 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -8,6 +8,8 @@ WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv WARNING: translation string unused: Verbose WARNING: translation string unused: add new ovpn +WARNING: translation string unused: admin user password has been changed +WARNING: translation string unused: administrator user password WARNING: translation string unused: advproxy LDAP auth WARNING: translation string unused: advproxy NTLM auth WARNING: translation string unused: advproxy advanced proxy @@ -89,6 +91,8 @@ WARNING: translation string unused: dhcp base ip fixed lease WARNING: translation string unused: dhcp create fixed leases WARNING: translation string unused: dhcp fixed lease err1 WARNING: translation string unused: dhcp fixed lease help1 +WARNING: translation string unused: dial user password +WARNING: translation string unused: dial user password has been changed WARNING: translation string unused: dialup settings WARNING: translation string unused: disconnect WARNING: translation string unused: disk access per @@ -221,7 +225,9 @@ WARNING: translation string unused: ovpn log WARNING: translation string unused: ovpnstatus log WARNING: translation string unused: ovpnsys log WARNING: translation string unused: package failed to install +WARNING: translation string unused: password contains illegal characters WARNING: translation string unused: password crypting key +WARNING: translation string unused: passwords must be at least 6 characters in length WARNING: translation string unused: polfile WARNING: translation string unused: pots WARNING: translation string unused: profiles @@ -252,6 +258,7 @@ WARNING: translation string unused: squid extension methods invalid WARNING: translation string unused: squid fix cache WARNING: translation string unused: ssh access tip WARNING: translation string unused: ssnetwork status +WARNING: translation string unused: sspasswords WARNING: translation string unused: sssystem status WARNING: translation string unused: sstraffic graphs WARNING: translation string unused: successfully refreshed updates list diff --git a/doc/language_issues.en b/doc/language_issues.en index f213190cf6..ad6d029646 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -8,6 +8,8 @@ WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv WARNING: translation string unused: Verbose WARNING: translation string unused: add new ovpn +WARNING: translation string unused: admin user password has been changed +WARNING: translation string unused: administrator user password WARNING: translation string unused: advproxy LDAP auth WARNING: translation string unused: advproxy NTLM auth WARNING: translation string unused: advproxy advanced proxy @@ -101,6 +103,8 @@ WARNING: translation string unused: dbfile WARNING: translation string unused: debugme WARNING: translation string unused: dhcp server disabled on blue interface WARNING: translation string unused: dhcp server enabled on blue interface +WARNING: translation string unused: dial user password +WARNING: translation string unused: dial user password has been changed WARNING: translation string unused: dialup settings WARNING: translation string unused: disconnect WARNING: translation string unused: disk access per @@ -235,6 +239,8 @@ WARNING: translation string unused: ovpn log WARNING: translation string unused: ovpnstatus log WARNING: translation string unused: ovpnsys log WARNING: translation string unused: package failed to install +WARNING: translation string unused: password contains illegal characters +WARNING: translation string unused: passwords must be at least 6 characters in length WARNING: translation string unused: polfile WARNING: translation string unused: pots WARNING: translation string unused: profiles @@ -259,6 +265,7 @@ WARNING: translation string unused: smbreload WARNING: translation string unused: squid extension methods WARNING: translation string unused: squid extension methods invalid WARNING: translation string unused: ssnetwork status +WARNING: translation string unused: sspasswords WARNING: translation string unused: sssystem status WARNING: translation string unused: sstraffic graphs WARNING: translation string unused: successfully refreshed updates list diff --git a/lfs/dbus b/lfs/dbus deleted file mode 100644 index 57a0880618..0000000000 --- a/lfs/dbus +++ /dev/null @@ -1,93 +0,0 @@ -############################################################################### -# This file is part of the IPCop Firewall. # -# # -# IPCop is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPCop is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPCop; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Makefiles are based on LFSMake, which is # -# Copyright (C) 2002 Rod Roard # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 0.62 - -THISAPP = dbus-$(VER) -DL_FILE = dbus-$(VER).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = ba7692f63d0e9f1ef06703dff56cb650 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && CPPFLAGS="-I/opt/$(MACHINE)-uClibc/include" \ - ./configure --prefix=/opt/$(MACHINE)-uClibc --sysconfdir=/etc \ - --localstatedir=/var --disable-python \ - --disable-glib --disable-shared - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install -else - cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ - --localstatedir=/var --disable-python - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install -endif - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/hal b/lfs/hal deleted file mode 100644 index 46a1f6e6a8..0000000000 --- a/lfs/hal +++ /dev/null @@ -1,95 +0,0 @@ -############################################################################### -# This file is part of the IPCop Firewall. # -# # -# IPCop is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPCop is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPCop; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Makefiles are based on LFSMake, which is # -# Copyright (C) 2002 Rod Roard # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 0.5.7.1 - -THISAPP = hal-$(VER) -DL_FILE = hal-$(VER).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = d7a7741808ba130f8aff3f5d3b5689e4 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && CPPFLAGS="-I/opt/$(MACHINE)-uClibc/include" \ - ./configure --prefix=/opt/$(MACHINE)-uClibc \ - --disable-shared --disable-glib --disable-policy-kit \ - --disable-acpi-proc --disable-acpi-acpid - cd $(DIR_APP)/libhal && make $(MAKETUNING) - cd $(DIR_APP)/libhal && make install - install -v -m755 -d /opt/$(MACHINE)-uClibc/var/run/hald -else - cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ - --libexecdir=/usr/lib/hal --localstatedir=/var - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - install -v -m755 -d /var/run/hald -endif - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/hwinfo b/lfs/hwinfo deleted file mode 100644 index 1a490226d8..0000000000 --- a/lfs/hwinfo +++ /dev/null @@ -1,68 +0,0 @@ -############################################################################### -# This file is part of the IPCop Firewall. # -# # -# IPCop is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPCop is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPCop; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Makefiles are based on LFSMake, which is # -# Copyright (C) 2002 Rod Roard # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = ipfire - -THISAPP = hwinfo-$(VER) -DIR_APP = $(DIR_SRC)/hwinfo -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif - -############################################################################### -# Top-level Rules -############################################################################### - -install : $(TARGET) - -check : - -download : - -md5 : - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : - @$(PREBUILD) - @rm -rf $(DIR_APP) && cp -av $(DIR_SRC)/src/hwinfo $(DIR_SRC) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && make CC="/opt/$(MACHINE)-uClibc/bin/$(MACHINE)-linux-gcc -I/opt/$(MACHINE)-uClibc/include" \ - EXTRA_FLAGS="-fno-pic -DUCLIBC" \ - SHARED_FLAGS= LIBS="-lhd -lsysfs" - cd $(DIR_APP) && install -m 755 hwinfo /install/initrd/sbin -else - cd $(DIR_APP) && make tinystatic - cd $(DIR_APP) && make tinystaticinstall -endif - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/iptraf b/lfs/iptraf deleted file mode 100644 index 48e9e2daff..0000000000 --- a/lfs/iptraf +++ /dev/null @@ -1,80 +0,0 @@ -############################################################################### -# This file is part of the IPCop Firewall. # -# # -# IPCop is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPCop is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPCop; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Makefiles are based on LFSMake, which is # -# Copyright (C) 2002 Rod Roard # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 3.0.0 - -THISAPP = iptraf-$(VER) -DL_FILE = $(THISAPP).bin.i386.tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 0b022f233731ca09a7c16d659c769dad - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP).bin.i386/src && yes 'n' | make install TARGET=/usr/bin - @rm -rf $(DIR_APP).bin.i386 - @$(POSTBUILD) diff --git a/lfs/libxml2 b/lfs/libxml2 index be15f8307e..4d79b697b9 100644 --- a/lfs/libxml2 +++ b/lfs/libxml2 @@ -32,11 +32,7 @@ THISAPP = libxml2-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -76,14 +72,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix=/ --disable-shared - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install DESTDIR=/opt/$(MACHINE)-uClibc -else cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/make.sh b/make.sh index 341ab38748..ce965171c6 100644 --- a/make.sh +++ b/make.sh @@ -170,7 +170,7 @@ prepareenv() { # Setup environment set +h LC_ALL=POSIX - MAKETUNING="-j6" + MAKETUNING="-j4" export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD @@ -446,9 +446,6 @@ buildipfire() { ipfiremake Locale-Country ipfiremake XML-Parser ipfiremake glib - ipfiremake dbus - ipfiremake hal - ipfiremake hwinfo ipfiremake GeoIP ipfiremake fwhits ipfiremake noip_updater @@ -533,7 +530,6 @@ buildipfire() { ipfiremake etherwake ipfiremake ethereal ipfiremake tftp-hpa - ipfiremake iptraf ipfiremake bwm-ng ipfiremake nagios ipfiremake tripwire @@ -573,11 +569,7 @@ buildinstaller() { installmake pciutils installmake zlib installmake wget - installmake libxml2 - installmake dbus - installmake hal installmake hwdata - installmake hwinfo installmake kudzu installmake installer installmake initrd diff --git a/src/hwinfo/COPYING b/src/hwinfo/COPYING deleted file mode 100644 index 1609d969a5..0000000000 --- a/src/hwinfo/COPYING +++ /dev/null @@ -1,341 +0,0 @@ ----------------------------------------------------------------------- - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/src/hwinfo/ChangeLog b/src/hwinfo/ChangeLog deleted file mode 100644 index 58c542d64d..0000000000 --- a/src/hwinfo/ChangeLog +++ /dev/null @@ -1,1956 +0,0 @@ -22/3/2005: v10.16 - - updated X11 data (#74130) - -21/3/2005: v10.15 - - mls: faster hwscand - -21/3/2005: v10.14 - - updated X11 data (#74022) - -19/3/2005: v10.13 - - fix wrong entry for Fritz!Card DSL SL USB and - make ppp mode detection safer (#71995) - - adjusted ltmodem info (#71979) - -18/3/2005: v10.12 - - updated nongpl info - - reverting slamr patch (#72301) - - pcmcia info updated (#73057) - - pci dev names updated - - read /proc/modules less often - - updated X11 data - - aic7xxx/aic79xx driver info update - - fix Fritz!Box Fon entry in database - -17/3/2005: v10.11 - - another notebook (#67412) - - do wlan detection for --netcard (#73077) - - remove Eicon cards from 64 bit archs, the driver does not support - 64 bit yet (#55722) - -16/3/2005: v10.10 - - updated notebook display data - - fix udev db reading - - updated X11 data - - ltmodem device id update - - no check for gfx card changes (#72907) - -14/3/2005: v10.9 - - hardware detection for ISDN PCMCIA cards (#71208) - - updated ISDN data - - updated X11 data - - better network type detection (#70991, #71231, #67325) - - load some acpi modules on hp notebook (#72146) - - fixed isapnp sound card detection (#67303) - - slamr: ttySL0 -> ttyLT0 (#72301) - -7/3/2005: v10.8 - - updated X11 data - -4/3/2005: v10.7 - - s390: made ccwgroup walking more robust - - fixed bios base mem detection - - allow device class in 'hwinfo --db' request - - updated X11 data - -28/2/2005: v10.6 - - jg: improved wlan patch (no dependency on libiw) - -28/2/2005: v10.5 - - fixed model name for some SGI hardware (#63973) - - fix Fritz!Card DSL SL USB ID (#66674) - - better heuristics to assign BIOS driver numbers (#66669) - - removed ahci vs. ata_piix hack (#65218) - -25/2/2005: v10.4 - - report pci class 0x403 as audio devices (#66466) - - load ahci *and* ata_piix (#65218) - - symlink /dev/fb might be missing; trying fb0, too (#66501) - - reorder modules.pcimap entries so that more specific matches are - considered first (#66594) - - ensure nvida network cards are network cards (#65852) - - updated X11 data - -23/2/2005: v10.3 - - reworked pcmcia code to give cardbus devices sysfs ids - -21/2/2005: v10.2 - - jg: added wlan feature detection - -17/2/2005: v10.1 - - notebook lcd data update - - build shared tiny lib - -15/2/2005: v10.0 - - libhd interface changes: geometry values - - prepare for wlan feature detection - - x11 db update - - better disk geometry handling - -8/2/2005: v9.36 - - added '--kernel-version' option - -31/1/2004: v9.35 - - updated X11 data - -14/12/2004: v9.34 - - fixed access to undefined memory (#39238) - - fix segfault when using 'x11=foo' boot option (#46367) - - add additional check to catch broken BIOSes (#48665) - - abort BIOS code execution if it takes too long (#48665) - - find usb serial lines - -2/12/2004: v9.33 - - s390: identify new CU types 2107, 1750 as DASD - - fixed some dvb entries (#47057) - - s390: added new prog_if ID pif_dasd_fba to identify FBA DASDs - (reqd. by fehr) - - less agressively assume scsi devs are disks (#47654) - - fixed external hardware db parser (#47606, comment 6) - - ibm notebook data updated - - avoid libsysfs accidentally reading pci config space - - fixed parsing of scsi serial id (#48757) - - look at /sys/class/net/*/type, too (#48812) - -13/10/2004: v9.32 - - report network interfaces correctly even though udev lists them - -12/10/2004: v9.31 - - report usb host-to-host links as network devs (#22739) - -11/10/2004: v9.30 - - find ide devices != cdrom & disk (#39911, #45229) - - return special ids for synaptics touchpad (#46649) - -7/10/2004: v9.29 - - fixed segfault with large /proc/interrupt entries (e.g. 512 cpus) (#46582) - -1/10/2004: v9.28 - - list bluetooth isdn box as bt device, too (#46626) - -1/10/2004: v9.27 - - smartlink-softmodem is back (#46594) - - added some dvb cards (#46612) - -30/9/2004: v9.26 - - updated X11 data (#45870) - -29/9/2004: v9.25 - - removed obsolete module info; reworked pcmcia info - -29/9/2004: v9.24 - - updated pcmcia & usb network data (#33647) - - updated pci device names - -29/9/2004: v9.23 - - use SG_IO for SCSI device accesses (#46058) - -28/9/2004: v9.22 - - added gen-hwcfg-disk.sh (#46311) - -27/9/2004: v9.21 - - updated ancient audio info (#46096) - - add ipw/atmel firmware packages (#45960) - - updated X11 data - - added new isdn cards to database - -27/9/2004: v9.20 - - report bluetooth devices (#45893) - -24/9/2004: v9.19 - - return package info for sony notebooks, too (35245) - -23/9/2004: v9.18 - - added --pcmcia option to hwscanqueue (#44290) - - return package info in system entry (#35245) - -22/9/2004: v9.17 - - updated X11 data - -21/9/2004: v9.16 - - drop workaround for multiple hotplug events by broken kernel - -21/9/2004: v9.15 - - replaced raiddetect with dmraid - -20/9/2004: v9.14 - - sata info update (#45551) - - look at smbios data for smp detection, too - -17/9/2004: v9.13 - - added some epson scanners (#45074) - - adaptec module info update - -13/9/2004: v9.12 - - kernel-nongpl stuff only for i386 (#45099) - - updated megaraid module info - - ibm notebook info update (#45038) - -13/9/2004: v9.11 - - clear hd_data struct after it has been released (#44855) - - updated X11 data - - changed sata vendor name handling a bit - - isdn: remove old bluetooth packages from database - -10/9/2004: v9.10 - - sata driver seems to generate a dummy scsi vendor name (#44286) - -6/9/2004: v9.9 - - updated tv-card info - -6/9/2004: v9.8 - - removed ancient function hd_has_special_eide() - - use edd module to get extended BIOS features (#44649) - - 'hwinfo --map' includes a hardware scan - -3/9/2004: v9.7 - - win modem dev name change (#44253) - - added nongpl module info - - fixed /tmp file handling (#44538) - -30/8/2004: v9.6 - - changed hwbootscan to use bash (#44199) - - fixed hd.ids parser bug - - updated X11 data - -23/8/2004: v9.5 - - updated X11 data - - added display sizes for a number of IBM notebooks - -18/8/2004: v9.4 - - new wlan data (#42759, #39481, #43921) - - hwscan now really moved to /sbin - -16/8/2004: v9.3 - - move hwscan* to /sbin (#43601) - -5/8/2004: v9.2 - - push/pop don't work with 32bit regs on amd64 (#43531) - -4/8/2004: v9.1 - - get netcard link state via ethtool ioctl - -6/7/2004: v9.0 - - ids/src/s390: changed "OSA Express Ethernet card" to "OSA Express - Network card" (can be Token Ring, too) - - joined changes up to 8.60 from 9.1 branch: - - major 229, minors >= 128 are hvsi%u devies (host virtual - serial interface) (requested by IBM) - - ids/src/s390: use subclass 0x86 for OSA Express (bug #41461) - - changed Broadcom netcard name (#42362) - - dac960 data corrected (#41659) - - s390: set status.available to yes for IUCV devs (bug #41525) - - s390: give bus_iucv a name (bug #41525) - - s390: give the IUCV "controller" subclass ID and name (bug #41525) - - ia64: fixed unaligned accesses (#41589) - - check file size so we don't read outside mmap()-ed region - - ppc: handle iseries_veth correctly in loaded and unloaded module - state. #41347/LTC#8984 - - send smaller scsi INQUIRY command (#38731) - - added scsi.noserial probe option; useful for some usb sticks (#40485) - - adding pci id fix from #40175 - - updated b44 vs. bcm4400 data - - s390: fixed several DASD IDs - - s390: fixed --disk filtering (bug #41231) - - made --only more effective (#37933) - - hwscanqueue: closing file descriptors to allow parent to terminate - - added debug option to cpu emulation to help tracing bios related system - crashes (#40644) - - use sysfs_bus_id for unique ID calculation on CCW devices to avoid - duplicate IDs (bug #40587) - - read /proc/iSeries/config to get number of veth devs (#40527) - - load sg module before looking for scanners (#40478) - - updated usb scanner data (#40480) - - got latest pci device names from pciutils - - use mmap() to access /dev/mem & re-enable bios access - on ia64 (#34550) - - take out ips (#39993) - - fixed cdb_x11 script (#40335) - - updated X11 data (#40335) - - fixed UML fix (#40271) - - don't check alternate settings (#40266) - - added functions necessary to build a model name to tiny version; - this is needed by linuxrc (#39092) - - detect IUCV pseudodevices (bug #39456) - - added hd_busid_to_hwcfg() (bug #39456) - - updated X11 data (#39767) - - fixed strange side effect of UML detection (#39946) - - s390: enhance grouped channel detection using ccwgroup bus - - use *last* console parameter for serial console - - look for usb network cards (#37870) - - network class id cleanup (#39456) - - add bus.name for bus.id == bus_ccw - - avoid unspecific network types (#38874) - - fixed memory size detection (#34895, #38758) - - report UML network (#39521) - - 'hwinfo --map' returns mapping new -> old block - device names (#39437) - - s390: set is.notready flag on unformatted DASDs (bug #39174) - - rewrote serial console handling (#39029, #23322, #35824) - - updated X11 data (#39282) - - subclass 0x83 for xpnet card (#35867) - - add UML keyboard (#38922) - - s390: add bus id bus_ccw - - s390: set bus.id, sysfs_bus_id and sysfs_device_link for all devices - - s390: do not do pr_s390disks by default, and run it after pr_s390 - to keep already detected non-disk devices from being deleted - - s390: implement rw/ro info properly - - s390: fake geometry and size of unformatted DASDs to most likely - values - - removed veth.* (not needed) - - fixed bug in modules.alias conversion script (#38800) - - fixed linmodem data (#38800) - - handle veth devices on iSeries (#38696, #37981) - - another de4x5 vs. tulip case (#39127) - - fixed cdrom config segfault (might happen while reading inconsistent - cdrom config data) - - support pSeries vscsi (#36029) - - bcm5700, not tg3 on ppc* (#38647) - - add Acer TravelMate 660 & Asus S5200N LCD sizes (#38149) - - make SGI IOC4 known as storage controller (#38628) - - support SGI XPNET (#35867) - -6/4/2004: v8.38 - - do call --partion with --fast in hwscand polling code - -6/4/2004: v8.37 - - fixed unique ids for pci devs (#37570) - -6/4/2004: v8.36 - - run raiddetect only on x86-like archs (#36157) - - don't run raiddetect if we didn't find any disks - -5/4/2004: v8.35 - - don't run raiddetect if --fast option is used - -5/4/2004: v8.34 - - make --only accept device names, too (#38265) - - check return value from hd_sysfs_id() (#38266) - - make it more resistant against strange libsysfs data (#38259) - - tg3 vs bcm5700 again (#38268) - -2/4/2004: v8.33 - - another wlan card (#38119) - -2/4/2004: v8.32 - - store driver list & sysfs info in hardware config files - -2/4/2004: v8.31 - - add Fritz!Card DSL SL USB in database - - hwbootscan: move icon creation from coldplug - - lt modem (#36552) - - fixed some module names (#37285, #37518) - - added dvb cards (#32730) - - use old bios disk assign code if there's no edd info - -1/4/2004: v8.30 - - wlan card detection fix (#37872) - - updated X11 data - - read isapnp from sysfs (#35157) - -1/4/2004: v8.29 - - hwscanqueue: remember commands and ignore the same commands for 20 - seconds (workaround some unexpected signals from kernel) - - hwscand: set long timeout to 10 seconds - - hwscan*: add --partition command - -31/3/2004: v8.28 - - rewrote input device handling - - load ide-cd, sd_mod, sr_mod before looking for block devs (#37558) - - fixed usb printer detection - - run 'raiddetect' to tag ide soft raid devices - - minor vbe bios fixes - -30/3/2004: v8.27 - - changed bios probing to do less things - - added duplicate DASD detection code from the late dasd.c - to block.c (bug #37068) - - changed bios probing to do less things - - another winmodem (#37335) - -29/3/2004: v8.26 - - don't run modprobe if it doesn't exist - -29/3/2004: v8.25 - - add edd support - -28/3/2004: v8.24 - - added hwscand hwscanqueue - - use sysfs for usb devices - - scsi tapes detected again - - added hardware class 'tape' - - added getsysinfo script (collect data to debug hw detection) - -25/3/2004: v8.23 - - added hd_is_uml() to report if we're running in an UM kernel - - b44 vs. bcm4400 (#36763) - - fix inconsitency in device name list - - allow device names in 'hwscan --show' - -22/3/2004: v8.22 - - removed Intel-v92ham support (#36667) - - worked on new sysfs block code - -21/3/2004: v8.21 - - use sysfs for block devices - -15/3/2004: v8.20 - - fixed 8139cp/too module info (#36028) - -15/3/2004: v8.19 - - do not reverse sysfs order (libsysfs does it) - - updated X11 data - - return real device name, not udev symlink - - DSL hardware detection for none pppoe (kkeil) - -14/3/2004: v8.18 - - s390: added two missing DASD device types - - added '--root' option (for testing) - - added '--db' option for database queries - - fixed 'x11i' parameter handling - - read pci.handmap - -9/3/2004: v8.17 - - udevinfo moved to /usr/bin - -8/3/2004: v8.16 - - added host info for s390 SCSI devices - - added disk-only probing method for s390 - - added WWPN, FCP LUN for s390 SCSI devices - - updated X11 data - -4/3/2004: v8.15 - - s390: added LCSS info to ccw_t - - link libhd against libsysfs - - added hw item for quick DASD rescanning - - updated digital camera ids. - - pci from sysfs finished - - network interfaces from sysfs - -1/3/2004: v8.14 - - fix smp detection on ia32e (#34742) - - store some new fields in unique-id files - - better error logging for vbios init - - disable all BIOS related things on ia64 (#34550) - - updated X11 data - - use sysfs for pci data (not default) - -24/2/2004: v8.13 - - include x86emu into libhd.so - - don't segfault if we couldn't get a shared memory segment - -23/2/2004: v8.12 - - fixed Makefile - -23/2/2004: v8.11 - - added '--version' (#31925) - -23/2/2004: v8.10 - - check for hyperthreading on amd64 (#34742) - - removed last references to ataraid from hardware db - - added new x86 emulator (#34545) - - return MacRISC (#34591) - -17/2/2004: v8.09 - - handle '-' vs. '_' in module names - -17/2/2004: v8.08 - - isdn database optional read from /usr/share/hwinfo/ISDN.CDB.hwdb - - mk_isdnhwdb tool to convert CDB data to ISDN.CDB.hwdb - - fixed Makefile - -16/2/2004: v8.07 - - fixed ia64 unaligned access (#32396) - - use modprobe for tulip (#32911) - -11/2/2004: v8.06 - - fixed segfault on s390* - - removed special ia64 hardware data: new kernel, new game - -9/2/2004: v8.05 - - nvnet -> forcedeth (#25531) - - sata module data updated - - moved psaux mice to input/mice - - make convert_hd understand modules.alias files - -6/2/2004: v8.04 - - sysfs includes moved - - usb modules renamed - - really basic udev & sysfs support for block devs - -4/12/2003: v8.03 - - proper multichannel device detection (finally...) - - identify virtual reader/punch/printer - -2/12/2003: v8.02 - - build with "-pipe" - - accommodated to changes in format of /proc/dasd/devices - - ditched storage subclass dasd, introduced s390disk prog_if instead - - ditched fake CTC controller generation - - deal with unsorted bus trees in multichannel device detection - -18/11/2003: v8.01 - - converted s390 HW detection to sysfs - - moved CU/device models to separate data structure - - added more s390 devices - - rewrote parsing of SMBIOS data structures - -28/10/2003: v8.00 - - get pci config type from kernel log (#30704) - - add new flag 'cpuemu' to use cpu emulation on i386 - -22/9/2003: v7.30 - - updated usb scanner & webcam data - - updated X11 data - - hwbootscan: split 'hwscan --pci --disk' call to avoid - wrong unique ids for some pci devices (#31545) - -21/9/2003: v7.29 - - updated X11 data - -18/9/2003: v7.28 - - set ATA RAID bus type to 'RAID' (#31235) - -17/9/2003: v7.27 - - don't make every parport into a printer (#31161) - - some driver data updated - -16/9/2003: v7.26 - - default to 'printer' if a class tag is missing in parport - autoprobe data (#30982) - - fixed serial console detection (#30936) - -15/9/2003: v7.25 - - pcmcia data update - -15/9/2003: v7.24 - - report pci modems (#30887) - - don't get fooled by removed pcmcia cards - - wlan data update (#30886, #30823, #30501) - - driver data update (#30384, #29468, #30745) - -15/9/2003: v7.23 - - ignore alternative usb interface settings - -11/9/2003: v7.22 - - updated X11 data - - don't read from cd drives that don't exist (#23248) - -10/9/2003: v7.21 - - fixed monitor data interpretation bug (#29718) - -9/9/2003: v7.20 - - more ltmodem ids - - uli: implementation of S/390 hardware detection - -8/9/2003: v7.19 - - updated driver info (#25457, #29481, #25531) - - updated X11 data - - added --combine option to check_hd to assist in creating - driver data - - fixed minor typos - -6/9/2003: v7.18 - - updated usb mouse data (#29719) - - better touch pad/track point reporting for notebooks - - fork() for serial mouse & modem detection (#25843, #26513) - - fixed hwbootscan (#29959) - - don't load imm.o module (#14175) - -2/9/2003: v7.17 - - catch more vm86() faults (#28381) - - added 'active' status flag (not modified by libhd) - -1/9/2003: v7.16 - - update ISDN CDB data - - catch faults inside vm86() code (#29571) - - give wlan cards their own subclass (#29506) - - updated X11 data - -28/8/2003: v7.15 - - iopl() may fail even if we're root (#29494) - -27/8/2003: v7.14 - - probe for multiple hardware classes at a time - -26/8/2003: v7.13 - - default ISDN data for all ARCH - - update ISDN CDB data - -26/8/2003: v7.12 - - updated X11 data (#29316) - - add ISDN database for ia64 - - fix minor warnings - -25/8/2003: v7.11 - - don't try BIOS things on SGI Altix (#28663) - -25/8/2003: v7.10 - - added lots of new camera ids. - - new isdn data taken from cdb - - updated X11 data - -18/8/2003: v7.09 - - add ChildIDs field (reverse of ParentID) - -12/8/2003: v7.08 - - better internal hwclass handling - -11/8/2003: v7.07 - - define HARDWARE_DIR in hd.h - -8/8/2003: v7.06 - - use modprobe instead of insmod for scsi modules - -5/8/2003: v7.05 - - ltmodem is back - - parent id, again - -5/8/2003: v7.04 - - hp officejet scanner gets package info & own subclass - -1/8/2003: v7.03 - - reworked usb things - -18/7/2003: v7.02 - - changed disk size reading for 2.6 - - more 2.6 header fixes - -17/7/2003: v7.01 - - store parent id (#27508) and hotplug field - - new attempt to work around broken cciss_ioctl.h inclue file - -16/7/2003: v7.00 - - detect pcmcia cards - - updated x11 data - -16/4/2003: v6.20 - - fixed megaraid info (#26325) - -27/3/2003: v6.19 - - scan for partitions - -13/3/2003: v6.18 - - ltmodem stuff makes trouble, removed (#25309) - -13/3/2003: v6.17 - - updated X11 data (#25217) - -12/3/2003: v6.16 - - be more careful when joining feature flags of - ide-scsi handled devices (#25169) - -12/3/2003: v6.15 - - limit the maximum amount of data we expect looking - for serial mice (#25153) - -11/3/2003: v6.14 - - updated ide raid info (#25010) - -10/3/2003: v6.13 - - added more notebook data - -8/3/2003: v6.12 - - fixed ide-scsi detection bug (device names mixed up if more than - one device is handled by ide-scsi) - -8/3/2003: v6.11 - - updated data from pci utils - -8/3/2003: v6.10 - - detect wlan cards (#23491) - -7/3/2003: v6.09 - - usb multiple interfaces again: only for HID devices (#24824) - - add monitor vendor & device name - - allow hwscan to be disabled at boot time via 'hwprobe=-scan' - -6/3/2003: v6.08 - - updated X11 data - - added '--dsl' option to hwscan - -6/3/2003: v6.07 - - write ff to /dev/lp0 if imm.o didn't load (#14175) - - probe for scsi cache even in fast mode, else we miss scsi cd writers - - better Epson scanner detection (#20837) - - fixed stupid '\0'-missing-at-end-of-buffer bug - - added '--slient' option to hwscan (don't show ids) - - cleaned up notebook lcd detection and added more data - -4/3/2003: v6.06 - - fixed floppy detection (#24283) - -4/3/2003: v6.05 - - fixed ataraid detection (format of /proc/ide/ide?/config - changed, #23057, #24528) - -3/3/2003: v6.04 - - bcm instead of tg3 (request by ak) - - reenable mouse probing, but without serial mice and no dialog (#20309) - - support some winmodems - - updated X11 data - -26/2/2003: v6.03 - - better ZIP drive handling - - handle usb devices with multiple interfaces (#21487, #22223, #22843) - - removed 'Looking for braille...' line - - fixed multi-CDROM bug (#24280) - - save/restore feature flags (#23364) - - keep feature flags for ide-scsi handled drives (#23550) - -25/2/2003: v6.02 - - fixed 64 bit int -> pointer gcc warnings - - fixed minor database lookup bug - - database parser logs to logfile, not stderr - - support serial mice with really strange vendor ids (#24137) - -24/2/2003: v6.01 - - add fibre channel adapters to storage controller list (#23686) - -24/2/2003: v6.00 - - fixed gcc warnings - - updated module info - - increased major version - -18/2/2003: v5.55 - - added pppoe detection - - updated X11 data - -18/2/2003: v5.54 - - removed experimental code causing segfault on compaq machines - -10/2/2003: v5.53 - - remove mouse probing from hwbootscan, it sometimes - hangs and takes too long. - - add --fast to --cdrom probe, so the cdrom is not opened. - - updated X11 data - -4/2/2003: v5.52 - - fixed pci base addresses on 64bit archs (#21075) - -20/1/2003: v5.51 - - detection of more Microcom modems - - updated the pcmcia controllers fallback list - - added a minimal man page - - add AVM Fritz!Card DSL USB - - updated X11 data - -13/1/2003: v5.50 - - added Myrinet support (#21130) - - make it compile on !(x86_64 & ia64) again - -9/1/2003: v5.49 - - fixed some network card names (#22795) - - added wheel mouse data (#22797) - - make it compile on x86_64 & ia64 again - -13/12/2002: v5.48 - - cdrom feature list (dvd, cdr, etc) - -27/11/2002: v5.47 - - changed tg3/bcm* on ia64 (#21984) - - one ncr53c8xx vs. sym53c8xx issue (#21984) - - cleanup ISDN ids, remove unsupported protocols (#22179) - -25/11/2002: v5.46 - - rewrote assignment of BIOS driver numbers - - slight cleanup of int10 code - -19/11/2002: v5.45 - - use eepro100 instead of e100 on ia64 (#21055) - -18/11/2002: v5.44 - - fixed qla* module info (#21567) - -6/11/2002: v5.43 - - joined with 8.1 branch - -4/11/2002: v5.42 - - check for REDIRECT in hwscan init script (in case it gets called - from the commandline). #17773 - -4/11/2002: v5.41 - - do some consistency checks on legacy data from BIOS area (#21462) - -17/10/2002: v5.40 - - updated megaraid info (#21043) - -10/10/2002: v5.39 - - updated tg3/bcm5700 driver info (#19913) - -7/10/2002: v5.38 - - added aacraid driver info (#20592) - - don't run yast if no keyboard is attached (#19768) - -30/9/2002: v5.37 - - add "Virtual" to veth description string (#20319) - -27/9/2002: v5.36 - - fixed floppy detection (#20269) - - x11 data update (#20182) - - added IBM ServeRAID ids (#20268) - -23/9/2002: v5.35 - - 'hwscan --pci' should add prom id (#19648) - -20/9/2002: v5.34 - - ia64: switch back to reading ACPI tables for SMP detection. - -18/9/2002: v5.33 - - fixed chksum call causing hwinfo to hang in some cases on ia64 - - don't overwrite vga modelist - -10/9/2002: v5.32 - - avoid alignment problems on ia64 - - fixed usb-cdrom probing (#19407, #19440) - - removed '--fast' for disk probing; instead, fixed i2o & cciss - -10/9/2002: v5.31 - - probe for cdrom & disk at boot (#19297) - - '--fast' option has effect on disk probing (no i2o & cciss) - - dmfe instead of tulip (#19271) - - convert_hd now understands XML properly - - removed outdated docs - -9/9/2002: v5.30 - - probe also USB isdn controllers (#18830) - - added '--help' option to check_hd & convert_hd - - converted pci info to utf8 - -7/9/2002: v5.29 - - make sure usb floppies are reported as such (#12262) - -6/9/2002: v5.28 - - new x11 data - - report s390x arch properly - -5/9/2002: v5.27 - - added amd-8111 info - - fixed dpt info (#18914) - - always smp on s390* (#18990) - - changed pcnet32 description (#18892) - -4/9/2002: v5.26 - - show boot catalog address in cd info - -4/9/2002: v5.25 - - switched escon adapter from 0x70 to 0x8 - - corrected number for CTC, IUCV, HSI and QETH - - fix usb isdn adapter detection (#18829) - - updated pci & usb data - -3/9/2002: v5.24 - - fixed ata raid code - - new usb mouse (#18296) - -3/9/2002: v5.23 - - updated x11 data - -02/9/2002: v5.22 - - code for detekting configured CTC, IUCV, HSI and QETH - adapters on s390/s390x - - fixed iSeries network id - -29/8/2002: v5.21 - - braille detection on sparc - - fixed script that reads CDB data - - log error messages from vm86 code - - better chipcard reader support - - use _exit instead of exit on some more places. - - prepared for uclibc - - save & restore resource data - -28/8/2002: v5.20 - - got rid of gcc warning - -28/8/2002: v5.19 - - added x86_64 x11 data - -27/8/2002: v5.18 - - changed dasd.c to accept old and new format of /proc/dasd/devices - - better serial mouse detection (#18384) - -27/8/2002: v5.17 - - msvec: detect some microcom modems (#15359) - -26/8/2002: v5.16 - - use "reprobe" as yast2 argument, not (.reprobe) - - added some new hardware types - - fixed usb & ieee1394 controller detection - -22/8/2002: v5.15 - - check cpuid for hyperthreading (#13532) - - add new bus id 'Virtual IO' for DASD (#18202) - - use grub on x86_64 - - fixed s390 cpu detection - -20/8/2002: v5.14 - - mls: x86 emu for BIOS calls on ia64 - -19/8/2002: v5.13 - - mls: x86 emu for BIOS calls on x86_64 - - updated x11 data - -16/8/2002: v5.12 - - changes in libhd interface - -15/8/2002: v5.11 - - segfault in hwinfo, part 2 - - fixed symbios module entry - -13/8/2002: v5.10 - - get isdn model name from isdn database - - updated megaraid info - - make install creates /etc/init.d - -13/8/2002: v5.09 - - added info for firewire module - - fixed convert_hd to work with perl 5.8 - -12/8/2002: v5.08 - - fixed evil segfault in hwinfo - - updated docs - -9/8/2002: v5.07 - - moved unique key file to var/lib/hardware/unique-keys - - moved things from var/lib/libhd to var/lib/hardware - - added HD_VERSION #define to hd.h - -8/8/2002: v5.06 - - extended isdn package info - - detect dvb cards - - fixed reading driver info - - updated driver info - - changed tv card detection code - -6/8/2002: v5.05 - - minor libhd interface changes - -5/8/2002: v5.04 - - gmac -> sungem - - don't source rc.config - - report cardbus cards - - _exit instead of exit to avoid calling QT destructors in Yast2 - - activated new database code - -22/7/2002: v5.03 - - updated x11 data - -22/7/2002: v5.02 - - run hwbootscan rc script after "kbd" script - - don't _change_ config status in hwbootscan - - save %gs register around vm86() syscall (%gs may be used in glibc) - - isdn changes - - better handling of dasd devs - - grub instead of lilo on ix86 - -13/6/2002: v5.01 - - made ia64 cpu model entry more useful - - get bios led status - -6/6/2002: v5.00 - - assign hardware added via 'hwprobe' a proper inital status - - added alsa driver info - - dropped old pnpdump() code - -24/4/2002: v4.26 - - add x86-64 support - -27/3/2002: v4.25 - - prevent doubled cdrom hardware items - -27/3/2002: v4.24 - - fixed cdrom device detection (#15553) - - don't assign lp8 to nonexistent usb printers - -25/3/2002: v4.23 - - updated help texts - -25/3/2002: v4.22 - - recognize fibre channel controllers as storage controllers - -24/3/2002: v4.21 - - read bios data in libhd_tiny (to allow vaio handling in linuxrc, #12075) - - read /etc/module.pcimap, too (it's there during installation) - - new x11 data - - de4x5.o vs. tulip.o issue (#15303) - - added Netgear WLAN-Card data (#14848) - -21/3/2002: v4.20 - - remove /var/lib/hardware/LOCK in hwbootscan (#15217) - - updated X11 data - - prefer tg3 over bcm5700 - - fixed broken framebuffer detection: reenabled & fixed pci setup code - -18/3/2002: v4.19 - - fixed segfault in ide code - -16/3/2002: v4.18 - - fixed bug that caused 'Processor' scsi devices to be treated - as disks (mentioned in #15007) - -14/3/2002: v4.17 - - udated mptbase driver info (#14732) - - better handling of usb-storage devices - - add mouse info we got from smbios - - use info from modules.pcimap - - detect memory size > 4GB (#14287) - -9/3/2002: v4.16 - - made hwbootscan an init script again, started after hotplug. - - do not delete the reconfig.needed files, but set configured=no - and needed=no to avoid problems with unsupported graphic cards. - - added usb ids from usbutils - - fixed network module info (#14529) - - improved smbios parser - - updated x11 driver info - - isdn: fix wrong names (AVM) and add more USB devices - - disabled pci setup code that caused infinite loops on - some systems with isa gfxcards - -4/3/2002: v4.15 - - new isdn data - - look at /proc/apm, too - - updated network driver info - - detect fujitsu siemens notebook lcd - - updated x11 driver info - - updated pci device list - - check for isapnp devs in boot.hwscan, too - -1/3/2002: v4.14 - - detect USB scanner by just looking if the module is usbscanner - - new scanner ids - - camera subclass ids were 1 off from enumeration - - added some new hardware classes: bios, bridge, hub, usb_ctrl - - added '--pci' and '--isapnp' options to hwscan - - fixed evil segfault caused by reading some hardware configs - - added '--fast' option to hwscan: don't check for tricky hardware - as serial mice or parport zips unless they had been found - previously - - boot.hwscan: probe for mice & pci hardware only (to be faster) - - don't try to access 'not available' devices - -25/2/2002: v4.13 - - meissner: boot.hwscan: - probe for storage, network, tv, sound handware - - updated x11 data - - handle usb ehci controller - - added basic smbios parser - -21/2/2002: v4.12 - - meissner: boot.hwscan: fixed confused curses output - - new isdn database - - update 'not available' state - - changed unique_id algorithm for usb devices - -18/2/2002: v4.11 - - added new scanner - - updated x11 data - - experimental support for hpt3* ideraid - -12/2/2002: v4.10 - - meissner: mouse probing is in choose_mouse - - meissner: added arguments for light probing '(.reprobe)' as suggested by tom - -11/2/2002: v4.09 - - isdn database now in libhd, support for multiple isdn driver - -7/2/2002: v4.08 - - renamed a function to avoid conflicts with linuxrc - -7/2/2002: v4.07 - - fixed dac960 detection: we used to return just the 1st disk - -7/2/2002: v4.06 - - first attempt to handle ide raid controller - - use /proc/partitions to find disks, too - -6/2/2002: v4.05 - - make hd_list() work properly if LIBHD_TINY is defined - - added new braille display - - hwinfo accepts '--netcard' as alias to '--network_ctrl' - -4/2/2002: v4.04 - - store a config string along with the config status - -4/2/2002: v4.03 - - changed hd_change_status() prototype - -20/1/2002: v4.02 - - fixed bug that prevented hwprobe env var to work in some cases - -28/1/2002: v4.01 - - hwscan: touch /var/lib/hardware/.update if things have changed - - meissner: added boot scripts - -21/1/2001: v4.00 - - increased major version number, as we're incompatible to v3 meanwhile - - added function to set hardware config status data directly - -20/1/2002: v3.40 - - updated hwscan so it does something useful - - updated x11 data - -14/1/2002: v3.39 - - next try with dietlibc on sparc - -14/1/2002: v3.38 - - olh: assume veth always present - - make it work with dietlibc on sparc - - new class: hw_usb_ctrl - -4/1/2002: v3.37 - - reimplemented iSeries veth device detection (#12680) - -14/12/2001: v3.36 - - create version for linking against dietlibc - - mls: continue even if some vbe calls fail - -26/11/2001: v3.35 - - prepare for arm - -22/11/2001: v3.34 - - call cpu probe for keyboard query - - reduced libhd_tiny size - -2/11/2001:. v3.33 - - read country code from usb devices - -30/10/2001: v3.32 - - handle iSeries network and storage devices - return ppc64 when uname -m returns it - -18/10/2001: v3.31 - - gmac controllers are powered off when unconfigured, so - we have to provide the class id ourself (#11733) - -15/10/2001: v3.30 - - don't load parport modules on pmac (#11743) - - provide monitor sync data if they are missing - -10/10/2001: v3.29 - - more apple monitor fixes - -9/10/2001: v3.28 - - work around incorrect iMac monitor data - -8/10/2001: v3.27 - - ppc: detect swim3 floppy (#11643) - - ppc: pr_prom needs pr_pci in some cases - - add monitor entry based on fbdev data, if we have - nothing better (#11344) - -5/10/2001: v3.26 - - fix the check for active framebuffer (ppc) - the current one is a hack and doesnt work in all cases - - use pc104 instead of powerpcps2 (ppc) - - longer timeouts in modem detection (#11432) - - don't merge pci and proc data on ppc (#10435) - - pci data are inconsistent on ppc, remove consistency check (#11551) - - new x11 data (ppc) - -24/9/2001: v3.25 - - updated X11 data - - no longer default to XF3 for installation on ppc (#11260) - -24/9/2001: v3.24 - - added LSIFC9xx/LSI409xx Fibre Channel (#11251) - -24/9/2001: v3.23 - - use aic7xxx_old one some controllers (#11202) - - use de4x5 instead of tulip for one card (#11093) - - updated X11 data - -20/9/2001: v3.22 - - make AIPTEK tablet a mouse again - - added old_unique_id field - - updated driver info - -19/9/2001: v3.21 - - new sound card - - new x11 data - -18/9/2001: v3.20 - - rewrote floppy detection to make it work on non-i386 archs - - new x11 data - -11/9/2001: v3.19 - - updated X11 data - - get current video mode - -10/9/2001: v3.18 - - updated X11 data - - make it work with diet-libc - - should correctly report vmware cards now - -4/9/2001: v3.17 - - changed unique_id calculation (#10139) - - introduced arch_ppc64, CHRP64 -> CHRP - - new X11 data - -3/9/2001: v3.16 - - usb printer device names have changed - - new x11 data - - fixed segfault bug in ide-scsi handling - -29/8/2001: v3.15 - - new x11 data - - ignore obviously broken ddc info - -27/8/2001: v3.14 - - new qlogic driver info (#9868) - - completely new x11 data - -23/8/2001: v3.13 - - fixed to work with the new cpqarray driver - - fixed evil database bug (#9798) - -20/8/2001: v3.12 - - removed usb network module info - - added iSeries disks - -17/8/2001: v3.11 - - added usb network data - -17/8/2001: v3.10 - - install in $DESTDIR - - handle ide-scsi drives - - fix segfault bug in apm detection - -9/8/2001: v3.09 - - fixed some drivers.audio entries - -6/8/2001: v3.08 - - added sungem - - fixed qlogicfc entry - - fixed tv card detection - -1/8/2001: v3.07 - - fixed typo in short model name calculation - -31/7/2001: v3.06 - - make now builds shared version per default - -30/7/2001: v3.05 - - integrated hwscan - -27/7/2001: v3.04 - - added chipcard reader support - - added camera (webcam) support - - added framebuffer support (currently: VESA) - -26/7/2001: v3.03 - - support (usb) joysticks - -25/7/2001: v3.02 - - added access functions for /var/lib/hardware/ to libhd - - hwinfo: no progress info if output is redirected - - hwinfo: multiple arguments allowed - - assign a hw_class - -24/7/2001: v3.01 - - report smp capability only if >1 processors are active - -23/7/2001: v3.00 - - SMP code can now handle empty MP tables - - support module lists in driver info - - new 'manual' flag indicating hardware that was not - detected but entered manually - - report usb capability only if the controller has an irq assigned - -27/6/2001: v2.22 - - added usb scanner detection - - set gpm protocol to imps2 for wheel mice - - bios based monitor detection enabled per default - - made usb module loading default - -25/6/2001: v2.21 - - sndirsch: corrected 3D info for geforce3 cards - -21/6/2001: v2.20 - - updated driver info for new gdth.o - -19/6/2001: v2.19 - - fixed for s390x - -13/6/2001: v2.18 - - schwab: don't dereference free'd pointer - - prefer e100.o over eepro100.o (#8797) - - fixed framebuffer mode detection bug (#8620) - -7/6/2001: v2.17 - - fixed keyboard detection on sparc - -22/5/2001: v2.16 - - dan: fix usb modem bug (#8490) - - remove 3d & xf_v3 driver info for ia64 - -14/5/2001: v2.15 - - use isapnp_reset=0 for loading isa-pnp.o - -11/5/2001: v2.14 - - new driver data for 3c509 - - X11 data updated - - have i2o cards listed as storage controllers (#6335) - -10/5/2001: v2.13 - - increase /dev/psaux timeout - - adapted missing keyboard detection for kernel 2.4 - -10/5/2001: v2.12 - - less things in libhd_tiny.a - - read block 0 from disks _before_ going to look for the boot device - - vmware detection clobbers %ebx; fixed - - completely new monitor data base (#7536) - -7/5/2001: v2.11 - - preserve %ebx in i10_v86.c::vm86_rep - -7/5/2001: v2.10 - - rewrote isapnp detection for 2.4 kernel - - updated driver info data - - added "Baum" braille display detection - -3/5/2001: v2.09 - - support vbe bios calls to get monitor data (default: disabled) - - added more usb wheel mice - -3/5/2001: v2.08 - - added vmware check - - don't do scsi write cache detection in vmware - - added ia64 smp detection - - ia64 x11 data added - - use tulip instead of de4x5 (#7317) - -30/4/2001: v2.07 - - updated x11 data - - fixed multi-head display handling - - adapted compaq smart array detection for kernel 2.4 - -25/4/2001: v2.06 - - parport detection updated for kernel 2.4 - - add scsi hostadapter info to debug output - - usb-storage again - - boot_ia64 -> boot_elilo - -24/4/2001: v2.05 - - worked on usb-storage support - - no isa-pnp probing in linuxrc - -20/4/2001: v2.04 - - better usb-storage support - -19/4/2001: v2.03 - - reworked floppy detection - - identify devices with removable media - - zip drives are always reported as floppies - -18/4/2001: v2.02 - - reworked ps/2 mouse code - - provide number of buttons/wheels for mice - - X11 data updated (ia32) - -7/4/2001: v2.01 - - new output format for support tool - - more options for hwinfo - - include pcmcia/cardbus cards in device lists - -5/4/2001: v2.00 - - new major version due to incompatible interface changes - - integrated experimental changes (split was after v1.90) - -3/4/2001: v1.99 - - fixed segfault bug in alpha smp code - -26/3/2001: v1.98 - - unique id format changed - -21/3/2001: v1.97 - - fixed src/ids/Makefile for axp - - slightly changed display detection code on axp - -20/3/2001: v1.96 - - new axp x11 data - -28/2/2001: v1.95 - - stepan: removed ISDN on alpha - - avoid trigraphs while generating the data base - -22/2/2001: v1.94 - - fixed hd_copy() segfault bug (ppc) - -21/2/2001: v1.93 - - implemented SMP detection on ppc - -20/2/2001: v1.92 - - backport of new SMP detection code (ia32) - - get console speed from kernel command line (ppc) - -15/2/2001: v1.91 - - fixed evil scsi device detection bug - (missing scsi devices under some strange circumstances) - - don't probe physical scsi geometry - -12/2/2001: v1.90 - - changed display adapter detection code to prefer sbus cards - -9/2/2001: v1.89 - - kkaempf: "ld -shared" is forbidden, changed to "gcc" - -7/2/2001: v1.88 - - new x11 data (sparc) - -31/1/2001: v1.87 - - mls: new oem stuff - -30/1/2001: v1.86 - - new x11 data (sparc) - -29/1/2001: v1.85 - - kukuk: sparc keyboard patches - -23/1/2001: v1.84 - - mls: added '--packages' option to hwinfo - -21/1/2001: v1.83 - - new x11 data (sparc) - -19/1/2001: v1.82 - - ncr*.o instead of sym*.o for 53c895a - - new x11 data (ia32) - -18/1/2001: v1.81 - - fixed ISAPnP device name handling - - back to ncr*.o for 53c875 [devid 0xf] (#5816) - - added new tulip card - -17/1/2001: v1.80 - - updated dac960 driver info - -17/1/2001: v1.79 - - new x11 data - - added '--help' option to hwinfo - - implemented a basic getopt-style hwinfo interface - - activate pr_bios if pr_misc is set - -16/1/2001: v1.78 - - updated driver info (starfire/qla2x00) - -16/1/2001: v1.77 - - back to old version scheme to avoid update problems - -15/1/2001: v1.0.76 - - updated scsi driver info - -15/1/2001: v1.0.75 - - new x11 data - - make XF 4 default if no X11 info is found (ia32 only) - - fixed serial line detection bug - -14/1/2001: v1.0.74 - - updated pci name list - - updated scsi/network driver info - -12/1/2001: v1.0.73 - - new x11 data - - sym*.o instead of ncr*.o for 53C875 - - quick fix for Wacom tablets - -12/1/2001: v1.0.72 - - fix minor bug in printer detection - - fix bios disk number detection - -11/1/2001: v1.0.71 - - arvin: made res_pppd_option work - - arvin: fixed detection of terminal adapters - - sped up new modem stuff if no modem is connected - -11/1/2001: v1.0.70: - - new x11 data (sparc) - -10/1/2001: v1.0.69 - - introduced res_pppd_option - - new x11 data (ia32) - -9/1/2001: v1.0.68 - - smid@suse.cz: improved modem init string code - -8/1/2001: v1.0.67 - - fixed color depth handling - - fixed multi-soundcard bug - - new x11 data - -7/1/2001: v1.0.66 - - kendy@suse.cz: use BIOS port info for parport - - new x11 data for all archs - - 8139too instead of rtl8139 whenever possible - -20/12/2000: v1.0.65 - - added modem init string patch from smid@suse.cz - -19/12/2000: v1.0.64 - - added cciss stuff - - updated x11 data - -18/12/2000: v1.0.63 - - BIOS lba stuff now works - -18/12/2000: v1.0.62 - - updated x11 data - -14/12/2000: v1.0.61 - - updated x11 data - - build pnpdump only on i386 and alpha - - hwinfo can now update x11 info in install.inf - -13/12/2000: v1.0.60 - - hwinfo can now update braille info in install.inf - - activate alva braille detection - -13/12/2000: v1.0.59 - - updated x11 data - -12/12/2000: v1.0.58 - - new version number scheme (due to shared lib) - - create shared libhd - - report BIOS lba extension support - - rearranged building libhd_tiny a bit - -12/12/2000: v1.57 - - fixed isapnp segfault bug - - updated x11 data - -8/12/200: v1.56 - - new alva detection code - - added cd-r/dvd detection - - read "el torito" boot info - - updated x11 info - -7/12/2000: v1.55 - - fixed evil hddb bug - - added 3d script field - -9/11/2000: v1.54 - - started work on hddb fix - - renamed timeout -> hd_timeout - -27/10/2000: v1.53 - - remove memory leaks, part 2 (ppc) - -26/10/2000: v1.52 - - add CD-RW detection (and DVD) - -25/10/2000: v1.51 - - remove memory leaks, part 1 - -10/10/2000: v1.50 - - distinguish between chrp & chrp64 - -10/10/2000: v1.49 - - provide a unique key for every hardware item - -10/10/2000: v1.48 - - cpu/smp detection code improved - -28/9/2000: v1.47 - - sparc: new x11 info - -22/9/2000: v1.46 - - ppc: fixed serial line & modem detection - -21/9/2000: v1.45 - - provide CHPID on s390 - -20/9/2000: v1.44 - - added missing closedir() - -18/9/2000: v1.43 - - improved /proc/interrupt parsing - - ppc: always return a ps/2 mouse for PreP & CHRP - - skip serial device detection for console & yast2ser /proc/cmdline - entries - - ids updated - -18/9/2000: v1.42 - - now *really* disabled braille except on ia32 - -15/9/2000: v1.41 - - ppc: changed some ids - -13/9/2000: v1.40 - - serial console detection for ppc - -13/9/2000: v1.39 - - ppc x11 driver info - - ppc serial console - - braille only on ia32 - - fixed scsi segfault bug - -8/9/2000: v1.38 - - updated device ids - - added basic i2o support - - disabled isapnp on ppc - -7/9/2000: v1.37 - - fixed modem segfault bug - - fixed Zip device detection - -6/9/2000: v1.36 - - s390 network devices - -5/9/2000: v1.35 - - s390: finds disks - - ppc: better sound detection - -25/8/2000: v1.34 - - new platform cpu entry on alpha - -24/8/2000: v1.33 - - better monitor & display detection on ppc - -23/8/2000: v1.32 - - made libhd at least to compile on s390 - -23/8/2000: v1.31 - - slightly changed memory detection - - ADB mice: /dev/input/mice - -15/8/2000: v1.30 - - added monitor detection on ppc - - fixed iso9660 info reading - -14/8/2000: v1.29 - - added PROM parser for ppc; currently handles - SCSI, network, sound & floppy devices - -9/8/2000: v1.28 - - added pr_misc to hw_isdn - - fixed memory size detection - - added 'generation' to system entry (for ppc) - - new scsi detection code - - kukuk: PS/2 keyboard detection on UltraSPARC - -28/7/2000: v1.27 - - fixed 'x11' parameter parsing - -27/7/2000: v1.26 - - added '--special' option to hwinfo (needed for live CD) - - updated x11 data - -24/7/2000: v1.25 - - SMP detection: look for 'apic' flag - - updated x11 data - -20/7/2000: v1.24 - - fixed Vaio detection - - updated special ide chipset list - - included more functions in LIBHD_TINY - - updated x11 data - -19/7/2000: v1.23 - - updated x11 data - -18/7/2000: v1.22 - - dropped alva probing - - updated x11 data - -15/7/2000: v1.21 - - fixed isapnp isdn probing bug - - updated x11 data - -14/7/2000: v1.20 - - fixed stupid printer probing bug - - updated x11 data - -13/7/2000: v1.19 - - fixed bootdevice detection bug - - detect PowerBooks - -12/7/2000: v1.18 - - updated alsa driver info - - updated minicdb id data - - fixed missing isapnp sound cards bug - -11/7/2000: v1.17 - - added Sony Vaio detection - - changed lance driver entry - - fixed isdn/network card bug - - updated id data - -10/7/2000: v1.16 - - pnpdump: start port scanning at port 0x20b, not 0x203 - (skips potential game port) - - get ids directly from minicdb - -7/7/2000: v1.15 - - fixed hw_sys/hw_tv probing bug - -6/7/2000: v1.14 - - new 'system' hw entry - - sparc smp detection: active -> probed - -5/7/2000: v1.13 - - added parallel Zip drive detection - -3/7/2000: v1.12 - - don't list cardbus/pcmcia devs in hd_list() - - add multimedia/video boards to display adapters - -27/6/2000: v1.11 - - increased timeout in fhp detection - -27/6/2000: v1.10 - - fixed bug in braille detection - -26/6/2000: v1.09 - - updated README - - fixed bug in 'hwprobe' handling - -26/6/2000: v1.08 - - new usb mouse devices - -22/6/2000: v1.07 - - activated serial line scanning in linuxrc - - extendend 'hwprobe=' features - -21/6/2000: v1.06 - - fhp_old braille detection implemented - - alva & ht braille stuff added - -21/6/2000: v1.05 - - changed (driver_info_x11_t).x11.raw to str_list_t - -21/6/2000: v1.04 - - added 'x11' kernel cmdline param - -20/6/2000: v1.03 - - fixed mk_ids (used to drop all non-x11 ids) - - improved 'hwprobe=' functionality - - fhp braille detection implemented - -20/6/2000: v1.02 - - updated pciutils & sax/sax2 data - - added fire gl1 - - added 'hwprobe' env resp. kernel cmdline param - -13/6/2000: v1.01 - - new module info - - fix old VGA entries - - hw_tv now functional - -9/6/2000: v1.00 - - added hw_monitor, hw_printer, hw_tv, hw_scanner - [hw_tv, hw_scanner still non-funcional] - - improved ddc parsing (new syslinux!) - -7/6/2000: v0.99 - - added hd_list() function - -6//6/2000: v0.98 - - hd_display_list() function - - new SaX[2] data - - changed mk_ids to provide 3d *and* non-3d x11 entries - -31/5/2000: v0.97 - - provides info about bios disk ids - -30/5/2000: v0.96 - - extended X11 driver info (for XF86 4.0) - - added Thorsten's small SPARC patch - - extended serial line info - - note: v0.95 was a ppc quick-hack only version needed for 6.4; - it will not be integrated into the main tree - -24/5/2000: v0.94 - - fixed tmp file security hole - - added hd_{mouse/keyboard/floppy}_list() functions - -15/5/2000: v0.93 - - integrated Thorsten Kukuk's patches (mostly SPARC stuff) - - some minor other fixes - -17/4/2000: v0.92 - - ADB mouse driver info extended - - color code stuff updated - -11/4/2000: v0.91 - - fixed XkbModel typo on intel/axp - - ia64 patches from Andreas - - new Mac color code - -31/3/2000: v0.89 - - changed XkbModel to "powerpcps2" on chrp machines - - more iMac colors - -24/3/2000: v0.88 - - read color code on macs - -21/3/2000: v0.87 - - added Netfinity graphics card fix - - 3com net card driver adjustments - - ISDN info fix - - SPARC keyboard code - - added keyboard driver info - -14/3/2000: v0.86 - - flush serial buffer before close() - -8/3/2000: v0.85 - - some minor bug fixes - -8/3/2000: v0.84 - - changed display adapter probing to include bc_multimedia - -8/3/2000: v0.83 - - pci cards are attached to their resp. bridges - - card bus cards not listed by probe_by_class - -6/3/2000: v0.82 - - X server list fixes - -5/3/2000: v0.81 - - some monitor data - -4/3/2000: v0.80 - - new probing flag pr_scsi_geo: defaults to off due to - problems on scsi-Zip's - -3/3/2000: v0.79 - - tuned probing flags - - renamed drivers file - - added "Belinea 10 20 20" data (ddc info lies about supported modes!) - -29/2/2000: v0.78 - - new graphics cards - -28/2/2000: v0.77 - - modem fix: give default name if none could be determined - - added 3Com Robotics recognition - - added physical SCSI geometry - -28/2/2000: v0.76 - - automatic usb module loading - - rewrite of the probing flags stuff; new probing flags - - new hd_display() function - -26/2/2000: v0.75 - - pcmcia detection now looks at class ids - - fixed pcmcia detection bug - - added usb detection function - -26/2/2000: v0.74 - - added alsa isapnp sound cards - -25/2/2000: v0.73 - - sparc & baud rate fix - - new libihw - - minor usb improvements - - better keyboard detection - - ressource management for irqs - - isdn fixes/improvements - - added some sound cards - -24/2/2000: v0.72 - - libihw used only on ix86 & axp - - pc keyboard detection - -23/2/2000: v0.71 - - isdn stuff - -22/2/2000: v0.70 - - changed x11/3d driver info - -18/2/2000: v0.69 - - mouse code now resets serial lines - -18/2/2000: v0.68 - - new try at AGP detection - - improved mylex code - - added compaq smart raid detection - - improved scsi code - -17/2/2000: v0.67 - - improved CPU code on axp & ppc - - changed serial line code: use non-blocking open - -16/2/2000: v0.66 - - new ids - - added Mylex detection (dac960) - -15/2/2000: v0.65 - - a lot of driver info - - timeout problem opening serial devs? - -12/2/2000: v0.64 - - added some ids - - added Zoom modem detection - -11/2/2000: v0.63 - - fixed isapnp for ppc - -11/2/2000: v0.62 - - Makefile now knows about sparc64 - - driver info: 3c90x vs. 3c59x; see comment in drivers.SuSE - - worked on ISDN stuff - -10/2/2000: v0.61 - - added peliminary usb storage device handling - - added ISA-PnP memory range decoding - - added ISDN probing for ISA cards (*very* preliminary) - -8/2/2000: v0.60 - - added UMAX USB scanner ids - - small modem fix (open fds) - - determines boot device - -5/2/2000: v0.59 - - improved boot floppy: now with usb support - - changed hw behavior: no listing on console if a logfile is used - - fixed missing baud defines on SPARC - - added 3d graphics card info - - changed internal mouse ids from PnP ids --> special ids - - some 64 bit pci fixes - - pci devices with missing class info: get class info from data base - - added more usb ids - -4/2/2000: v0.58 - - added generic ne2000 info - - improved printing of modules.conf entries - - moved ID handling macros (MAKE_ID, etc) to hd.h - -3/2/2000: v0.57 - - added lp-devices to mk_floppy - - added usb vendor list - - NOTE: hd_class_list() interface slightly changed!!! - - USB support complete rewritten - - modem fix: avoid selecting a device twice! - - driver info: take compatible devices into account - -2/2/2000: v0.56 - - more driver info - - added hd_smp_support() - -1/2/2000: v0.55 - - made hd_module_is_active() global - - added pcnet32 info - - added 'static' target - - fixed ddc string parser - - fixed monitor driver info parser - - added tiny target: -> libhd_tiny.a is minimum version for linuxrc - -27/10/2000: v0.54 - - rescan == 3 --> return new entries since last call with rescan == 2 - -27/10/2000: v0.53 - - fixed driver entries with modules.conf lines - - fixed internal handling of modules.conf entries - - added new feature to hd_*_list() functions: - rescan == 2 --> return only new entries - -25/10/2000: v0.52 - - started this log :-) - - modem code now handles non-pnp modems - - added a baud resource to modem entries: holds the modem's max. - port speed - - added some modem ids - - updated docu (interface.html) diff --git a/src/hwinfo/Makefile b/src/hwinfo/Makefile deleted file mode 100644 index 72c7ffb3dd..0000000000 --- a/src/hwinfo/Makefile +++ /dev/null @@ -1,95 +0,0 @@ -TOPDIR = $(CURDIR) -SUBDIRS = src -TARGETS = hwinfo hwscan hwscand hwscanqueue -CLEANFILES = hwinfo hwinfo.static hwscan hwscan.static hwscand hwscanqueue doc/libhd doc/*~ -LIBDIR = /lib -ULIBDIR = /usr$(LIBDIR) -LIBS = -lhd -SLIBS = -lhd -lsysfs -TLIBS = -lhd_tiny -lsysfs -SO_LIBS = -lsysfs -TSO_LIBS = -lsysfs - -export SO_LIBS - -include Makefile.common - -SHARED_FLAGS = -OBJS_NO_TINY = names.o parallel.o modem.o - -.PHONY: fullstatic static shared tiny doc diet tinydiet uc tinyuc - -hwscan: hwscan.o $(LIBHD) - $(CC) hwscan.o $(LDFLAGS) $(LIBS) -o $@ - -hwinfo: hwinfo.o $(LIBHD) - $(CC) hwinfo.o $(LDFLAGS) $(LIBS) -o $@ - -hwscand: hwscand.o - $(CC) $< $(LDFLAGS) -o $@ - -hwscanqueue: hwscanqueue.o - $(CC) $< $(LDFLAGS) -o $@ - -# kept for compatibility -shared: - @make - -tiny: - @make EXTRA_FLAGS=-DLIBHD_TINY LIBHD_BASE=libhd_tiny LIBS="$(TLIBS)" SO_LIBS="$(TSO_LIBS)" - -tinyinstall: - @make EXTRA_FLAGS=-DLIBHD_TINY LIBHD_BASE=libhd_tiny LIBS="$(TLIBS)" SO_LIBS="$(TSO_LIBS)" install - -tinystatic: - @make EXTRA_FLAGS=-DLIBHD_TINY LIBHD_BASE=libhd_tiny SHARED_FLAGS= LIBS="$(TLIBS)" SO_LIBS="$(TSO_LIBS)" - -tinystaticinstall: - @make EXTRA_FLAGS=-DLIBHD_TINY LIBHD_BASE=libhd_tiny SHARED_FLAGS= LIBS="$(TLIBS)" SO_LIBS="$(TSO_LIBS)" install - -diet: - @make CC="diet gcc" EXTRA_FLAGS="-fno-pic -DDIET" SHARED_FLAGS= LIBS="$(SLIBS)" - -tinydiet: - @make CC="diet gcc" EXTRA_FLAGS="-fno-pic -DLIBHD_TINY -DDIET" SHARED_FLAGS= LIBS="$(SLIBS)" - -uc: - @make CC="/opt/i386-linux-uclibc/bin/i386-uclibc-gcc" EXTRA_FLAGS="-fno-pic -DUCLIBC" SHARED_FLAGS= LIBS="$(SLIBS)" - -tinyuc: - @make CC="/opt/i386-linux-uclibc/usr/bin/gcc" EXTRA_FLAGS="-fno-pic -DLIBHD_TINY -DUCLIBC" SHARED_FLAGS= LIBS="$(SLIBS)" - -static: - make SHARED_FLAGS= LIBS="$(SLIBS)" - -fullstatic: static - $(CC) -static hwinfo.o $(LDFLAGS) $(SLIBS) -o hwinfo.static - $(CC) -static hwscan.o $(LDFLAGS) $(SLIBS) -o hwscan.static - strip -R .note -R .comment hwinfo.static - strip -R .note -R .comment hwscan.static - -doc: - @cd doc ; doxygen libhd.doxy - -install: - install -d -m 755 $(DESTDIR)/sbin $(DESTDIR)/usr/sbin $(DESTDIR)$(LIBDIR) $(DESTDIR)$(ULIBDIR)\ - $(DESTDIR)/usr/include $(DESTDIR)/etc/init.d - install -m 755 hwinfo $(DESTDIR)/usr/sbin - install -m 755 hwscan hwscand hwscanqueue $(DESTDIR)/sbin - install -m 755 -s src/ids/check_hd $(DESTDIR)/usr/sbin - install -m 755 src/ids/convert_hd $(DESTDIR)/usr/sbin - if [ -f $(LIBHD_SO) ] ; then \ - install $(LIBHD_SO) $(DESTDIR)$(LIBDIR) ; \ - ln -snf $(LIBHD_NAME) $(DESTDIR)$(LIBDIR)/$(LIBHD_SONAME) ; \ - ln -snf $(LIBDIR)/$(LIBHD_SONAME) $(DESTDIR)$(ULIBDIR)/$(LIBHD_BASE).so ; \ - else \ - install -m 644 $(LIBHD) $(DESTDIR)$(ULIBDIR) ; \ - fi - install -m 644 src/hd/hd.h $(DESTDIR)/usr/include - install -m 755 hwbootscan getsysinfo gen-hwcfg-disk.sh $(DESTDIR)/usr/sbin - install -m 755 hwbootscan.rc $(DESTDIR)/etc/init.d/hwscan - install -m 755 src/isdn/cdb/mk_isdnhwdb $(DESTDIR)/usr/sbin - install -d -m 755 $(DESTDIR)/usr/share/hwinfo - install -m 644 src/isdn/cdb/ISDN.CDB.txt $(DESTDIR)/usr/share/hwinfo - install -m 644 src/isdn/cdb/ISDN.CDB.hwdb $(DESTDIR)/usr/share/hwinfo - diff --git a/src/hwinfo/Makefile.common b/src/hwinfo/Makefile.common deleted file mode 100644 index a4706e561d..0000000000 --- a/src/hwinfo/Makefile.common +++ /dev/null @@ -1,66 +0,0 @@ -# libhd/Makefile.common - -ARCH := $(shell uname -m) -ifeq "$(ARCH)" "i486" -ARCH := i386 -endif -ifeq "$(ARCH)" "i586" -ARCH := i386 -endif -ifeq "$(ARCH)" "i686" -ARCH := i386 -endif -ifeq "$(ARCH)" "parisc" -EXTRA_FLAGS := -fPIC $(EXTRA_FLAGS) -endif - -LIBHD_VERSION := $(shell cat $(TOPDIR)/VERSION) -LIBHD_MINOR_VERSION := $(shell cut -d . -f 2 $(TOPDIR)/VERSION) -LIBHD_MAJOR_VERSION := $(shell cut -d . -f 1 $(TOPDIR)/VERSION) - -CC = gcc -LD = ld -CFLAGS = -Wall -O2 -pipe -g $(SHARED_FLAGS) $(EXTRA_FLAGS) -I$(TOPDIR)/src/hd -SHARED_FLAGS = -fPIC - -LDFLAGS = -Lsrc - -CFILES = $(wildcard *.c) -OBJS = $(CFILES:.c=.o) -LIBHD_BASE = libhd -LIBHD = $(TOPDIR)/src/$(LIBHD_BASE).a -LIBHD_SONAME = $(LIBHD_BASE).so.$(LIBHD_MAJOR_VERSION) -LIBHD_NAME = $(LIBHD_BASE).so.$(LIBHD_VERSION) -LIBHD_SO = $(TOPDIR)/src/$(LIBHD_NAME) -LIBHD_D = $(TOPDIR)/src/.lib - -export CC TOPDIR CFLAGS LIBHD ARCH - -.PHONY: all distclean clean install subdirs - -%.o: %.c - $(CC) -c $(CFLAGS) $< - -all: subdirs $(TARGETS) - -install: all - -ifneq "$(SUBDIRS)" "" -subdirs: - @for i in $(SUBDIRS) ; do make -C $$i $(MAKECMDGOALS) || exit ; done -endif - -clean: subdirs - @rm -rf $(OBJS) .depend $(CLEANFILES) *~ - -distclean: subdirs - @rm -rf $(OBJS) .depend $(CLEANFILES) $(DISTCLEANFILES) *~ - -ifneq "$(CFILES)" "" -ifeq ($(findstring $(MAKECMDGOALS), clean distclean),) -.depend: $(CFILES) - @$(CC) -MG -MM $(CFLAGS) $(CFILES) >$@ - --include .depend -endif -endif diff --git a/src/hwinfo/README b/src/hwinfo/README deleted file mode 100644 index 2740fb5c8c..0000000000 --- a/src/hwinfo/README +++ /dev/null @@ -1,149 +0,0 @@ -1. Usage -======== - - hwinfo [debug=deb_flag] [log=log_file] [list[+]=hw_item] [[+|-]probe_option1] [[+|-]probe_option2] ... - -Examples: - - hwinfo - - probes for nearly everything - - hwinfo +all - - probes for everything - - hwinfo log=hw_log - - default probing, output is written to hw_log - *** Please don't use "hwinfo >some_log 2>&1" to store the output into a - log file! *** - - hwinfo -all +ide - - probe for ide drives only - - hwinfo +all -isapnp -floppy - - probe for everything *except* isapnp and floppies - -Some probing flags do not stand for complete modules but enable additional -features; e.g. "pci.range" or "cdrom.info". - -Example: - hwinfo -all +cdrom - gives a list of all cdrom's - - hwinfo -all +cdrom.info - additionally reads the iso9660 info - -To get a list of all supported probing flags, call 'hwinfo -all'. - - -2. Environment variables/kernel cmdline parameters -================================================== - -You can control the hardware probing using the environment variable -"hwprobe" and the kernel cmdline parameters "hwprobe" & "x11". - -If "hwprobe" is set on the kernel cmdline, the environment variable -"hwprobe" is ignored. Otherwise, the meaning of both is exactly the same. - - x11 - - Controls the X server/X version to prefer. It is either "3" or "4" or the - name of the X server/X server module to use (XF3: server name without - the leading "XF86_", XF4: the server module name). - - Examples: - x11=3 - o prefer XFree86 3.x over 4.x (if possible) - - x11=SVGA - o use the XF86_SVGA server (*** Even if the server does not - support the card! ***) - - x11=nv - o use the XF4 nv_drv.o driver (*** Even if the module does not - support the card! ***) - - hwprobe - - Controls which probing flags should *always* be set/cleared. (These - settings *cannot* be overridden by command line switches.) - - Examples: - hwprobe=-isapnp - o *never* do any isapnp probing - - hwprobe=-braille,-modem - o don't look for braille displays & modems - - - Allows you to add and remove hardware from the probing results. In this case - the syntax is (-: remove, +: add at end of list, : add at begin of - list): - hwprobe=[+-]::[:] - - , and are device ids as used by libhd. - See the output of hwinfo for examples. In connection with "-", you can use - "*" as a placeholder that matches every id. - - Note: is optional. - - Note2: you cannot usefully *add* hardware that needs more info than that - given by the hwprobe entry. Disks & floppies are notable examples. - (But you can *remove* them.) - - Here is a typical hwinfo output for a mouse, with the relevant ids - underlined ( is the combined base_class & sub_class), - [see 1st example below]: - - 14: PS/2 00.0: 10500 PS/2 Mouse - ^^^^^ --> - [Created at mouse.110] - Vendor: s0200 "Unknown" - ^^^^^ --> - Model: 0002 "Generic PS/2 Mouse" - ^^^^ --> - Device File: /dev/psaux - ^^^^^^^^^^ --> - Driver Info #0: - XFree86 Protocol: ps/2 - GPM Protocol: ps2 - Attached to: #8 (PS/2 Controller) - - - Examples: - hwprobe=+10500:s200:2:/dev/psaux - o add a ps/2 mouse [at the end of the hardware list] - - hwprobe=10500:s200:2:/dev/psaux - o add a ps/2 mouse [at the start of the hardware list, so it - is our default mouse] - - hwprobe=+10b00:s5001:0:/dev/ttyS0 - o add a braille display connected to /dev/ttyS0 - - hwprobe=-10500:s200:2:/dev/psaux - o remove ps/2 mice attached to /dev/psaux - - hwprobe=-10500:s200:2 - o remove all ps/2 mice - - hwprobe=-10500:*:* - o remove all ps/2 mice - - hwprobe=-*:*:*:/dev/hdc - o remove /dev/hdc - - hwprobe=+401:1274:5000 - o add an ensoniq sound card - - Grafics cards are are slightly trickier: - - hwprobe=+300:1014:b7 - o add a Fire GL1 card - Note: this way you'll get a multihead config. You'll probably - rather want the following example. - - hwprobe=-300:*:*,+300:1014:b7 - o remove all graphics cards; then add a Fire GL1 card - - hwprobe=+400:121a:1 - o add a 3fx voodoo card (Note the class "400", not "300"!) - - - for more ids, see "src/ids/names.*" and "src/ids/drivers.*" - diff --git a/src/hwinfo/VERSION b/src/hwinfo/VERSION deleted file mode 100644 index ea158a22a3..0000000000 --- a/src/hwinfo/VERSION +++ /dev/null @@ -1 +0,0 @@ -10.16 diff --git a/src/hwinfo/doc/example1.c b/src/hwinfo/doc/example1.c deleted file mode 100644 index 7de3e477df..0000000000 --- a/src/hwinfo/doc/example1.c +++ /dev/null @@ -1,26 +0,0 @@ -#include -#include - -#include - -int main(int argc, char **argv) -{ - hd_data_t *hd_data; - hd_t *hd; - - hd_data = calloc(1, sizeof *hd_data); - - hd = hd_list(hd_data, hw_scsi, 1, NULL); - - for(; hd; hd = hd->next) { - hd_dump_entry(hd_data, hd, stdout) - } - - hd_free_hd_list(hd); /* free it */ - hd_free_hd_data(hd_data); - - free(hd_data); - - return 0; -} - diff --git a/src/hwinfo/doc/example2.c b/src/hwinfo/doc/example2.c deleted file mode 100644 index cc2a9db823..0000000000 --- a/src/hwinfo/doc/example2.c +++ /dev/null @@ -1,26 +0,0 @@ -#include -#include - -#include - -int main(int argc, char **argv) -{ - hd_data_t *hd_data; - hd_t *hd; - unsigned display_idx; - - hd_data = calloc(1, sizeof *hd_data); - - hd = hd_list(hd_data, hw_display, 1, NULL); - display_idx = hd_display_adapter(hd_data); - - hd_dump_entry(hd_data, hd_get_device_by_idx(hd_data, display_idx), stdout) - - hd_free_hd_list(hd); - hd_free_hd_data(hd_data); - - free(hd_data); - - return 0; -} - diff --git a/src/hwinfo/doc/footer.html b/src/hwinfo/doc/footer.html deleted file mode 100644 index 62b274f1c0..0000000000 --- a/src/hwinfo/doc/footer.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/hwinfo/doc/hwinfo.8 b/src/hwinfo/doc/hwinfo.8 deleted file mode 100644 index 03bca33152..0000000000 --- a/src/hwinfo/doc/hwinfo.8 +++ /dev/null @@ -1,92 +0,0 @@ -.\" Michal Svec -.\" -.\" Process this file with -.\" groff -man -Tascii foo.1 -.\" -.\" -.TH HWINFO 8 "January 2003" "hwinfo" "System configuration" -.\" -.\" -.SH NAME -hwinfo \- probe for hardware -.\" -.\" -.SH SYNOPSIS -.B hwinfo [ -.I options -.B ] -.\" -.\" -.SH DESCRIPTION -.B hwinfo -is used to probe for the hardware present in the system. It can be used -to generate a system overview log which can be later used for support. -.\" -.\" -.SH OPTIONS -.\" -.TP -.BI --debug " " level -Set debug -.B level. -The debug info is shown only in the log file. If you specify a log file, -the debug level is implicitly set to a reasonable value. -.\" -.TP -.BI --dump-db " " n -Dump hardware data base, -.B n -is either -.B 0 -for the external data base, or -.B 1 -for the internal data base. -.\" -.TP -.BI --help -Print a usage and exit. -.\" -.TP -.BI --log " " logfile -Write info to -.B logfile. -.\" -.TP -.BI --short -Just a short listing. -.\" -.TP -.BI --version -Show libhd version. -.\" -.TP -.BI -- -Probe for the particular hardware item. Available hardware items are: -.B all, bios, block, bluetooth, braille, bridge, camera, cdrom, chipcard, cpu, -.B disk, dsl, dvb, floppy, framebuffer, gfxcard, hub, ide, isapnp, isdn, -.B joystick, keyboard, memory, modem, monitor, mouse, netcard, network, -.B partition, pci, pcmcia, pcmcia-ctrl, pppoe, printer, scanner, scsi, smp, -.B sound, storage-ctrl, sys, tape, tv, usb, usb-ctrl, vbe, wlan, -and -.B zip. -.\" -.\" -.SH FILES -.B /var/lib/hardware/* -.\" -.\" -.SH BUGS -Not all hardware can be detected. -.\" -.\" -.SH AUTHOR -.nf -Steffen Winterfeldt - hwinfo -Michal Svec - manual page -.fi -.\" -.\" -.SH "SEE ALSO" -Documentation in /usr/share/doc/packages/hwinfo. -.\" -.\" EOF diff --git a/src/hwinfo/doc/libhd.doc b/src/hwinfo/doc/libhd.doc deleted file mode 100644 index 419a3289ab..0000000000 --- a/src/hwinfo/doc/libhd.doc +++ /dev/null @@ -1,109 +0,0 @@ -/*! \mainpage libhd documentation - -

Introduction

- -libhd is a hardware detection lib. - -

Changes

- -\ref libhd_5_12 - -

Examples

- -\ref example1 - -\ref example2 - -*/ - - -/*! \page examples Examples - -\ref example1 - -\ref example2 - -
- -\subsection example1 Get list of SCSI controllers - -\include example1.c - -
- -\subsection example2 Get primary display controller - -\include example2.c - -*/ - -/*! \page changes Changes - -\ref libhd_5_12 - -
- -\subsection libhd_5_12 libhd-5.12 - -
    - -
  • changes in \ref hd_t - -
      - -
    • \ref hd_t::bus "bus" is now a struct, use \ref hd_t::bus "bus.id" instead. - -
    • \ref hd_t::base_class "base_class" is now a struct, use \ref hd_t::base_class "base_class.id" instead. - -
    • \ref hd_t::sub_class "sub_class" is now a struct, use \ref hd_t::sub_class "sub_class.id" instead. - -
    • \ref hd_t::prog_if "prog_if" is now a struct, use \ref hd_t::prog_if "prog_if.id" instead. - -
    • \ref hd_t::vendor "vendor" is a struct replacing vend and vend_name. - Use \ref hd_t::vendor "vendor.id" and \ref hd_t::vendor "vendor.name" now. - -
    • \ref hd_t::device "device" is a struct replacing dev and dev_name. - Use \ref hd_t::device "device.id" and \ref hd_t::device "device.name" now. - -
    • \ref hd_t::sub_vendor "sub_vendor" is a struct replacing sub_vend and sub_vend_name. - Use \ref hd_t::sub_vendor "sub_vendor.id" and \ref hd_t::sub_vendor "sub_vendor.name" now. - -
    • \ref hd_t::sub_device "sub_device" is a struct replacing sub_dev and sub_dev_name. - Use \ref hd_t::sub_device "sub_device.id" and \ref hd_t::sub_device "sub_device.name" now. - -
    • \ref hd_t::revision "revision" is a struct replacing rev and rev_name. - Use \ref hd_t::revision "revision.id" and \ref hd_t::revision "revision.name" now. - -
    • \ref hd_t::compat_vendor "compat_vendor" is a struct replacing compat_vend. - Use \ref hd_t::compat_vendor "compat_vendor.id" now. - -
    • \ref hd_t::compat_device "compat_device" is a struct replacing compat_dev. - Use \ref hd_t::compat_device "compat_device.id" now. - -
    - -
  • interface functions removed - -
      - -
    • hd_bus_name is gone. Use \ref hd_t::bus "bus.name" instead. - -
    • hd_class_name is gone. Use \ref hd_t::base_class "base_class.name", - \ref hd_t::sub_class "sub_class.name" or \ref hd_t::prog_if "prog_if.name" instead. - -
    • hd_vendor_name is gone. Use \ref hd_t::vendor "vendor.name" instead. - -
    • hd_device_name is gone. Use \ref hd_t::device "device.name" instead. - -
    • hd_sub_device_name is gone. Use \ref hd_t::sub_device "sub_device.name" instead. - -
    • hd_find_device_by_name is gone. - -
    - -
- -
- -*/ - diff --git a/src/hwinfo/doc/libhd.doxy b/src/hwinfo/doc/libhd.doxy deleted file mode 100644 index 30bc2fa1c6..0000000000 --- a/src/hwinfo/doc/libhd.doxy +++ /dev/null @@ -1,898 +0,0 @@ -# Doxyfile 1.2.13.1 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# General configuration options -#--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = libhd - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = 5.0 - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = libhd - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French, -# German, Greek, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, -# Portuguese, Romanian, Russian, Slovak, Slovene, Spanish and Swedish. - -OUTPUT_LANGUAGE = English - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these class will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited -# members of a class in the documentation of that class as if those members were -# ordinary class members. Constructors, destructors and assignment operators of -# the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. It is allowed to use relative paths in the argument list. - -STRIP_FROM_PATH = - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower case letters. If set to YES upper case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# users are adviced to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explict @brief command for a brief description. - -JAVADOC_AUTOBRIEF = YES - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# reimplements. - -INHERIT_DOCS = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consist of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. -# For instance some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. - -WARN_FORMAT = - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = libhd.doc ../src - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp -# *.h++ *.idl - -FILE_PATTERNS = *.c *.h - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = ../src/ids - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. - -EXCLUDE_PATTERNS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = . - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = *.c - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. - -INPUT_FILTER = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse. - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = footer.html - -# The HTML_STYLESHEET tag can be used to specify a user defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the Html help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript and frames is required (for instance Mozilla, Netscape 4.0+, -# or Internet explorer 4.0+). Note that for large projects the tree generation -# can take a very long time. In such cases it is better to disable this feature. -# Windows users are probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = YES - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimised for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assigments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_XML = NO - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_PREDEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line and do not end with a semicolon. Such function macros are typically -# used for boiler-plate code, and will confuse the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES tag can be used to specify one or more tagfiles. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in Html, RTF and LaTeX) for classes with base or -# super classes. Setting the tag to NO turns the diagrams off. Note that this -# option is superceded by the HAVE_DOT option below. This is only a fallback. It is -# recommended to install and use dot, since it yield more powerful graphs. - -CLASS_DIAGRAMS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = YES - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found on the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermedate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO - -# The CGI_NAME tag should be the name of the CGI script that -# starts the search engine (doxysearch) with the correct parameters. -# A script with this name will be generated by doxygen. - -CGI_NAME = - -# The CGI_URL tag should be the absolute URL to the directory where the -# cgi binaries are located. See the documentation of your http daemon for -# details. - -CGI_URL = - -# The DOC_URL tag should be the absolute URL to the directory where the -# documentation is located. If left blank the absolute path to the -# documentation, with file:// prepended to it, will be used. - -DOC_URL = - -# The DOC_ABSPATH tag should be the absolute path to the directory where the -# documentation is located. If left blank the directory on the local machine -# will be used. - -DOC_ABSPATH = - -# The BIN_ABSPATH tag must point to the directory where the doxysearch binary -# is installed. - -BIN_ABSPATH = - -# The EXT_DOC_PATHS tag can be used to specify one or more paths to -# documentation generated for other projects. This allows doxysearch to search -# the documentation for these projects as well. - -EXT_DOC_PATHS = diff --git a/src/hwinfo/gen-hwcfg-disk.sh b/src/hwinfo/gen-hwcfg-disk.sh deleted file mode 100755 index c13cda60da..0000000000 --- a/src/hwinfo/gen-hwcfg-disk.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -# -# gen-hwcfg-disk.sh -# -# Generates hwcfg file for all configured disks -# - -if [ -x /sbin/ata_identify ]; then - ATA_ID=/sbin/ata_identify -elif [ -x /lib/klibc/bin/ata_identify ]; then - ATA_ID=/lib/klibc/bin/ata_identify -else - echo "ata_identify not found, please install udev" - exit 1 -fi - -hwcfg=/etc/sysconfig/hardware - -if [ ! -d "$hwcfg" ]; then - echo "No hardware configuration directory found" - exit 1 -fi - -# IDE disks first -for ifname in /sys/block/hd*; do - id=$($ATA_ID /dev/${ifname##*/} 2> /dev/null) - if [ $? -eq 0 ]; then - filename="SATA_$id" - echo "Generate hwcfg file for $filename" - echo "DEVICE=${ifname##*/}" > ${hwcfg}/hwcfg-disk-id-${filename} - fi -done - -# SCSI disks next -for ifname in /sys/block/sd*; do - if [ -d $ifname/device ]; then - read vendor < $ifname/device/vendor - if [ "$vendor" = "ATA" ]; then - # We need page 0x80 to get the serial number - page="-p 0x80" - else - page= - fi - scsi_id -g $page -s ${ifname#/sys} 2> /dev/null | while read vendor model serial; do - filename="${vendor}_${model}_${serial}" - echo "Generate hwcfg file for $filename" - echo "DEVICE=${ifname##*/}" > ${hwcfg}/hwcfg-disk-id-${filename} - done - fi -done diff --git a/src/hwinfo/getsysinfo b/src/hwinfo/getsysinfo deleted file mode 100755 index 1081a6b23f..0000000000 --- a/src/hwinfo/getsysinfo +++ /dev/null @@ -1,77 +0,0 @@ -#! /bin/sh - -if [ "$1" ] ; then - cat </dev/null - chmod -R u+w,a+r,a+X "$dir/$host" - fi -done - -echo /proc/mounts -cp --parents /proc/mounts "$dir/$host" - -echo -e "\n------ dmesg start ------\n" >>"$dir/$host/var/log/boot.msg" -dmesg >>"$dir/$host/var/log/boot.msg" - -file="$host.tar.gz" -tar -C "$dir" -zcf "$dir/$file" "$host" - -rm -f "/tmp/$file" - -if [ -e "/tmp/$file" ] ; then - echo "Warning: /tmp/$file exists, no info written"\! - rm -rf "$dir" - exit 1 -fi - -ln -nf "$dir/$file" "/tmp/$file" - -rm -rf "$dir" - -echo -e "\nSystem data written to: /tmp/$file" - diff --git a/src/hwinfo/hwbootscan b/src/hwinfo/hwbootscan deleted file mode 100644 index 6bcfb25b40..0000000000 --- a/src/hwinfo/hwbootscan +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -rm -f /var/lib/hardware/LOCK - -/sbin/hwscan --silent --boot --fast --isapnp --pci --block --floppy --mouse - -# -# create icons for static drives -# -if [ -e /etc/hotplug/hotplug.subfs.functions ]; then - . /etc/hotplug/hotplug.subfs.functions - coldplug_create_subfs -fi - -exit 0 diff --git a/src/hwinfo/hwbootscan.rc b/src/hwinfo/hwbootscan.rc deleted file mode 100644 index 26484eafe3..0000000000 --- a/src/hwinfo/hwbootscan.rc +++ /dev/null @@ -1,101 +0,0 @@ -#! /bin/sh -# Copyright (c) 2002 SuSE GmbH Nuernberg, Germany. All rights reserved. -# -# Author: Marcus Meissner -# -# /etc/init.d/hwscan -# -# System startup script for boot hw probing and reconfiguration -# -### BEGIN INIT INFO -# Provides: hwscan -# Required-Start: -# X-UnitedLinux-Should-Start: hotplug kbd -# Required-Stop: -# Default-Start: 2 3 5 -# Default-Stop: -# Description: Hardware scan and reconfiguration on boot. -### END INIT INFO - -HWBOOTSCAN_BIN=/usr/sbin/hwbootscan -test -x $HWBOOTSCAN_BIN || exit 5 - -# Shell functions sourced from /etc/rc.status: -# rc_check check and set local and overall rc status -# rc_status check and set local and overall rc status -# rc_status -v ditto but be verbose in local rc status -# rc_status -v -r ditto and clear the local rc status -# rc_failed set local and overall rc status to failed -# rc_reset clear local rc status (overall remains) -# rc_exit exit appropriate to overall rc status -. /etc/rc.status - -# First reset status of this service -rc_reset - -# Return values acc. to LSB for all commands but status: -# 0 - success -# 1 - misc error -# 2 - invalid or excess args -# 3 - unimplemented feature (e.g. reload) -# 4 - insufficient privilege -# 5 - program not installed -# 6 - program not configured -# 7 - program is not running -# -# Note that starting an already running service, stopping -# or restarting a not-running service as well as the restart -# with force-reload (in case signalling is not supported) are -# considered a success. - -case "$1" in - start) - echo -n "Starting hardware scan on boot" - rc_splash "YaST" - [ -n "$REDIRECT" ] && exec 0<> $REDIRECT 1>&0 2>&0 - $HWBOOTSCAN_BIN - rc_check - rc_status -v - ;; - stop) - rc_check - ;; - restart) - ## Stop the service and regardless of whether it was - ## running or not, start it again. - # Remember status and be quiet - rc_check - ;; - force-reload) - ## Signal the daemon to reload its config. Most daemons - ## do this on signal 1 (SIGHUP). - ## If it does not support it, restart. - # Remember status and be quiet - rc_check - ;; - reload) - ## Like force-reload, but if daemon does not support - ## signalling, do nothing (!) - - # If it supports signalling: - rc_reset - ;; - status) - ## Check status with checkproc(8), if process is running - ## checkproc will return with exit status 0. - - # Status has a slightly different for the status command: - # 0 - service running - # 1 - service dead, but /var/run/ pid file exists - # 2 - service dead, but /var/lock/ lock file exists - # 3 - service not running - - rc_reset - ;; - *) - echo "Usage: $0 {start|stop|restart|force-reload|reload|status}" - exit 1 - ;; -esac -rc_exit - diff --git a/src/hwinfo/hwinfo.c b/src/hwinfo/hwinfo.c deleted file mode 100644 index 8b32957f35..0000000000 --- a/src/hwinfo/hwinfo.c +++ /dev/null @@ -1,2103 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" - -static int get_probe_flags(int, char **, hd_data_t *); -static void progress2(char *, char *); - -// ##### temporary solution, fix it later! -str_list_t *read_file(char *file_name, unsigned start_line, unsigned lines); -str_list_t *search_str_list(str_list_t *sl, char *str); -str_list_t *add_str_list(str_list_t **sl, char *str); -char *new_str(const char *); - -static unsigned deb = 0; -static char *log_file = ""; -static char *list = NULL; -static int listplus = 0; - -static int test = 0; -static int is_short = 0; - -static char *showconfig = NULL; -static char *saveconfig = NULL; -static hd_hw_item_t hw_item[100] = { }; -static int hw_items = 0; - -int braille_install_info(hd_data_t *hd_data); -int x11_install_info(hd_data_t *hd_data); -int oem_install_info(hd_data_t *hd_data); -void dump_packages(hd_data_t *hd_data); - -void do_hw(hd_data_t *hd_data, FILE *f, hd_hw_item_t hw_item); -void do_hw_multi(hd_data_t *hd_data, FILE *f, hd_hw_item_t *hw_items); -void do_short(hd_data_t *hd_data, hd_t *hd, FILE *f); -void do_test(hd_data_t *hd_data); -void help(void); -void dump_db_raw(hd_data_t *hd_data); -void dump_db(hd_data_t *hd_data); -void do_chroot(hd_data_t *hd_data, char *dir); -void ask_db(hd_data_t *hd_data, char *query); -void get_mapping(hd_data_t *hd_data); - - -struct { - unsigned db_idx; - unsigned separate:1; - char *root; -} opt; - -struct option options[] = { - { "special", 1, NULL, 1 }, - { "help", 0, NULL, 'h' }, - { "debug", 1, NULL, 'd' }, - { "version", 0, NULL, 400 }, - { "log", 1, NULL, 'l' }, - { "packages", 0, NULL, 'p' }, - { "test", 0, NULL, 300 }, - { "format", 1, NULL, 301 }, - { "show-config", 1, NULL, 302 }, - { "save-config", 1, NULL, 303 }, - { "short", 0, NULL, 304 }, - { "fast", 0, NULL, 305 }, - { "dump-db", 1, NULL, 306 }, - { "dump-db-raw", 1, NULL, 307 }, - { "separate", 0, NULL, 308 }, - { "root", 1, NULL, 309 }, - { "db", 1, NULL, 310 }, - { "only", 1, NULL, 311 }, - { "listmd", 0, NULL, 312 }, - { "map", 0, NULL, 313 }, - { "kernel-version", 1, NULL, 314 }, - { "cdrom", 0, NULL, 1000 + hw_cdrom }, - { "floppy", 0, NULL, 1000 + hw_floppy }, - { "disk", 0, NULL, 1000 + hw_disk }, - { "network", 0, NULL, 1000 + hw_network }, - { "display", 0, NULL, 1000 + hw_display }, - { "gfxcard", 0, NULL, 1000 + hw_display }, - { "framebuffer", 0, NULL, 1000 + hw_framebuffer }, - { "monitor", 0, NULL, 1000 + hw_monitor }, - { "camera", 0, NULL, 1000 + hw_camera }, - { "mouse", 0, NULL, 1000 + hw_mouse }, - { "joystick", 0, NULL, 1000 + hw_joystick }, - { "keyboard", 0, NULL, 1000 + hw_keyboard }, - { "chipcard", 0, NULL, 1000 + hw_chipcard }, - { "sound", 0, NULL, 1000 + hw_sound }, - { "isdn", 0, NULL, 1000 + hw_isdn }, - { "modem", 0, NULL, 1000 + hw_modem }, - { "storage-ctrl", 0, NULL, 1000 + hw_storage_ctrl }, - { "storage_ctrl", 0, NULL, 1000 + hw_storage_ctrl }, - { "netcard", 0, NULL, 1000 + hw_network_ctrl }, - { "netcards", 0, NULL, 1000 + hw_network_ctrl }, // outdated, just kept for comaptibility - { "network-ctrl", 0, NULL, 1000 + hw_network_ctrl }, - { "network_ctrl", 0, NULL, 1000 + hw_network_ctrl }, - { "printer", 0, NULL, 1000 + hw_printer }, - { "tv", 0, NULL, 1000 + hw_tv }, - { "dvb", 0, NULL, 1000 + hw_dvb }, - { "scanner", 0, NULL, 1000 + hw_scanner }, - { "braille", 0, NULL, 1000 + hw_braille }, - { "sys", 0, NULL, 1000 + hw_sys }, - { "bios", 0, NULL, 1000 + hw_bios }, - { "cpu", 0, NULL, 1000 + hw_cpu }, - { "partition", 0, NULL, 1000 + hw_partition }, - { "usb-ctrl", 0, NULL, 1000 + hw_usb_ctrl }, - { "usb_ctrl", 0, NULL, 1000 + hw_usb_ctrl }, - { "usb", 0, NULL, 1000 + hw_usb }, - { "pci", 0, NULL, 1000 + hw_pci }, - { "isapnp", 0, NULL, 1000 + hw_isapnp }, - { "scsi", 0, NULL, 1000 + hw_scsi }, - { "ide", 0, NULL, 1000 + hw_ide }, - { "bridge", 0, NULL, 1000 + hw_bridge }, - { "hub", 0, NULL, 1000 + hw_hub }, - { "memory", 0, NULL, 1000 + hw_memory }, - { "manual", 0, NULL, 1000 + hw_manual }, - { "pcmcia", 0, NULL, 1000 + hw_pcmcia }, - { "pcmcia_ctrl", 0, NULL, 1000 + hw_pcmcia_ctrl }, - { "ieee1394", 0, NULL, 1000 + hw_ieee1394 }, - { "ieee1394_ctrl", 0, NULL, 1000 + hw_ieee1394_ctrl }, - { "firewire", 0, NULL, 1000 + hw_ieee1394 }, - { "firewire_ctrl", 0, NULL, 1000 + hw_ieee1394_ctrl }, - { "hotplug", 0, NULL, 1000 + hw_hotplug }, - { "hotplug_ctrl", 0, NULL, 1000 + hw_hotplug_ctrl }, - { "zip", 0, NULL, 1000 + hw_zip }, - { "pppoe", 0, NULL, 1000 + hw_pppoe }, - { "dsl", 0, NULL, 1000 + hw_dsl }, - { "wlan", 0, NULL, 1000 + hw_wlan }, - { "redasd", 0, NULL, 1000 + hw_redasd }, - { "block", 0, NULL, 1000 + hw_block }, - { "tape", 0, NULL, 1000 + hw_tape }, - { "vbe", 0, NULL, 1000 + hw_vbe }, - { "bluetooth", 0, NULL, 1000 + hw_bluetooth }, - { "all", 0, NULL, 2000 }, - { "reallyall", 0, NULL, 2001 }, - { "smp", 0, NULL, 2002 }, - { "arch", 0, NULL, 2003 }, - { "uml", 0, NULL, 2004 }, - { } -}; - - -/* - * Just scan the hardware and dump all info. - */ -int main(int argc, char **argv) -{ - hd_data_t *hd_data; - hd_t *hd; - FILE *f = NULL; - int i; - unsigned first_probe = 1; - - hd_data = calloc(1, sizeof *hd_data); - hd_data->progress = isatty(1) ? progress2 : NULL; - hd_data->debug=~(HD_DEB_DRIVER_INFO | HD_DEB_HDDB); - - for(i = 0; i < argc; i++) { - if(strstr(argv[i], "--") == argv[i]) break; - } - - if(i != argc) { - /* new style interface */ - - opterr = 0; - - while((i = getopt_long(argc, argv, "hd:l:p", options, NULL)) != -1) { - switch(i) { - case 1: - if(!strcmp(optarg, "braille")) { - braille_install_info(hd_data); - } - else if(!strcmp(optarg, "x11")) { - x11_install_info(hd_data); - } - else if(!strcmp(optarg, "oem")) { - oem_install_info(hd_data); - } - else { - help(); - return 1; - } - break; - - case 'd': - hd_data->debug = strtol(optarg, NULL, 0); - break; - - case 'l': - log_file = optarg; - break; - - case 'p': - dump_packages(hd_data); - break; - - case 300: - do_test(hd_data); - break; - - case 301: - hd_data->flags.dformat = strtol(optarg, NULL, 0); - break; - - case 302: - showconfig = optarg; - break; - - case 303: - saveconfig = optarg; - break; - - case 304: - is_short = 1; - break; - - case 305: - hd_data->flags.fast = 1; - break; - - case 306: - opt.db_idx = strtoul(optarg, NULL, 0); - dump_db(hd_data); - break; - - case 307: - opt.db_idx = strtoul(optarg, NULL, 0); - dump_db_raw(hd_data); - break; - - case 308: - /* basically for debugging */ - opt.separate = 1; - break; - - case 309: - opt.root = optarg; - break; - - case 310: - ask_db(hd_data, optarg); - break; - - case 311: - if(*optarg) add_str_list(&hd_data->only, optarg); - break; - - case 312: - hd_data->flags.list_md = 1; - break; - - case 313: - get_mapping(hd_data); - break; - - case 314: - if(*optarg) setenv("LIBHD_KERNELVERSION", optarg, 1); - break; - - case 400: - printf("%s\n", hd_version()); - break; - - case 1000 ... 1100: - if(hw_items < (int) (sizeof hw_item / sizeof *hw_item) - 1) - hw_item[hw_items++] = i - 1000; - break; - - case 2000: - case 2001: - case 2002: - case 2003: - case 2004: - if(hw_items < (int) (sizeof hw_item / sizeof *hw_item) - 1) - hw_item[hw_items++] = i; - break; - - default: - help(); - return 0; - } - } - - if(!hw_items && is_short) hw_item[hw_items++] = 2000; /* all */ - - if(hw_items >= 0 || showconfig || saveconfig) { - if(*log_file) { - if(!strcmp(log_file, "-")) { - f = fdopen(1, "w"); - } - else { - f = fopen(log_file, "w+"); - } - } - - if(opt.root) do_chroot(hd_data, opt.root); - - if(opt.separate || hw_items <= 1) { - for(i = 0; i < hw_items; i++) { - if(i) fputc('\n', f ? f : stdout); - do_hw(hd_data, f, hw_item[i]); - } - } - else { - hw_item[hw_items] = 0; - do_hw_multi(hd_data, f, hw_item); - } - -#ifndef LIBHD_TINY - if(showconfig) { - hd = hd_read_config(hd_data, showconfig); - if(hd) { - hd_dump_entry(hd_data, hd, f ? f : stdout); - hd = hd_free_hd_list(hd); - } - else { - fprintf(f ? f : stdout, "No config data: %s\n", showconfig); - } - } - - if(saveconfig) { - for(hd = hd_data->hd; hd; hd = hd->next) { - if(!strcmp(hd->unique_id, saveconfig)) { - i = hd_write_config(hd_data, hd); - fprintf(f ? f : stdout, "%s: %s\n", - saveconfig, - i ? "Error writing config data" : "config saved" - ); - break; - } - } - if(!hd) { - fprintf(f ? f : stdout, "No such hardware: %s\n", saveconfig); - } - } -#endif - - if(f) fclose(f); - } - - hd_free_hd_data(hd_data); - free(hd_data); - - return 0; - } - - /* old style interface */ - - argc--; argv++; - - if(argc == 1 && !strcmp(*argv, "-h")) { - help(); - return 0; - } - - do { - if(first_probe) /* only for the 1st probing */ - hd_set_probe_feature(hd_data, pr_default); - else { - hd_clear_probe_feature(hd_data, pr_all); - } - - if((i = get_probe_flags(argc, argv, hd_data)) < 0) return 1; - deb = hd_data->debug; - argc -= i; argv += i; - - if(opt.root && first_probe) do_chroot(hd_data, opt.root); - - hd_scan(hd_data); - if(hd_data->progress) printf("\r%64s\r", ""); - - first_probe = 0; - } while(argc); - - if(*log_file) { - if(!strcmp(log_file, "-")) { - f = fdopen(1, "w"); - } - else { - f = fopen(log_file, "w+"); - } - } - - if((hd_data->debug & HD_DEB_SHOW_LOG) && hd_data->log) { - if(*log_file) { - fprintf(f ? f : stdout, - "============ start hardware log ============\n" - ); - } - fprintf(f ? f : stdout, - "============ start debug info ============\n%s=========== end debug info ============\n", - hd_data->log - ); - } - - for(hd = hd_data->hd; hd; hd = hd->next) { - hd_dump_entry(hd_data, hd, f ? f : stdout); - } - - if(*log_file) { - fprintf(f ? f : stdout, - "============ end hardware log ============\n" - ); - } - - i = -1; - if(list) { - if(!strcmp(list, "cdrom")) i = hw_cdrom; - if(!strcmp(list, "disk")) i = hw_disk; - if(!strcmp(list, "floppy")) i = hw_floppy; - if(!strcmp(list, "network")) i = hw_network; - if(!strcmp(list, "display")) i = hw_display; - if(!strcmp(list, "monitor")) i = hw_monitor; - if(!strcmp(list, "mouse")) i = hw_mouse; - if(!strcmp(list, "keyboard")) i = hw_keyboard; - if(!strcmp(list, "sound")) i = hw_sound; - if(!strcmp(list, "isdn")) i = hw_isdn; - if(!strcmp(list, "dsl")) i = hw_dsl; - if(!strcmp(list, "modem")) i = hw_modem; - if(!strcmp(list, "storage_ctrl")) i = hw_storage_ctrl; - if(!strcmp(list, "network_ctrl")) i = hw_network_ctrl; - if(!strcmp(list, "netcards")) i = hw_network_ctrl; - if(!strcmp(list, "printer")) i = hw_printer; - if(!strcmp(list, "tv")) i = hw_tv; - if(!strcmp(list, "scanner")) i = hw_scanner; - if(!strcmp(list, "braille")) i = hw_braille; - if(!strcmp(list, "sys")) i = hw_sys; - if(!strcmp(list, "cpu")) i = hw_cpu; - - if(i >= 0) { - hd = hd_list(hd_data, i, listplus, NULL); - printf("\n"); - printf("-- %s list --\n", list); - for(; hd; hd = hd->next) hd_dump_entry(hd_data, hd, stdout); - printf("-- %s list end --\n", list); - hd = hd_free_hd_list(hd); - } - } - - if(f) fclose(f); - - hd_free_hd_data(hd_data); - free(hd_data); - - return 0; -} - - -void do_hw(hd_data_t *hd_data, FILE *f, hd_hw_item_t hw_item) -{ - hd_t *hd, *hd0; - int smp = -1, uml = 0, i; - char *s, *t; - enum boot_arch b_arch; - enum cpu_arch c_arch; - - hd0 = NULL; - - switch(hw_item) { - case 2002: - smp = hd_smp_support(hd_data); - break; - - case 2000: - case 2001: - case 2003: - i = -1; - switch((int) hw_item) { - case 2000: i = pr_default; break; - case 2001: i = pr_all; break; - case 2003: i = pr_cpu; break; - } - if(i != -1) { - hd_clear_probe_feature(hd_data, pr_all); - hd_set_probe_feature(hd_data, i); - hd_scan(hd_data); - hd0 = hd_data->hd; - } - break; - - case 2004: - uml = hd_is_uml(hd_data); - break; - - default: - hd0 = hd_list(hd_data, hw_item, 1, NULL); - } - - if(hd_data->progress) { - printf("\r%64s\r", ""); - fflush(stdout); - } - - if(f) { - if((hd_data->debug & HD_DEB_SHOW_LOG) && hd_data->log) { - fprintf(f, - "============ start hardware log ============\n" - ); - fprintf(f, - "============ start debug info ============\n%s=========== end debug info ============\n", - hd_data->log - ); - } - - for(hd = hd_data->hd; hd; hd = hd->next) { - hd_dump_entry(hd_data, hd, f); - } - - fprintf(f, - "============ end hardware log ============\n" - ); - } - - if(hw_item == 2002) { - fprintf(f ? f : stdout, - "SMP support: %s", - smp < 0 ? "unknown" : smp > 0 ? "yes" : "no" - ); - if(smp > 0) fprintf(f ? f : stdout, " (%u cpus)", smp); - fprintf(f ? f : stdout, "\n"); - } - else if(hw_item == 2003) { - c_arch = hd_cpu_arch(hd_data); - b_arch = hd_boot_arch(hd_data); - - s = t = "Unknown"; - switch(c_arch) { - case arch_unknown: - break; - case arch_intel: - s = "X86 (32)"; - break; - case arch_alpha: - s = "Alpha"; - break; - case arch_sparc: - s = "Sparc (32)"; - break; - case arch_sparc64: - s = "UltraSparc (64)"; - break; - case arch_ppc: - s = "PowerPC"; - break; - case arch_ppc64: - s = "PowerPC (64)"; - break; - case arch_68k: - s = "68k"; - break; - case arch_ia64: - s = "IA-64"; - break; - case arch_s390: - s = "S390"; - break; - case arch_s390x: - s = "S390x"; - break; - case arch_arm: - s = "ARM"; - break; - case arch_mips: - s = "MIPS"; - break; - case arch_x86_64: - s = "X86_64"; - break; - } - - switch(b_arch) { - case boot_unknown: - break; - case boot_lilo: - t = "lilo"; - break; - case boot_milo: - t = "milo"; - break; - case boot_aboot: - t = "aboot"; - break; - case boot_silo: - t = "silo"; - break; - case boot_ppc: - t = "ppc"; - break; - case boot_elilo: - t = "elilo"; - break; - case boot_s390: - t = "s390"; - break; - case boot_mips: - t = "mips"; - break; - case boot_grub: - t = "grub"; - break; - } - - fprintf(f ? f : stdout, "Arch: %s/%s\n", s, t); - } - else if(hw_item == 2004) { - fprintf(f ? f : stdout, "UML: %s\n", uml ? "yes" : "no"); - } - else { - if(is_short) { - /* always to stdout */ - do_short(hd_data, hd0, stdout); - if(f) do_short(hd_data, hd0, f); - } - else { - for(hd = hd0; hd; hd = hd->next) { - hd_dump_entry(hd_data, hd, f ? f : stdout); - } - } - } - - if(hw_item == hw_display && hd0) { - fprintf(f ? f : stdout, "\nPrimary display adapter: #%u\n", hd_display_adapter(hd_data)); - } - - if(hd0 != hd_data->hd) hd_free_hd_list(hd0); -} - - -void do_hw_multi(hd_data_t *hd_data, FILE *f, hd_hw_item_t *hw_items) -{ - hd_t *hd, *hd0; - - hd0 = hd_list2(hd_data, hw_items, 1); - - if(hd_data->progress) { - printf("\r%64s\r", ""); - fflush(stdout); - } - - if(f) { - if((hd_data->debug & HD_DEB_SHOW_LOG) && hd_data->log) { - fprintf(f, - "============ start hardware log ============\n" - ); - fprintf(f, - "============ start debug info ============\n%s=========== end debug info ============\n", - hd_data->log - ); - } - - for(hd = hd_data->hd; hd; hd = hd->next) { - hd_dump_entry(hd_data, hd, f); - } - - fprintf(f, - "============ end hardware log ============\n" - ); - } - - if(is_short) { - /* always to stdout */ - do_short(hd_data, hd0, stdout); - if(f) do_short(hd_data, hd0, f); - } - else { - for(hd = hd0; hd; hd = hd->next) { - hd_dump_entry(hd_data, hd, f ? f : stdout); - } - } - - hd_free_hd_list(hd0); -} - - -void do_short(hd_data_t *hd_data, hd_t *hd, FILE *f) -{ -#ifndef LIBHD_TINY - hd_hw_item_t item; - hd_t *hd1; - int i; - char *s; - - for(item = 1; item < hw_all; item++) { - i = 0; - s = hd_hw_item_name(item); - if(!s) continue; - - if(item == hw_sys) continue; - - for(hd1 = hd; hd1; hd1 = hd1->next) { - if(hd1->hw_class == item) { - if(!i++) fprintf(f, "%s:\n", s); - fprintf(f, " %-20s %s\n", - hd1->unix_dev_name ? hd1->unix_dev_name : "", - hd1->model ? hd1->model : "???" - ); - } - } - } -#endif -} - - -#if 0 -typedef struct { - char *vendor, *model, *driver; -} scanner_t; - -static scanner_t scanner_data[] = { - { "Abaton", "SCAN 300/GS", "abaton" }, - { "Abaton", "SCAN 300/S", "abaton" }, - { "Acer", "300f", "SnapScan" }, - { "Acer", "310s", "SnapScan" }, - { "Acer", "610plus", "SnapScan" }, - { "Acer", "610s", "SnapScan" }, - { "Acer", "Prisa 1240", "SnapScan" }, - { "Acer", "Prisa 3300", "SnapScan" }, - { "Acer", "Prisa 4300", "SnapScan" }, - { "Acer", "Prisa 5300", "SnapScan" }, - { "Acer", "Prisa 620s", "SnapScan" }, - { "Acer", "Prisa 620u", "SnapScan" }, - { "Acer", "Prisa 620ut", "SnapScan" }, - { "Acer", "Prisa 640bu", "SnapScan" }, - { "Acer", "Prisa 640u", "SnapScan" }, - { "Agfa", "Arcus II", "microtek" }, - { "Agfa", "DuoScan", "microtek" }, - { "Agfa", "FOCUS COLOR", "agfafocus" }, - { "Agfa", "FOCUS GS SCANNER", "agfafocus" }, - { "Agfa", "FOCUS II", "agfafocus" }, - { "Agfa", "FOCUS LINEART SCANNER", "agfafocus" }, - { "Agfa", "SnapScan 1212u", "SnapScan" }, - { "Agfa", "SnapScan 1236s", "SnapScan" }, - { "Agfa", "SnapScan 1236u", "SnapScan" }, - { "Agfa", "SnapScan 300", "SnapScan" }, - { "Agfa", "SnapScan 310", "SnapScan" }, - { "Agfa", "SnapScan 600", "SnapScan" }, - { "Agfa", "SnapScan e20", "SnapScan" }, - { "Agfa", "SnapScan e25", "SnapScan" }, - { "Agfa", "SnapScan e40", "SnapScan" }, - { "Agfa", "SnapScan e50", "SnapScan" }, - { "Agfa", "SnapScan e60", "SnapScan" }, - { "Agfa", "StudioScan", "microtek" }, - { "Agfa", "StudioScan II", "microtek" }, - { "Agfa", "StudioScan IIsi", "microtek" }, - { "Apple", "APPLE SCANNER", "apple" }, - { "Apple", "COLORONESCANNER", "apple" }, - { "Apple", "ONESCANNER", "apple" }, - { "Artec", "A6000C", "artec" }, - { "Artec", "A6000C PLUS", "artec" }, - { "Artec", "AM12S", "artec" }, - { "Artec", "AT12", "artec" }, - { "Artec", "AT3", "artec" }, - { "Artec", "AT6", "artec" }, - { "Artec", "ColorOneScanner", "artec" }, - { "Avision", "AV 620 CS", "avision" }, - { "Avision", "AV 6240", "avision" }, - { "Avision", "AV 630 CS", "avision" }, - { "B&H SCSI", "COPISCAN II 2135", "bh" }, - { "B&H SCSI", "COPISCAN II 2137", "bh" }, - { "B&H SCSI", "COPISCAN II 2137A", "bh" }, - { "B&H SCSI", "COPISCAN II 2138A", "bh" }, - { "B&H SCSI", "COPISCAN II 3238", "bh" }, - { "B&H SCSI", "COPISCAN II 3338", "bh" }, - { "B&H SCSI", "COPISCAN II 6338", "bh" }, - { "BlackWidow", "BW4800SP", "artec" }, - { "Canon", "CANOSCAN 2700F", "canon" }, - { "Canon", "CANOSCAN 300", "canon" }, - { "Canon", "CANOSCAN 600", "canon" }, - { "Devcom", "9636PRO", "pie" }, - { "Devcom", "9636S", "pie" }, - { "EDGE", "KTX-9600US", "umax" }, - { "Epson", "ES-8500", "epson" }, - { "Epson", "EXPRESSION 1600", "epson" }, - { "Epson", "EXPRESSION 1680", "epson" }, - { "Epson", "EXPRESSION 636", "epson" }, - { "Epson", "EXPRESSION 800", "epson" }, - { "Epson", "FILMSCAN 200", "epson" }, - { "Epson", "GT-5500", "epson" }, - { "Epson", "GT-7000", "epson" }, - { "Epson", "GT-8000", "epson" }, - { "Epson", "PERFECTION 1200PHOTO", "epson" }, - { "Epson", "PERFECTION 1200S", "epson" }, - { "Epson", "PERFECTION 1200U", "epson" }, - { "Epson", "PERFECTION 1240", "epson" }, - { "Epson", "PERFECTION 1640", "epson" }, - { "Epson", "PERFECTION 1650", "epson" }, - { "Epson", "PERFECTION 610", "epson" }, - { "Epson", "PERFECTION 636S", "epson" }, - { "Epson", "PERFECTION 636U", "epson" }, - { "Epson", "PERFECTION 640", "epson" }, - { "Epson", "PERFECTION1200", "epson" }, - { "Epson", "Perfection 600", "umax" }, - { "Escom", "Image Scanner 256", "umax" }, - { "Escort", "Galleria 600", "umax" }, - { "Fujitsu", "M3091DCD", "m3091" }, - { "Fujitsu", "M3096G", "m3096g" }, - { "Fujitsu", "SP15C", "sp15c" }, - { "Genius", "ColorPage-HR5 Pro", "umax" }, - { "Guillemot", "Maxi Scan A4 Deluxe", "SnapScan" }, - { "HP", "HP OFFICEJET K SERIES", "hp" }, - { "HP", "HP OFFICEJET V SERIES", "hp" }, - { "HP", "HP PHOTOSMART PHOTOSCANNER", "hp" }, - { "HP", "HP PSC 700 SERIES", "hp" }, - { "HP", "HP PSC 900 SERIES", "hp" }, - { "HP", "HP SCANJET 3C", "hp" }, - { "HP", "HP SCANJET 3P", "hp" }, - { "HP", "HP SCANJET 4100C", "hp" }, - { "HP", "HP SCANJET 4C", "hp" }, - { "HP", "HP SCANJET 4P", "hp" }, - { "HP", "HP SCANJET 5200C", "hp" }, - { "HP", "HP SCANJET 6100C", "hp" }, - { "HP", "HP SCANJET 6200C", "hp" }, - { "HP", "HP SCANJET 6250C", "hp" }, - { "HP", "HP SCANJET 6300C", "hp" }, - { "HP", "HP SCANJET 6350C", "hp" }, - { "HP", "HP SCANJET 6390C", "hp" }, - { "HP", "HP SCANJET IIC", "hp" }, - { "HP", "HP SCANJET IICX", "hp" }, - { "HP", "HP SCANJET IIP", "hp" }, - { "HP", "HP ScanJet 5p", "hp" }, - { "HP", "HP4200", "hp4200" }, - { "Highscreen", "Scanboostar Premium", "umax" }, - { "Linotype Hell", "Jade", "umax" }, - { "Linotype Hell", "Jade2", "umax" }, - { "Linotype Hell", "Linoscan 1400", "umax" }, - { "Linotype Hell", "Opal", "umax" }, - { "Linotype Hell", "Opal Ultra", "umax" }, - { "Linotype Hell", "Saphir", "umax" }, - { "Linotype Hell", "Saphir HiRes", "umax" }, - { "Linotype Hell", "Saphir Ultra", "umax" }, - { "Linotype Hell", "Saphir Ultra II", "umax" }, - { "Linotype Hell", "Saphir2", "umax" }, - { "Microtek", "Phantom 636", "microtek2" }, - { "Microtek", "ScanMaker 330", "microtek2" }, - { "Microtek", "ScanMaker 3600", "sm3600" }, - { "Microtek", "ScanMaker 630", "microtek2" }, - { "Microtek", "ScanMaker 636", "microtek2" }, - { "Microtek", "ScanMaker 9600XL", "microtek2" }, - { "Microtek", "ScanMaker E3plus", "microtek2" }, - { "Microtek", "ScanMaker V300", "microtek2" }, - { "Microtek", "ScanMaker V310", "microtek2" }, - { "Microtek", "ScanMaker V600", "microtek2" }, - { "Microtek", "ScanMaker V6USL", "microtek2" }, - { "Microtek", "ScanMaker X6", "microtek2" }, - { "Microtek", "ScanMaker X6EL", "microtek2" }, - { "Microtek", "ScanMaker X6USB", "microtek2" }, - { "Microtek", "Scanmaker 35", "microtek" }, - { "Microtek", "Scanmaker 35t+", "microtek" }, - { "Microtek", "Scanmaker 45t", "microtek" }, - { "Microtek", "Scanmaker 600G", "microtek" }, - { "Microtek", "Scanmaker 600G S", "microtek" }, - { "Microtek", "Scanmaker 600GS", "microtek" }, - { "Microtek", "Scanmaker 600S", "microtek" }, - { "Microtek", "Scanmaker 600Z", "microtek" }, - { "Microtek", "Scanmaker 600Z S", "microtek" }, - { "Microtek", "Scanmaker 600ZS", "microtek" }, - { "Microtek", "Scanmaker E2", "microtek" }, - { "Microtek", "Scanmaker E3", "microtek" }, - { "Microtek", "Scanmaker E6", "microtek" }, - { "Microtek", "Scanmaker II", "microtek" }, - { "Microtek", "Scanmaker IIG", "microtek" }, - { "Microtek", "Scanmaker IIHR", "microtek" }, - { "Microtek", "Scanmaker III", "microtek" }, - { "Microtek", "Scanmaker IISP", "microtek" }, - { "Microtek", "SlimScan C6", "microtek2" }, - { "Mustek", "1200 CU", "mustek_usb" }, - { "Mustek", "1200 CU Plus", "mustek_usb" }, - { "Mustek", "1200 UB", "mustek_usb" }, - { "Mustek", "600 CU", "mustek_usb" }, - { "Mustek", "Paragon 1200 A3 Pro", "mustek" }, - { "Mustek", "Paragon 1200 III SP", "mustek" }, - { "Mustek", "Paragon 1200 LS", "mustek" }, - { "Mustek", "Paragon 1200 SP Pro", "mustek" }, - { "Mustek", "Paragon 600 II CD", "mustek" }, - { "Mustek", "Paragon 800 II SP", "mustek" }, - { "Mustek", "Paragon MFC-600S", "mustek" }, - { "Mustek", "Paragon MFC-800S", "mustek" }, - { "Mustek", "Paragon MFS-12000CX", "mustek" }, - { "Mustek", "Paragon MFS-12000SP", "mustek" }, - { "Mustek", "Paragon MFS-1200SP", "mustek" }, - { "Mustek", "Paragon MFS-6000CX", "mustek" }, - { "Mustek", "Paragon MFS-6000SP", "mustek" }, - { "Mustek", "Paragon MFS-8000SP", "mustek" }, - { "Mustek", "ScanExpress 12000SP", "mustek" }, - { "Mustek", "ScanExpress 12000SP Plus", "mustek" }, - { "Mustek", "ScanExpress 6000SP", "mustek" }, - { "Mustek", "ScanExpress A3 SP", "mustek" }, - { "Mustek", "ScanMagic 600 II SP", "mustek" }, - { "Mustek", "ScanMagic 9636S", "mustek" }, - { "Mustek", "ScanMagic 9636S Plus", "mustek" }, - { "NEC", "PC-IN500/4C", "nec" }, - { "Nikon", "AX-210", "umax" }, - { "Nikon", "LS-1000", "coolscan" }, - { "Nikon", "LS-20", "coolscan" }, - { "Nikon", "LS-2000", "coolscan" }, - { "Nikon", "LS-30", "coolscan" }, - { "Pie", "9630S", "pie" }, - { "Pie", "ScanAce 1230S", "pie" }, - { "Pie", "ScanAce 1236S", "pie" }, - { "Pie", "ScanAce 630S", "pie" }, - { "Pie", "ScanAce 636S", "plustek" }, - { "Pie", "ScanAce II", "pie" }, - { "Pie", "ScanAce II Plus", "pie" }, - { "Pie", "ScanAce III", "pie" }, - { "Pie", "ScanAce III Plus", "pie" }, - { "Pie", "ScanAce Plus", "pie" }, - { "Pie", "ScanAce ScanMedia", "pie" }, - { "Pie", "ScanAce ScanMedia II", "pie" }, - { "Pie", "ScanAce V", "pie" }, - { "Plustek", "OpticPro 19200S", "artec" }, - { "Polaroid", "DMC", "dmc" }, - { "Ricoh", "Ricoh IS50", "ricoh" }, - { "Ricoh", "Ricoh IS60", "ricoh" }, - { "Scanport", "SQ4836", "microtek2" }, - { "Sharp", "9036 Flatbed scanner", "sharp" }, - { "Sharp", "JX-250", "sharp" }, - { "Sharp", "JX-320", "sharp" }, - { "Sharp", "JX-330", "sharp" }, - { "Sharp", "JX-350", "sharp" }, - { "Sharp", "JX-610", "sharp" }, - { "Siemens", "9036 Flatbed scanner", "s9036" }, - { "Siemens", "FOCUS COLOR PLUS", "agfafocus" }, - { "Siemens", "ST400", "st400" }, - { "Siemens", "ST800", "st400" }, - { "Tamarack", "Artiscan 12000C", "tamarack" }, - { "Tamarack", "Artiscan 6000C", "tamarack" }, - { "Tamarack", "Artiscan 8000C", "tamarack" }, - { "Trust", "Compact Scan USB 19200", "mustek_usb" }, - { "Trust", "Imagery 1200 SP", "mustek" }, - { "Trust", "Imagery 4800 SP", "mustek" }, - { "Trust", "SCSI Connect 19200", "mustek" }, - { "Trust", "SCSI excellence series 19200", "mustek" }, - { "UMAX", "Astra 1200S", "umax" }, - { "UMAX", "Astra 1220S", "umax" }, - { "UMAX", "Astra 2100S", "umax" }, - { "UMAX", "Astra 2200", "umax" }, - { "UMAX", "Astra 2200 S", "umax" }, - { "UMAX", "Astra 2200 U", "umax" }, - { "UMAX", "Astra 2400S", "umax" }, - { "UMAX", "Astra 600S", "umax" }, - { "UMAX", "Astra 610S", "umax" }, - { "UMAX", "Gemini D-16", "umax" }, - { "UMAX", "Mirage D-16L", "umax" }, - { "UMAX", "Mirage II", "umax" }, - { "UMAX", "Mirage IIse", "umax" }, - { "UMAX", "PL-II", "umax" }, - { "UMAX", "PSD", "umax" }, - { "UMAX", "PowerLook", "umax" }, - { "UMAX", "PowerLook 2000", "umax" }, - { "UMAX", "PowerLook 3000", "umax" }, - { "UMAX", "PowerLook III", "umax" }, - { "UMAX", "Supervista S-12", "umax" }, - { "UMAX", "UC 1200S", "umax" }, - { "UMAX", "UC 1200SE", "umax" }, - { "UMAX", "UC 1260", "umax" }, - { "UMAX", "UC 630", "umax" }, - { "UMAX", "UC 840", "umax" }, - { "UMAX", "UG 630", "umax" }, - { "UMAX", "UG 80", "umax" }, - { "UMAX", "UMAX S-12", "umax" }, - { "UMAX", "UMAX S-12G", "umax" }, - { "UMAX", "UMAX S-6E", "umax" }, - { "UMAX", "UMAX S-6EG", "umax" }, - { "UMAX", "UMAX VT600", "umax" }, - { "UMAX", "Vista S6", "umax" }, - { "UMAX", "Vista S6E", "umax" }, - { "UMAX", "Vista-S8", "umax" }, - { "UMAX", "Vista-T630", "umax" }, - { "Ultima", "A6000C", "artec" }, - { "Ultima", "A6000C PLUS", "artec" }, - { "Ultima", "AM12S", "artec" }, - { "Ultima", "AT12", "artec" }, - { "Ultima", "AT3", "artec" }, - { "Ultima", "AT6", "artec" }, - { "Ultima", "ColorOneScanner", "artec" }, - { "Vobis", "HighScan", "microtek2" }, - { "Vobis", "Scanboostar Premium", "umax" }, - { "Vuego", "Close SnapScan 310 compatible.", "SnapScan" } -}; - -static char *scanner_info(hd_t *hd) -{ - int i; - - if(!hd->vendor.name || !hd->device.name) return NULL; - - for(i = 0; (unsigned) i < sizeof scanner_data / sizeof *scanner_data; i++) { - if( - !strcasecmp(scanner_data[i].vendor, hd->vendor.name) && - !strcasecmp(scanner_data[i].model, hd->device.name) - ) { - return scanner_data[i].driver; - } - } - - return NULL; -} - -#endif - -void do_test(hd_data_t *hd_data) -{ -#if 0 - hd_t *hd, *hd0; - hd_res_t *res; - driver_info_t *di; - FILE *f; - int i, wheels, buttons; - unsigned u; - uint64_t ul; - char *s, *s1; - hd_hw_item_t item, items[] = { - hw_display, hw_monitor, hw_tv, hw_sound, hw_mouse, hw_disk, hw_cdrom, - hw_floppy, hw_modem, hw_isdn, hw_scanner, hw_camera - }; - - hd_set_probe_feature(hd_data, pr_default); - hd_scan(hd_data); - - f = fopen("/tmp/hw_overview.log", "w"); - - for(i = 0; (unsigned) i < sizeof items / sizeof *items; i++) { - item = items[i]; - hd0 = hd_list(hd_data, item, 0, NULL); - - if(!hd0) continue; - - switch(item) { - case hw_disk: - fprintf(f, "Disk\n"); - for(hd = hd0; hd; hd = hd->next) { - u = 0; - for(res = hd->res; res; res = res->next) { - if(res->any.type == res_size && res->size.unit == size_unit_sectors) { - ul = (uint64_t) res->size.val1 * (res->size.val2 ?: 0x200); - u = ((ul >> 29) + 1) >> 1; - } - } - s = hd->bus.name; - fprintf(f, " %s", hd->model); - if(u) { - fprintf(f, " ("); - if(s) fprintf(f, "%s, ", s); - fprintf(f, "%u GB)", u); - } - fprintf(f, "\n"); - } - fprintf(f, "\n"); - break; - - case hw_cdrom: - fprintf(f, "CD-ROM\n"); - for(hd = hd0; hd; hd = hd->next) { - s = hd->bus.name; - fprintf(f, " %s (", hd->model); - if(s) fprintf(f, "%s, ", s); - fprintf(f, "%s)", hd->prog_if.name ?: "CD-ROM"); - fprintf(f, "\n"); - } - fprintf(f, "\n"); - break; - - case hw_monitor: - fprintf(f, "Monitor\n"); - for(hd = hd0; hd; hd = hd->next) { - s = hd->model; - if(!strcmp(hd->unique_id, "rdCR.EY_qmtb9YY0")) s = "not detected"; - fprintf(f, " %s\n", s); - } - fprintf(f, "\n"); - break; - - case hw_display: - fprintf(f, "GFX Card\n"); - for(hd = hd0; hd; hd = hd->next) { - u = 0; - s1 = NULL; - for(di = hd->driver_info; di; di = di->next) { - if(di->any.type == di_x11) { - if(!s1) s1 = di->x11.server; - if(di->x11.x3d && !u) { - s1 = di->x11.server; - u = 1; - } - } - } - if(!s1) { - s1 = "not supported"; - u = 0; - } - fprintf(f, " %s (%s", hd->model, s1); - if(u) fprintf(f, ", 3D support"); - fprintf(f, ")"); - fprintf(f, "\n"); - } - fprintf(f, "\n"); - break; - - case hw_mouse: - fprintf(f, "Mouse\n"); - for(hd = hd0; hd; hd = hd->next) { - buttons = wheels = -1; // make gcc happy - s = NULL; - for(di = hd->driver_info; di; di = di->next) { - if(di->any.type == di_mouse) { - buttons = di->mouse.buttons; - wheels = di->mouse.wheels; - s = di->mouse.xf86; - break; - } - } - if(!s) { - s = "not supported"; - buttons = wheels = -1; - } - fprintf(f, " %s (%s", hd->model, s); - if(buttons >= 0) fprintf(f, ", %d buttons", buttons); - if(wheels >= 0) fprintf(f, ", %d wheels", wheels); - fprintf(f, ")"); - fprintf(f, "\n"); - } - fprintf(f, "\n"); - break; - - case hw_tv: - fprintf(f, "TV Card\n"); - for(hd = hd0; hd; hd = hd->next) { - s = NULL; - for(di = hd->driver_info; di; di = di->next) { - if( - (di->any.type == di_any || di->any.type == di_module) && - di->any.hddb0 && - di->any.hddb0->str - ) { - s = di->any.hddb0->str; - break; - } - } - if(!s) { - s = "not supported"; - } - fprintf(f, " %s (%s)\n", hd->model, s); - } - fprintf(f, "\n"); - break; - - case hw_sound: - fprintf(f, "Sound Card\n"); - for(hd = hd0; hd; hd = hd->next) { - s = NULL; - for(di = hd->driver_info; di; di = di->next) { - if( - (di->any.type == di_any || di->any.type == di_module) && - di->any.hddb0 && - di->any.hddb0->str - ) { - s = di->any.hddb0->str; - break; - } - } - if(!s) { - s = "not supported"; - } - fprintf(f, " %s (%s)\n", hd->model, s); - } - fprintf(f, "\n"); - break; - - case hw_camera: - fprintf(f, "Digital Camera/WebCam\n"); - for(hd = hd0; hd; hd = hd->next) { - fprintf(f, " %s\n", hd->model); - } - fprintf(f, "\n"); - break; - - case hw_floppy: - fprintf(f, "Floppy/Zip Drive\n"); - for(hd = hd0; hd; hd = hd->next) { - fprintf(f, " %s\n", hd->model); - } - fprintf(f, "\n"); - break; - - case hw_modem: - fprintf(f, "Modem\n"); - for(hd = hd0; hd; hd = hd->next) { - fprintf(f, " %s\n", hd->model); - } - fprintf(f, "\n"); - break; - - case hw_isdn: - fprintf(f, "ISDN\n"); - for(hd = hd0; hd; hd = hd->next) { - fprintf(f, " %s (%ssupported)\n", hd->model, hd->driver_info ? "" : "not "); - } - fprintf(f, "\n"); - break; - - case hw_scanner: - fprintf(f, "Scanner\n"); - for(hd = hd0; hd; hd = hd->next) { - s = scanner_info(hd); - if(!s) s = "not supported"; - fprintf(f, " %s (%s)\n", hd->model, s); - } - fprintf(f, "\n"); - break; - - default: - break; - } - - hd_free_hd_list(hd0); - - } - - fclose(f); - - f = fopen("/tmp/hw_detail.log", "w"); - - if(hd_data->log) { - fprintf(f, - "============ start detailed hardware log ============\n" - ); - fprintf(f, - "============ start debug info ============\n%s=========== end debug info ============\n", - hd_data->log - ); - } - - for(hd = hd_data->hd; hd; hd = hd->next) { - hd_dump_entry(hd_data, hd, f); - } - - fprintf(f, - "============ end detailed hardware log ============\n" - ); - - fclose(f); - - fprintf(stderr, "\n"); - -#endif - -#if 0 - hd_t *hd; - hd_t *hd0 = NULL; - - for(hd = hd_list(hd_data, hw_cdrom, 1, hd0); hd; hd = hd->next) { - fprintf(stderr, "cdrom: %s, %s\n", hd->unix_dev_name, hd->model); - } - - for(hd = hd_list(hd_data, hw_cdrom, 1, hd0); hd; hd = hd->next) { - fprintf(stderr, "cdrom: %s, %s\n", hd->unix_dev_name, hd->model); - } -#endif - -#if 0 - hd_t *hd; - - hd = hd_list(hd_data, hw_disk, 1, NULL); - hd_free_hd_list(hd); - hd_free_hd_data(hd_data); - - hd = hd_list(hd_data, hw_cdrom, 1, NULL); - hd_free_hd_list(hd); - hd_free_hd_data(hd_data); - - hd = hd_list(hd_data, hw_storage_ctrl, 1, NULL); - hd_free_hd_list(hd); - hd_free_hd_data(hd_data); - - hd = hd_list(hd_data, hw_display, 1, NULL); - hd_free_hd_list(hd); - hd_free_hd_data(hd_data); - -#if 0 - for(hd = hd_data->hd; hd; hd = hd->next) { - hd_dump_entry(hd_data, hd, stdout); - } - - printf("%s\n", hd_data->log); -#endif - -#endif - -#if 0 - hd_t *hd, *hd0; - - hd0 = hd_list(hd_data, hw_sound, 1, NULL); - hd0 = hd_list(hd_data, hw_sound, 1, NULL); - - for(hd = hd0; hd; hd = hd->next) { - hd_dump_entry(hd_data, hd, stdout); - } - -#if 0 - hd_data->log = free_mem(hd_data->log); - dump_hddb_data(hd_data, hd_data->hddb_dev, "hddb_dev, final"); - if(hd_data->log) printf("%s", hd_data->log); -#endif - -#endif - -#if 0 - hd_t *hd; - driver_info_t *di; - str_list_t *sl; - - hd = hd_list(hd_data, hw_sys, 1, NULL); - - for(di = hd->driver_info; di; di = di->next) { - if(di->any.type == di_module) { - for(sl = di->module.names; sl; sl = sl->next) printf("%s\n", sl->str); - } - } - -#endif -} - - -void help() -{ - fprintf(stderr, - "Usage: hwinfo [options]\n" - "Probe for hardware.\n" - " --short just a short listing\n" - " --log logfile write info to logfile\n" - " --debug level set debuglevel\n" - " --version show libhd version\n" - " --dump-db n dump hardware data base, 0: external, 1: internal\n" - " --hw_item probe for hw_item\n" - " hw_item is one of:\n" - " all, bios, block, bluetooth, braille, bridge, camera, cdrom, chipcard, cpu,\n" - " disk, dsl, dvb, floppy, framebuffer, gfxcard, hub, ide, isapnp, isdn,\n" - " joystick, keyboard, memory, modem, monitor, mouse, netcard, network,\n" - " partition, pci, pcmcia, pcmcia-ctrl, pppoe, printer, scanner, scsi, smp,\n" - " sound, storage-ctrl, sys, tape, tv, usb, usb-ctrl, vbe, wlan, zip\n\n" - " Note: debug info is shown only in the log file. (If you specify a\n" - " log file the debug level is implicitly set to a reasonable value.)\n" - ); -} - - -/* - * Parse command line options. - */ -int get_probe_flags(int argc, char **argv, hd_data_t *hd_data) -{ - int i, j, k; - char *s, *t; - for(i = 0; i < argc; i++) { - s = argv[i]; - - if(!strcmp(s, ".")) { - return i + 1; - } - - t = "debug="; - if(!strncmp(s, t, strlen(t))) { - hd_data->debug = strtol(s + strlen(t), NULL, 0); - continue; - } - - t = "list="; - if(!strncmp(s, t, strlen(t))) { - list = s + strlen(t); - continue; - } - - t = "list+="; - if(!strncmp(s, t, strlen(t))) { - list = s + strlen(t); - listplus = 1; - continue; - } - - t = "log="; - if(!strncmp(s, t, strlen(t))) { - log_file = s + strlen(t); - continue; - } - - t = "only="; - if(!strncmp(s, t, strlen(t))) { - add_str_list(&hd_data->only, s + strlen(t)); - continue; - } - - t = "root="; - if(!strncmp(s, t, strlen(t))) { - opt.root = s + strlen(t); - continue; - } - - k = 1; - if(*s == '+') - s++; - else if(*s == '-') - k = 0, s++; - - if((j = hd_probe_feature_by_name(s))) { - if(k) - hd_set_probe_feature(hd_data, j); - else - hd_clear_probe_feature(hd_data, j); - continue; - } - - fprintf(stderr, "oops: don't know what to do with \"%s\"\n", s); - return -1; - } - - return argc; -} - -/* - * A simple progress function. - */ -void progress2(char *pos, char *msg) -{ - if(!test) printf("\r%64s\r", ""); - printf("> %s: %s", pos, msg); - if(test) printf("\n"); - fflush(stdout); -} - - -#define INSTALL_INF "/etc/install.inf" - -int braille_install_info(hd_data_t *hd_data) -{ - hd_t *hd; - int ok = 0; - char *braille = NULL; - char *braille_dev = NULL; - str_list_t *sl0, *sl; - FILE *f; - - hd = hd_list(hd_data, hw_braille, 1, NULL); - - if(hd_data->progress) { - printf("\r%64s\r", ""); - fflush(stdout); - } - - for(; hd; hd = hd->next) { - if( - hd->base_class.id == bc_braille && /* is a braille display */ - hd->unix_dev_name && /* and has a device name */ - (braille = hd->device.name) - ) { - braille_dev = hd->unix_dev_name; - ok = 1; - break; - } - } - - if(!ok) return 1; - - printf("found a %s at %s\n", braille, braille_dev); - - sl0 = read_file(INSTALL_INF, 0, 0); - f = fopen(INSTALL_INF, "w"); - if(!f) { - perror(INSTALL_INF); - return 1; - } - - for(sl = sl0; sl; sl = sl->next) { - if( - strstr(sl->str, "Braille:") != sl->str && - strstr(sl->str, "Brailledevice:") != sl->str - ) { - fprintf(f, "%s", sl->str); - } - } - - fprintf(f, "Braille: %s\n", braille); - fprintf(f, "Brailledevice: %s\n", braille_dev); - - fclose(f); - - return 0; -} - - -/* - * get VGA parameter from /proc/cmdline - */ -int get_fb_mode() -{ -#ifndef __PPC__ - FILE *f; - char buf[256], *s, *t; - int i, fb_mode = 0; - - if((f = fopen("/proc/cmdline", "r"))) { - if(fgets(buf, sizeof buf, f)) { - t = buf; - while((s = strsep(&t, " "))) { - if(sscanf(s, "vga=%i", &i) == 1) fb_mode = i; - if(strstr(s, "vga=normal") == s) fb_mode = 0; - } - } - fclose(f); - } - - return fb_mode > 0x10 ? fb_mode : 0; -#else /* __PPC__ */ - /* this is the only valid test for active framebuffer ... */ - FILE *f = NULL; - int fb_mode = 0; - if((f = fopen("/dev/fb", "r"))) { - fb_mode++; - fclose(f); - } - - return fb_mode; -#endif -} - - -/* - * read "x11i=" entry from /proc/cmdline - */ -char *get_x11i() -{ - FILE *f; - char buf[256], *s, *t; - static char x11i[64] = { }; - - if(*x11i) return x11i; - - if((f = fopen("/proc/cmdline", "r"))) { - if(fgets(buf, sizeof buf, f)) { - t = buf; - while((s = strsep(&t, " "))) { - if(sscanf(s, "x11i=%60s", x11i) == 1) break; - } - } - fclose(f); - } - - return x11i; -} - - -/* - * Assumes xf86_ver to be either "3" or "4" (or empty). - */ -char *get_xserver(hd_data_t *hd_data, char **version, char **busid, driver_info_t **x11_driver) -{ - static char display[16]; - static char xf86_ver[2]; - static char id[32]; - char c, *x11i = get_x11i(); - driver_info_t *di; - hd_t *hd; - - *x11_driver = NULL; - - *display = *xf86_ver = *id = c = 0; - *version = xf86_ver; - *busid = id; - - if(x11i) { - if(*x11i == '3' || *x11i == '4') { - c = *x11i; - } - else { - if(*x11i >= 'A' && *x11i <= 'Z') { - c = '3'; - } - if(*x11i >= 'a' && *x11i <= 'z') { - c = '4'; - } - if(c) { - strncpy(display, x11i, sizeof display - 1); - display[sizeof display - 1] = 0; - } - } - } - - if(c) { xf86_ver[0] = c; xf86_ver[1] = 0; } - - hd = hd_get_device_by_idx(hd_data, hd_display_adapter(hd_data)); - - if(hd && hd->bus.id == bus_pci) - sprintf(id, "%d:%d:%d", hd->slot >> 8, hd->slot & 0xff, hd->func); - - if(!hd || *display) return display; - - for(di = hd->driver_info; di; di = di->next) { - if(di->any.type == di_x11 && di->x11.server && di->x11.xf86_ver && !di->x11.x3d) { - if(c == 0 || c == di->x11.xf86_ver[0]) { - xf86_ver[0] = di->x11.xf86_ver[0]; - xf86_ver[1] = 0; - strncpy(display, di->x11.server, sizeof display - 1); - display[sizeof display - 1] = 0; - *x11_driver = di; - break; - } - } - } - - if(*display) return display; - - if(c == 0) c = '4'; /* default to XF 4, if nothing else is known */ - - xf86_ver[0] = c; - xf86_ver[1] = 0; - strcpy(display, c == '3' ? "FBDev" : "fbdev"); - - return display; -} - -int x11_install_info(hd_data_t *hd_data) -{ - hd_t *hd; - driver_info_t *di; - char *x11i; - int fb_mode, kbd_ok = 0; - unsigned yast2_color = 0; - char *xkbrules = NULL, *xkbmodel = NULL, *xkblayout = NULL; - char *xserver, *version, *busid; - driver_info_t *x11_driver; - str_list_t *sl0, *sl; - FILE *f; - - /* get color info */ - hd_set_probe_feature(hd_data, pr_cpu); - hd_set_probe_feature(hd_data, pr_prom); - hd_scan(hd_data); - - x11i = get_x11i(); - fb_mode = get_fb_mode(); - - hd_list(hd_data, hw_display, 1, NULL); - - for(hd = hd_list(hd_data, hw_keyboard, 1, NULL); hd; hd = hd->next) { - kbd_ok = 1; - di = hd->driver_info; - if(di && di->any.type == di_kbd) { - xkbrules = di->kbd.XkbRules; - xkbmodel = di->kbd.XkbModel; - xkblayout = di->kbd.XkbLayout; - break; - } - /* don't free di */ - } - - xserver = get_xserver(hd_data, &version, &busid, &x11_driver); - - switch(hd_mac_color(hd_data)) { - case 0x01: - yast2_color = 0x5a4add; - break; - case 0x04: - yast2_color = 0x32cd32; - break; - case 0x05: - yast2_color = 0xff7f50; - break; - case 0x07: - yast2_color = 0x000000; - break; - case 0xff: - yast2_color = 0x7f7f7f; - break; - } - - if(hd_data->progress) { - printf("\r%64s\r", ""); - fflush(stdout); - } - - sl0 = read_file(INSTALL_INF, 0, 0); - f = fopen(INSTALL_INF, "w"); - if(!f) { - perror(INSTALL_INF); - return 1; - } - - for(sl = sl0; sl; sl = sl->next) { - if( - strstr(sl->str, "Framebuffer:") != sl->str && - strstr(sl->str, "XServer:") != sl->str && - strstr(sl->str, "XVersion:") != sl->str && - strstr(sl->str, "XBusID:") != sl->str && - strstr(sl->str, "X11i:") != sl->str && - strstr(sl->str, "Keyboard:") != sl->str && - strstr(sl->str, "XkbRules:") != sl->str && - strstr(sl->str, "XkbModel:") != sl->str && - strstr(sl->str, "XkbLayout:") != sl->str && - strstr(sl->str, "XF86Ext:") != sl->str && - strstr(sl->str, "XF86Raw:") != sl->str - ) { - fprintf(f, "%s", sl->str); - } - } - - fprintf(f, "Keyboard: %d\n", kbd_ok); - if(fb_mode) fprintf(f, "Framebuffer: 0x%04x\n", fb_mode); - if(x11i) fprintf(f, "X11i: %s\n", x11i); - if(xserver && *xserver) { - fprintf(f, "XServer: %s\n", xserver); - if(*version) fprintf(f, "XVersion: %s\n", version); - if(*busid) fprintf(f, "XBusID: %s\n", busid); - } - if(xkbrules && *xkbrules) fprintf(f, "XkbRules: %s\n", xkbrules); - if(xkbmodel && *xkbmodel) fprintf(f, "XkbModel: %s\n", xkbmodel); - if(xkblayout && *xkblayout) fprintf(f, "XkbLayout: %s\n", xkblayout); - - if(x11_driver) { - for(sl = x11_driver->x11.extensions; sl; sl = sl->next) { - if(*sl->str) fprintf(f, "XF86Ext: Load\t\t\"%s\"\n", sl->str); - } - for(sl = x11_driver->x11.options; sl; sl = sl->next) { - if(*sl->str) fprintf(f, "XF86Raw: Option\t\"%s\"\n", sl->str); - } - for(sl = x11_driver->x11.raw; sl; sl = sl->next) { - if(*sl->str) fprintf(f, "XF86Raw: %s\n", sl->str); - } - } - - fclose(f); - - return 0; -} - - -char *xserver3map[] = -{ -#ifdef __i386__ - "VGA16", "xvga16", - "RUSH", "xrush", -#endif -#if defined(__i386__) || defined(__alpha__) || defined(__ia64__) - "SVGA", "xsvga", - "3DLABS", "xglint", -#endif -#if defined(__i386__) || defined(__alpha__) - "MACH64", "xmach64", - "P9000", "xp9k", - "S3", "xs3", -#endif -#ifdef __alpha__ - "TGA", "xtga", -#endif -#ifdef __sparc__ - "SUNMONO", "xsunmono", - "SUN", "xsun", - "SUN24", "xsun24", -#endif -#if 0 - "VMWARE", "xvmware", -#endif - 0, 0 -}; - - -void dump_packages(hd_data_t *hd_data) -{ - str_list_t *sl; - int i; - - hd_data->progress = NULL; - hd_scan(hd_data); - - sl = get_hddb_packages(hd_data); - - for(i = 0; xserver3map[i]; i += 2) { - if (!search_str_list(sl, xserver3map[i + 1])) - add_str_list(&sl, new_str(xserver3map[i + 1])); - } - - for(; sl; sl = sl->next) { - printf("%s\n", sl->str); - } -} - - -struct x11pack { - struct x11pack *next; - char *pack; -}; - -int oem_install_info(hd_data_t *hd_data) -{ - hd_t *hd; - str_list_t *str; - str_list_t *x11packs = 0; - str_list_t *sl0, *sl; - FILE *f; - int pcmcia, i; - - driver_info_x11_t *di, *drvinfo; - - hd_set_probe_feature(hd_data, pr_pci); - hd_scan(hd_data); - pcmcia = hd_has_pcmcia(hd_data); - - for(hd = hd_list(hd_data, hw_display, 1, NULL); hd; hd = hd->next) { - for(str = hd->requires; str; str = str->next) { - if(!search_str_list(x11packs, str->str)) { - add_str_list(&x11packs, str->str); - } - } - drvinfo = (driver_info_x11_t *) hd->driver_info; - for (di = drvinfo; di; di = (driver_info_x11_t *)di->next) { - if (di->type != di_x11) - continue; - if (di->xf86_ver[0] == '3') { - char *server = di->server; - if (server) { - for (i = 0; xserver3map[i]; i += 2) - if (!strcmp(xserver3map[i], server)) - break; - if (xserver3map[i]) - if (!search_str_list(x11packs, xserver3map[i + 1])) - add_str_list(&x11packs, xserver3map[i + 1]); - } - } - } - } - - if(hd_data->progress) { - printf("\r%64s\r", ""); - fflush(stdout); - } - - sl0 = read_file(INSTALL_INF, 0, 0); - f = fopen(INSTALL_INF, "w"); - if(!f) { - perror(INSTALL_INF); - return 1; - } - for(sl = sl0; sl; sl = sl->next) { - if( - strstr(sl->str, "X11Packages:") != sl->str && - strstr(sl->str, "Pcmcia:") != sl->str - ) { - fprintf(f, "%s", sl->str); - } - } - if (x11packs) { - fprintf(f, "X11Packages: "); - for (sl = x11packs; sl; sl = sl->next) { - if (sl != x11packs) - fputc(',', f); - fprintf(f, "%s", sl->str); - } - fputc('\n', f); - } - if (pcmcia) - fprintf(f, "Pcmcia: %d\n", pcmcia); - fclose(f); - return 0; -} - - -void dump_db_raw(hd_data_t *hd_data) -{ - hd_data->progress = NULL; - hd_clear_probe_feature(hd_data, pr_all); - hd_scan(hd_data); - - if(opt.db_idx >= sizeof hd_data->hddb2 / sizeof *hd_data->hddb2) return; - - hddb_dump_raw(hd_data->hddb2[opt.db_idx], stdout); -} - - -void dump_db(hd_data_t *hd_data) -{ - hd_data->progress = NULL; - hd_clear_probe_feature(hd_data, pr_all); - hd_scan(hd_data); - - if(opt.db_idx >= sizeof hd_data->hddb2 / sizeof *hd_data->hddb2) return; - - hddb_dump(hd_data->hddb2[opt.db_idx], stdout); -} - - -void do_chroot(hd_data_t *hd_data, char *dir) -{ - int i; - - i = chroot(dir); - ADD2LOG("chroot %s: %s\n", dir, i ? strerror(errno) : "ok"); - - if(!i) chdir("/"); -} - - -void ask_db(hd_data_t *hd_data, char *query) -{ - hd_t *hd; - driver_info_t *di; - str_list_t *sl, *query_sl; - unsigned tag = 0, u, cnt; - char buf[256]; - - setenv("hwprobe", "-all", 1); - hd_scan(hd_data); - - hd = add_hd_entry(hd_data, __LINE__, 0); - - query_sl = hd_split(' ', query); - - for(sl = query_sl; sl; sl = sl->next) { - if(!strcmp(sl->str, "pci")) { tag = TAG_PCI; continue; } - if(!strcmp(sl->str, "usb")) { tag = TAG_USB; continue; } - if(!strcmp(sl->str, "pnp")) { tag = TAG_EISA; continue; } - if(!strcmp(sl->str, "isapnp")) { tag = TAG_EISA; continue; } - if(!strcmp(sl->str, "special")) { tag = TAG_SPECIAL; continue; } - if(!strcmp(sl->str, "pcmcia")) { tag = TAG_PCMCIA; continue; } - - if(sscanf(sl->str, "class=%i%n", &u, &cnt) >= 1 && !sl->str[cnt]) { - hd->base_class.id = u >> 16; - hd->sub_class.id = (u >> 8) & 0xff; - hd->prog_if.id = u & 0xff; - continue; - } - - if(sscanf(sl->str, "vendor=%i%n", &u, &cnt) >= 1 && !sl->str[cnt]) { - hd->vendor.id = MAKE_ID(tag, u); - continue; - } - - if(sscanf(sl->str, "vendor=%3s%n", buf, &cnt) >= 1 && !sl->str[cnt]) { - u = name2eisa_id(buf); - if(u) hd->vendor.id = u; - tag = TAG_EISA; - continue; - } - - if(sscanf(sl->str, "device=%i%n", &u, &cnt) >= 1 && !sl->str[cnt]) { - hd->device.id = MAKE_ID(tag, u); - continue; - } - - if(sscanf(sl->str, "subvendor=%i%n", &u, &cnt) >= 1 && !sl->str[cnt]) { - hd->sub_vendor.id = MAKE_ID(tag, u); - continue; - } - - if(sscanf(sl->str, "subvendor=%3s%n", buf, &cnt) >= 1 && !sl->str[cnt]) { - u = name2eisa_id(buf); - if(u) hd->sub_vendor.id = u; - tag = TAG_EISA; - continue; - } - - if(sscanf(sl->str, "subdevice=%i%n", &u, &cnt) >= 1 && !sl->str[cnt]) { - hd->sub_device.id = MAKE_ID(tag, u); - continue; - } - - if(sscanf(sl->str, "revision=%i%n", &u, &cnt) >= 1 && !sl->str[cnt]) { - hd->revision.id = u; - continue; - } - - if(sscanf(sl->str, "serial=%255s%n", buf, &cnt) >= 1 && !sl->str[cnt]) { - hd->serial = new_str(buf); - continue; - } - - } - - free_str_list(query_sl); - - hddb_add_info(hd_data, hd); - - for(di = hd->driver_info; di; di = di->next) { - if(di->any.type == di_module && di->module.modprobe) { - for(sl = di->module.names; sl; sl = sl->next) { - printf("%s%c", sl->str, sl->next ? ' ' : '\n'); - } - } - } -} - - -int is_same_block_dev(hd_t *hd1, hd_t *hd2) -{ - if(!hd1 || !hd2 || hd1 == hd2) return 0; - - if( - hd1->base_class.id != hd2->base_class.id || - hd1->sub_class.id != hd2->sub_class.id - ) return 0; - - if( - !hd1->model || - !hd2->model || - strcmp(hd1->model, hd2->model) - ) return 0; - - if(hd1->revision.name || hd2->revision.name) { - if( - !hd1->revision.name || - !hd2->revision.name || - strcmp(hd1->revision.name, hd2->revision.name) - ) return 0; - } - - if(hd1->serial || hd2->serial) { - if( - !hd1->serial || - !hd2->serial || - strcmp(hd1->serial, hd2->serial) - ) return 0; - } - - return 1; -} - - -hd_t *get_same_block_dev(hd_t *hd_list, hd_t *hd, hd_status_value_t status) -{ - for(; hd_list; hd_list = hd_list->next) { - if(hd_list->status.available != status) continue; - if(is_same_block_dev(hd_list, hd)) return hd_list; - } - - return NULL; -} - - -void get_mapping(hd_data_t *hd_data) -{ - hd_t *hd_manual, *hd, *hd2; - struct { - hd_t *hd; - unsigned unknown:1; - } map[256] = { }; - unsigned maps = 0, u; - int broken, first; - hd_hw_item_t hw_items[] = { hw_disk, hw_cdrom, 0 }; - - hd_data->progress = NULL; - - hd_data->flags.list_all = 1; - - hd_manual = hd_list2(hd_data, hw_items, 1); - for(hd = hd_manual; hd && maps < sizeof map / sizeof *map; hd = hd->next) { - if(!hd->unix_dev_name) continue; - - if(hd->status.available == status_yes) { - /* check if we already have an active device with the same name */ - for(broken = u = 0; u < maps; u++) { - if(!strcmp(map[u].hd->unix_dev_name, hd->unix_dev_name)) { - map[u].unknown = 1; - broken = 1; - } - } - if(broken) continue; - - /* ensure we really can tell different devices apart */ - if(get_same_block_dev(hd_manual, hd, status_yes)) { - map[maps].hd = hd; - map[maps].unknown = 1; - } - else { - map[maps].hd = hd; - } - maps++; - } - } - - /* ok, we have a list of all new devs */ - - for(u = 0; u < maps; u++) { - if(map[u].unknown) { - printf("%s\n", map[u].hd->unix_dev_name); - } - else { - first = 1; - for(hd2 = hd_manual; (hd2 = get_same_block_dev(hd2, map[u].hd, status_no)); hd2 = hd2->next) { - if(hd2->unix_dev_name && strcmp(map[u].hd->unix_dev_name, hd2->unix_dev_name)) { - printf("%s\t%s", first ? map[u].hd->unix_dev_name : "", hd2->unix_dev_name); - first = 0; - } - } - if(!first) printf("\n"); - } - - } - -} - diff --git a/src/hwinfo/hwscan.c b/src/hwinfo/hwscan.c deleted file mode 100644 index 75e9a79218..0000000000 --- a/src/hwinfo/hwscan.c +++ /dev/null @@ -1,625 +0,0 @@ -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" - -struct option options[] = { - { "help", 0, NULL, 'h' }, - { "verbose", 0, NULL, 'v' }, - { "version", 0, NULL, 400 }, - { "show", 1, NULL, 500 }, - { "list", 0, NULL, 501 }, - { "cfg", 1, NULL, 502 }, - { "avail", 1, NULL, 503 }, - { "need", 1, NULL, 504 }, - { "new", 0, NULL, 505 }, - { "fast", 0, NULL, 506 }, - { "silent", 0, NULL, 507 }, - { "boot", 0, NULL, 508 }, - { "active", 1, NULL, 509 }, - { "only", 1, NULL, 510 }, - { "sys", 0, NULL, 1000 + hw_sys }, - { "cpu", 0, NULL, 1000 + hw_cpu }, - { "keyboard", 0, NULL, 1000 + hw_keyboard }, - { "braille", 0, NULL, 1000 + hw_braille }, - { "mouse", 0, NULL, 1000 + hw_mouse }, - { "joystick", 0, NULL, 1000 + hw_joystick }, - { "printer", 0, NULL, 1000 + hw_printer }, - { "scanner", 0, NULL, 1000 + hw_scanner }, - { "chipcard", 0, NULL, 1000 + hw_chipcard }, - { "monitor", 0, NULL, 1000 + hw_monitor }, - { "tv", 0, NULL, 1000 + hw_tv }, - { "gfxcard", 0, NULL, 1000 + hw_display }, - { "framebuffer", 0, NULL, 1000 + hw_framebuffer }, - { "camera", 0, NULL, 1000 + hw_camera }, - { "sound", 0, NULL, 1000 + hw_sound }, - { "storage-ctrl", 0, NULL, 1000 + hw_storage_ctrl }, - { "storage_ctrl", 0, NULL, 1000 + hw_storage_ctrl }, - { "netcard", 0, NULL, 1000 + hw_network_ctrl }, - { "network-ctrl", 0, NULL, 1000 + hw_network_ctrl }, - { "network_ctrl", 0, NULL, 1000 + hw_network_ctrl }, - { "isdn", 0, NULL, 1000 + hw_isdn }, - { "modem", 0, NULL, 1000 + hw_modem }, - { "network", 0, NULL, 1000 + hw_network }, - { "disk", 0, NULL, 1000 + hw_disk }, - { "partition", 0, NULL, 1000 + hw_partition }, - { "cdrom", 0, NULL, 1000 + hw_cdrom }, - { "floppy", 0, NULL, 1000 + hw_floppy }, - { "update", 0, NULL, 1000 + hw_manual }, - { "usb-ctrl", 0, NULL, 1000 + hw_usb_ctrl }, - { "usb_ctrl", 0, NULL, 1000 + hw_usb_ctrl }, - { "usb", 0, NULL, 1000 + hw_usb }, - { "bios", 0, NULL, 1000 + hw_bios }, - { "pci", 0, NULL, 1000 + hw_pci }, - { "isapnp", 0, NULL, 1000 + hw_isapnp }, - { "bridge", 0, NULL, 1000 + hw_bridge }, - { "hub", 0, NULL, 1000 + hw_hub }, - { "scsi", 0, NULL, 1000 + hw_scsi }, - { "ide", 0, NULL, 1000 + hw_ide }, - { "memory", 0, NULL, 1000 + hw_memory }, - { "dvb", 0, NULL, 1000 + hw_dvb }, - { "pcmcia", 0, NULL, 1000 + hw_pcmcia }, - { "pcmcia_ctrl", 0, NULL, 1000 + hw_pcmcia_ctrl }, - { "ieee1394", 0, NULL, 1000 + hw_ieee1394 }, - { "firewire", 0, NULL, 1000 + hw_ieee1394 }, - { "ieee1394_ctrl", 0, NULL, 1000 + hw_ieee1394_ctrl }, - { "firewire_ctrl", 0, NULL, 1000 + hw_ieee1394_ctrl }, - { "hotplug", 0, NULL, 1000 + hw_hotplug }, - { "hotplug_ctrl", 0, NULL, 1000 + hw_hotplug_ctrl }, - { "zip", 0, NULL, 1000 + hw_zip }, - { "pppoe", 0, NULL, 1000 + hw_pppoe }, - { "dsl", 0, NULL, 1000 + hw_dsl }, - { "wlan", 0, NULL, 1000 + hw_wlan }, - { "block", 0, NULL, 1000 + hw_block }, - { "tape", 0, NULL, 1000 + hw_tape }, - { "vbe", 0, NULL, 1000 + hw_vbe }, - { "bluetooth", 0, NULL, 1000 + hw_bluetooth }, - { "all", 0, NULL, 1000 + hw_all }, - { } -}; - -int verbose = 0; -hd_hw_item_t scan_item[100] = { }; -unsigned scan_items = 0; -int found_items = 0; - -struct { - unsigned show:1; - unsigned scan:1; - unsigned list:1; - unsigned config_cfg:1; - unsigned config_avail:1; - unsigned config_need:1; - unsigned config_active:1; - unsigned new:1; - unsigned fast:1; - unsigned silent:1; - unsigned boot:1; - str_list_t *only; -} opt; - -void help(void); -int do_scan(hd_hw_item_t *items); -int do_show(char *id); -int do_list(hd_hw_item_t *items); -int do_config(int type, char *val, char *id); -int fast_ok(hd_hw_item_t *items); -int has_item(hd_hw_item_t *items, hd_hw_item_t item); -int has_hw_class(hd_t *hd, hd_hw_item_t *items); - - -int main(int argc, char **argv) -{ - int rc = 0; - -#ifndef LIBHD_TINY - - char *id = NULL; - char *config_cfg = NULL; - char *config_avail = NULL; - char *config_need = NULL; - char *config_active = NULL; - int i; - int ok = 0; - FILE *f; - - opterr = 0; - - while((i = getopt_long(argc, argv, "hv", options, NULL)) != -1) { - switch(i) { - case 'v': - verbose++; - break; - - case 400: - printf("%s\n", hd_version()); - ok = 1; - break; - - case 500: - opt.show = 1; - id = optarg; - break; - - case 501: - opt.list = 1; - break; - - case 502: - opt.config_cfg = 1; - config_cfg = optarg; - break; - - case 503: - opt.config_avail = 1; - config_avail = optarg; - break; - - case 504: - opt.config_need = 1; - config_need = optarg; - break; - - case 505: - opt.new = 1; - break; - - case 506: - opt.fast = 1; - break; - - case 507: - opt.silent = 1; - break; - - case 508: - opt.boot = 1; - break; - - case 509: - opt.config_active = 1; - config_active = optarg; - break; - - case 510: - if(*optarg) add_str_list(&opt.only, optarg); - break; - - case 1000 ... 1100: - opt.scan = 1; - if(scan_items + 1 < sizeof scan_item / sizeof *scan_item) { - scan_item[scan_items++] = i - 1000; - } - break; - - default: - help(); - return 1; - } - } - - scan_item[scan_items] = 0; - - if(opt.scan && !opt.list) { - if(argv[optind] || !scan_items) return help(), 1; - rc = do_scan(scan_item); - if(found_items) { - unlink(HARDWARE_DIR "/.update"); /* the old file */ - unlink(HARDWARE_UNIQUE_KEYS "/.update"); /* so we trigger a rescan */ - if((f = fopen(HARDWARE_UNIQUE_KEYS "/.update", "a"))) fclose(f); - } - ok = 1; - } - - if(opt.show) { - do_show(id); - ok = 1; - } - - if(opt.list) { - do_list(scan_item); - ok = 1; - } - - if(opt.config_cfg) { - if(!argv[optind]) return help(), 1; - do_config(1, config_cfg, argv[optind]); - ok = 1; - } - - if(opt.config_avail) { - if(!argv[optind]) return help(), 1; - do_config(2, config_avail, argv[optind]); - ok = 1; - } - - if(opt.config_need) { - if(!argv[optind]) return help(), 1; - do_config(3, config_need, argv[optind]); - ok = 1; - } - - if(opt.config_active) { - if(!argv[optind]) return help(), 1; - do_config(4, config_active, argv[optind]); - ok = 1; - } - - if(!ok) help(); - -#endif /* !defined(LIBHD_TINY) */ - - return rc; -} - -void help() -{ - fprintf(stderr, - "Usage: hwscan [options]\n" - "Show information about currently known hardware.\n" - " --list show list of known hardware\n" - " --version show libhd version\n" - " --silent don't show hardware config changes\n" - " --boot run only if we haven't been disabled via 'hwprobe=-scan'\n" - " --cfg=state id change 'configured' status; id is one of the\n" - " ids from 'hwscan --list'\n" - " state is one of new, no, yes\n" - " --avail=state id change 'available' status\n" - " --need=state id change 'needed' status\n" - " --active=state id change 'active' status\n" - " --hw_item probe for hw_item and update status info\n" - " hw_item is one of:\n" - " all, bios, block, bluetooth, braille, bridge, camera, cdrom, chipcard, cpu,\n" - " disk, dsl, dvb, floppy, framebuffer, gfxcard, hub, ide, isapnp, isdn,\n" - " joystick, keyboard, memory, modem, monitor, mouse, netcard, network,\n" - " partition, pci, pcmcia, pcmcia-ctrl, pppoe, printer, scanner, scsi, smp,\n" - " sound, storage-ctrl, sys, tape, tv, usb, usb-ctrl, vbe, wlan, zip\n" - ); -} - -#ifndef LIBHD_TINY - -int do_scan(hd_hw_item_t *items) -{ - int run_config = 0; - hd_status_t status = { }; - hd_data_t *hd_data; - hd_t *hd, *hd1; - int err = 0; - - if(opt.fast) opt.fast = fast_ok(items); - - hd_data = calloc(1, sizeof *hd_data); - - if(opt.boot) { - /* look if we have been disabled */ - hd_clear_probe_feature(hd_data, pr_all); - hd_scan(hd_data); - hd_set_probe_feature(hd_data, pr_scan); - if(!hd_probe_feature(hd_data, pr_scan)) { - hd_free_hd_data(hd_data); - free(hd_data); - return 0; - } - } - - hd_data->only = opt.only; - opt.only = NULL; - - hd_data->flags.list_all = 1; - hd_data->flags.fast = opt.fast; - - hd = hd_list2(hd_data, items, 1); - - if(hd) found_items = 1; - - for(hd1 = hd; hd1; hd1 = hd1->next) { - err = hd_write_config(hd_data, hd1); - if(verbose >= 2) { - printf( - "write=%d %s: (cfg=%s, avail=%s, need=%s, active=%s", - err, - hd1->unique_id, - hd_status_value_name(hd1->status.configured), - hd_status_value_name(hd1->status.available), - hd_status_value_name(hd1->status.needed), - hd_status_value_name(hd1->status.active) - ); - if(hd1->unix_dev_name) { - printf(", dev=%s", hd1->unix_dev_name); - } - printf( - ") %s\n", - hd1->model - ); - - } - if(err) break; - } - - if(err) { - fprintf(stderr, - "Error writing configuration for %s (%s)\n", - hd1->unique_id, - hd1->model - ); - exit(1); - } - - hd = hd_free_hd_list(hd); - - if(opt.new) { - status.configured = status_new; - } - else { - status.reconfig = status_yes; - } - - hd = hd_list_with_status2(hd_data, items, status); - if(hd) run_config = 1; - - if(verbose) { - for(hd1 = hd; hd1; hd1 = hd1->next) { - printf( - "%s: (cfg=%s, avail=%s, need=%s, active=%s", - hd1->unique_id, - hd_status_value_name(hd1->status.configured), - hd_status_value_name(hd1->status.available), - hd_status_value_name(hd1->status.needed), - hd_status_value_name(hd1->status.active) - ); - if(hd1->unix_dev_name) { - printf(", dev=%s", hd1->unix_dev_name); - } - printf( - ") %s\n", - hd1->model - ); - } - } - else if(!opt.silent) { - for(hd1 = hd; hd1; hd1 = hd1->next) printf("%s\n", hd1->unique_id); - } - - hd = hd_free_hd_list(hd); - - hd_free_hd_data(hd_data); - free(hd_data); - - return run_config ^ 1; -} - - -int do_show(char *id) -{ - hd_data_t *hd_data; - hd_t *hd; - - hd_data = calloc(1, sizeof *hd_data); - - if ( id[0] == '/' ){ - int nr=0; - char *_id = 0; - hd_t *hd_manual; - - hd_manual = hd_list(hd_data, hw_manual, 1, NULL); - for(hd = hd_manual; hd; hd = hd->next) { - if(hd->status.available != status_yes) continue; - if(!search_str_list(hd->unix_dev_names, id)) continue; - _id = hd->unique_id; - nr++; - } - - if ( nr == 1 ) /* > 1 means our database is not okay */ - hd = hd_read_config(hd_data, _id); - }else - hd = hd_read_config(hd_data, id); - - if(hd) { - hd_data->debug = -1; - hd_dump_entry(hd_data, hd, stdout); - hd = hd_free_hd_list(hd); - } - else { - printf("no such hardware item: %s\n", id); - } - - hd_free_hd_data(hd_data); - free(hd_data); - - return 0; -} - - -int do_list(hd_hw_item_t *items) -{ - hd_data_t *hd_data; - hd_t *hd, *hd_manual; - char *s; - char status[64]; - int i; - - hd_data = calloc(1, sizeof *hd_data); - - hd_manual = hd_list(hd_data, hw_manual, 1, NULL); - - for(hd = hd_manual; hd; hd = hd->next) { - if(opt.scan && ! has_hw_class(hd, items)) continue; - - strcpy(status, "("); - - i = 0; - if(hd->status.configured && (s = hd_status_value_name(hd->status.configured))) { - sprintf(status + strlen(status), "%scfg=%s", i ? ", " : "", s); - i++; - } - - if(hd->status.available && (s = hd_status_value_name(hd->status.available))) { - sprintf(status + strlen(status), "%savail=%s", i ? ", " : "", s); - i++; - } - - if(hd->status.needed && (s = hd_status_value_name(hd->status.needed))) { - sprintf(status + strlen(status), "%sneed=%s", i ? ", " : "", s); - i++; - } - - if(hd->status.active && (s = hd_status_value_name(hd->status.active))) { - sprintf(status + strlen(status), "%sactive=%s", i ? ", " : "", s); - i++; - } - - strcat(status, ")"); - - s = hd_hw_item_name(hd->hw_class); - if(!s) s = "???"; - - printf("%s: %-32s %-16s %s\n", hd->unique_id, status, s, hd->model); - if(hd->config_string) { - printf(" configured as: \"%s\"\n", hd->config_string); - } - } - - hd_free_hd_list(hd_manual); - - hd_free_hd_data(hd_data); - free(hd_data); - - return 0; -} - - -int do_config(int type, char *val, char *id) -{ - hd_data_t *hd_data; - hd_t *hd; - hd_status_value_t status = 0; - int i; - char *s; - - hd_data = calloc(1, sizeof *hd_data); - - if ( id[0] == '/' ){ - int nr=0; - char *_id = 0; - hd_t *hd_manual; - - hd_manual = hd_list(hd_data, hw_manual, 1, NULL); - for(hd = hd_manual; hd; hd = hd->next) { - if(hd->status.available != status_yes) continue; - if(!search_str_list(hd->unix_dev_names, id)) continue; - _id = hd->unique_id; - nr++; - } - if ( nr == 1 ) - hd = hd_read_config(hd_data, _id); - }else - hd = hd_read_config(hd_data, id); - - if(hd) { - for(i = 1; i < 8; i++) { - s = hd_status_value_name(i); - if(s && !strcmp(val, s)) { - status = i; - break; - } - } - if(!status) { - printf("invalid status: %s\n", val); - } - else { - switch(type) { - case 1: - hd->status.configured = status; - break; - - case 2: - hd->status.available = status; - break; - - case 3: - hd->status.needed = status; - break; - - case 4: - hd->status.active = status; - break; - } - hd_write_config(hd_data, hd); - } - hd = hd_free_hd_list(hd); - } - else { - printf("no such hardware item: %s\n", id); - } - - hd_free_hd_data(hd_data); - free(hd_data); - - return 0; -} - - -/* - * Check whether a 'fast' scan would suffice to re-check the presence - * of all known hardware. - */ -int fast_ok(hd_hw_item_t *items) -{ - hd_data_t *hd_data; - hd_t *hd, *hd1; - int ok = 1; - - if(!has_item(items, hw_mouse) && !has_item(items, hw_storage_ctrl)) { - return 1; - } - - hd_data = calloc(1, sizeof *hd_data); - - hd_data->flags.list_all = 1; - - hd = hd_list(hd_data, hw_manual, 1, NULL); - - for(hd1 = hd; hd1; hd1 = hd1->next) { - /* serial mice */ - if(hd1->hw_class == hw_mouse && hd1->bus.id == bus_serial) { - ok = 0; - break; - } - /* parallel zip */ - if(hd1->hw_class == hw_storage_ctrl && hd1->bus.id == bus_parallel) { - ok = 0; - break; - } - } - - hd_free_hd_data(hd_data); - free(hd_data); - - return ok; -} - - -/* check if item is in items */ -int has_item(hd_hw_item_t *items, hd_hw_item_t item) -{ - while(*items) if(*items++ == item) return 1; - - return 0; -} - - -/* check if one of items is in hw_class */ -int has_hw_class(hd_t *hd, hd_hw_item_t *items) -{ - while(*items) if(hd_is_hw_class(hd, *items++)) return 1; - - return 0; -} - - -#endif /* !defined(LIBHD_TINY) */ diff --git a/src/hwinfo/hwscand.c b/src/hwinfo/hwscand.c deleted file mode 100644 index becc07dae5..0000000000 --- a/src/hwinfo/hwscand.c +++ /dev/null @@ -1,257 +0,0 @@ - -/* hwscan front end - Copyright 2004 by SUSE () */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "init_message.h" - -#define TIMEOUT 2 -#define LONG_TIMEOUT 0 -#define BUFFERS 1024 - -int main( int argc, char **argv ) -{ - int ret, i; - key_t key = KEY; - int msgid; - int mode = 0; - int dev_nr = 0; - int lines = 0; - int block, usb, firewire, pci; - int dev_last_state[BUFFERS]; - int dev_counter[BUFFERS]; - char * command_device[NR_COMMANDS][BUFFERS]; - time_t command_device_last[NR_COMMANDS][BUFFERS]; - time_t last; - char **commands; - char **devices; - char buffer[32]; - message m; - - // are we running already, maybe ? - { - do { - ssize_t r; - char b[1024]; - char link[1024]; - int fd = open( PID_FILE, O_RDONLY ); - if ( fd >= 0 && (r=read(fd,b,1023)) > 0 ){ - close(fd); - b[r]='\0'; - snprintf(link, 1023, "/proc/%s/exe", b); - if ( (r=readlink( link, b, 1023 )) > 0 ){ - b[r]='\0'; - if ( r<8 ) - unlink(PID_FILE); - else if ( strcmp("/hwscand", b+strlen(b)-8) ) - unlink(PID_FILE); - else - exit(1); - }else - unlink(PID_FILE); - }else if ( fd >= 0 ) - unlink(PID_FILE); - } while ( 0 > (ret = open( PID_FILE, O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR ) ) ); - sprintf(buffer, "%d", getpid()); - if ( ret < 0 || write(ret,buffer,strlen(buffer)) <= 0 ){ - perror("hwscand: unable to write pid file "PID_FILE); - exit(1); - } - close(ret); - } - - // initialize ... - for ( i=0; i= 0 ){ - char *p = m.mtext; - - if ( p == 0 ){ - fprintf( stderr, "hwscand: error, zero sized message\n" ); - }else{ - if ( p[0] == 'S' && strlen(p) > 1 ){ - // scan calls - char z[2]; - int c; - z[0] = *(p+1); - z[1] = '\0'; - c = atoi(z); - if ( c < NR_COMMANDS ){ - if ( ! command_with_device[c] ){ - last = time(0L); - if ( LONG_TIMEOUT+command_device_last[c][0] < time(0L) ) - command_device_last[c][0] = 0; - }else - for ( i=0; i 5 ){ - int fd; - char buf[MESSAGE_BUFFER]; - dev_counter[i] = 0; - fd = open( devices[i], O_RDONLY ); - strcpy( buf, "/sbin/hwscan --fast --partition --only="); - strcat( buf, devices[i] ); - if ( fd < 0 ){ - if ( dev_last_state[i] ) - system(buf); - dev_last_state[i] = 0; - }else{ - if ( dev_last_state[i] == 0) - system(buf); - dev_last_state[i] = 1; - close(fd); - } - } - } - } - - if ( last && (last+TIMEOUT <= time(0L)) ){ - char buf[MESSAGE_BUFFER * NR_COMMANDS]; - int run_really = 0; - - last=0; - strcpy( buf, "/sbin/hwscan --fast --boot --silent" ); - for ( i=0; i) */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "init_message.h" - -int main( int argc, char **argv ) -{ - int ret; - unsigned short i; - key_t key = KEY; - int msgid; - message m; - char *device = argv[2]; - - if ( argc < 2 ){ - fprintf( stderr, "help: hwscanqueue hwscan-commands\n" ); - fprintf( stderr, "help: commands:\n" ); - for ( i=0; i=NR_COMMANDS ){ - fprintf(stderr, "unknown command\n"); - exit(1); - } - }else - exit(1); - - if ( (msgid = msgget(key, IPC_CREAT | 0600)) < 0 ){ - perror("unable to init."); - exit(1); - } - m.mtype = 1; - ret = msgsnd( msgid, &m, MESSAGE_BUFFER, IPC_NOWAIT); -#if DEBUG - printf("SEND %s, return %d\n", m.mtext, ret ); -#endif - - if ( ret < 0 ) - perror("message send failed"); - else{ - // success ... start hwscand, if it is not yet running - ssize_t r; - char buffer[1024]; - char link[1024]; - int fd = open( PID_FILE, O_RDONLY ); - if ( fd >= 0 && (r=read(fd,buffer,1023)) > 0 ){ - close(fd); - buffer[r]='\0'; - snprintf(link, 1023, "/proc/%s/exe", buffer); - if ( (r=readlink( link, buffer, 1023 )) > 0 ){ - buffer[r]='\0'; - if ( r<8 ) - fd=-1; - else if ( strcmp("/hwscand", buffer+strlen(buffer)-8) ) - fd=-1; - }else - fd=-1; - }else - fd=-1; - - if ( fd < 0 ){ - pid_t pid; - signal(SIGCHLD,SIG_IGN); - pid=fork(); - if (pid==0){ - /* Change directory to allow clean shut-down */ - chdir("/"); - /* Close std fds */ - close(0); - close(1); - close(2); - /* Start hwscand */ - execve("/sbin/hwscand", 0, 0); - } - } - } - - exit(ret); -} - diff --git a/src/hwinfo/init_message.h b/src/hwinfo/init_message.h deleted file mode 100644 index 1e3243c4e2..0000000000 --- a/src/hwinfo/init_message.h +++ /dev/null @@ -1,17 +0,0 @@ -#define MESSAGE_BUFFER 1024 -#define KEY 8024; -#define PID_FILE "/var/run/hwscand.pid" - -// WARNING NEEDS TO BE <= 9 -#define NR_COMMANDS 7 -// WARNING NEEDS TO BE <= 9 -static const char *command_args[] = { "block", "partition", "usb", "firewire", "pci", "pcmcia", "bluetooth" }; -static const int command_with_device[] = { 1, 1, 0, 0, 0, 0, 0 }; - -typedef struct msgbuf { - long mtype; - char mtext[MESSAGE_BUFFER+1]; -} message; - -#define DEBUG 0 - diff --git a/src/hwinfo/scripts/mci b/src/hwinfo/scripts/mci deleted file mode 100755 index b6443ed059..0000000000 --- a/src/hwinfo/scripts/mci +++ /dev/null @@ -1,113 +0,0 @@ -#! /usr/bin/perl - -sub addr2line; - -$list = shift; -$bin = shift; -$ofs = shift; - -die "usage: mci data_file binary\n" unless -f($list); - -open F, $list; - -while() { - if(/^;\s*(.+?)\s*$/) { - @i = split ' ', $1; - $i[0] = sprintf "%-24s", $i[0]; - $i[1] = addr2line $i[1]; - print "; ", join("\t", @i), "\n"; - next - } - @i = split; - - die "oops, format error" if @i > 3; - - if(@i == 1) { - if($i[0] =~ /^>(\S+)/) { - unshift @funcs, $1; - } - elsif($i[0] =~ /<(\S+)/) { - if($funcs[0] eq $1) { - shift @funcs - } - else { - die "oops, strange data (line $.)\n" - } - } - else { - die "oops, format error" - } - } - else { - $func = $i[0]; - $addr = $i[1]; - $size = undef; - $size = @i == 2 ? undef : $i[2]; - - if(defined $size) { - if(exists $mem{$addr}) { - $x = addr2line $func; - $y = addr2line ${$mem{$addr}}[1]; - print "malloc oops (line $.): mem $addr; old: $y, size ${$mem{$addr}}[0]; new: $x, size $size\n"; - } - $mem{$addr} = [ $size, $func, @funcs ]; - delete $lfree{$addr}; - } - else { - if(!exists $mem{$addr}) { - $xx = ""; - $first = 1; - for $f ($func, @funcs) { - $xx .= "<-" unless $first; - $first = 0; - $xx .= addr2line $f; - } - print "free oops (line $.): $addr ($xx) [last free: line $lfree{$addr}]\n"; - } - delete $mem{$addr}; - $lfree{$addr} .= " $."; - } - } -} - -for (sort keys %mem) { - $total += oct(${$mem{$_}}[0]); - $cnt++; - -# $x = `addr2line -s -e $bin ${$mem{$_}}[1]`; -# chomp $x; -# $x = $x =~ /\?{2}/ ? undef : "$x "; - $x = addr2line ${$mem{$_}}[1]; - - print "$_\t${$mem{$_}}[0]\t"; - $first = 1; - for $f (@{$mem{$_}}[1..$#{$mem{$_}}]) { - print "<-" unless $first; - $first = 0; - print addr2line $f; - } - print "\n" -} - -printf "total: %u bytes in %u blocks\n", $total, $cnt; - - -sub addr2line -{ - my ($x, $y); - - return $_[0] unless $bin; - - $y = sprintf "0x%x", oct($_[0]) + $ofs; - - return $addr_cache{$y} if exists $addr_cache{$y}; - - $x = `addr2line -s -e $bin $y`; - chomp $x; - $x = $x =~ /\?{2}/ ? $_[0] : $x; - - $addr_cache{$y} = $x; - - return $x; -} - diff --git a/src/hwinfo/src/Makefile b/src/hwinfo/src/Makefile deleted file mode 100644 index b8e55a167c..0000000000 --- a/src/hwinfo/src/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -TOPDIR = .. -SUBDIRS = hd isdn ids -TARGETS = touch $(LIBHD) $(LIBHD_SO) -CLEANFILES = $(LIBHD) $(LIBHD_D) $(LIBHD_SO) *.so *.so.* *.a - -.PHONY: touch - -include $(TOPDIR)/Makefile.common - -ifneq "$(findstring $(ARCH), i386 x86_64 ia64)" "" -ifneq ($(LIBHD_BASE), libhd_tiny) -SUBDIRS += x86emu int10 -endif -endif - -#ifeq "$(findstring $(ARCH), i386 alpha)" "" -#SUBDIRS := $(filter-out pnpdump, $(SUBDIRS)) -#endif - -$(LIBHD): $(OBJS) - ar r $@ $? - @rm -f $(LIBHD_D) - -ifdef SHARED_FLAGS -$(LIBHD_SO): $(LIBHD) - $(CC) -shared $(SO_LIBS) -Wl,--whole-archive $(LIBHD) -Wl,--no-whole-archive \ - -Wl,-soname=$(LIBHD_SONAME) \ - -o $(LIBHD_SO) - ln -snf $(LIBHD_NAME) $(LIBHD_SONAME) - ln -snf $(LIBHD_SONAME) $(LIBHD_BASE).so -else -$(LIBHD_SO): -endif - -subdirs: touch - -touch: - @touch -r $(LIBHD) $(LIBHD_D) 2>/dev/null || true diff --git a/src/hwinfo/src/hd/Makefile b/src/hwinfo/src/hd/Makefile deleted file mode 100644 index b4c62b08a1..0000000000 --- a/src/hwinfo/src/hd/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -TOPDIR = ../.. -TARGETS = $(LIBHD_D) -CLEANFILES = version.h - -include $(TOPDIR)/Makefile.common - -version.h: $(TOPDIR)/VERSION - @echo "#define HD_VERSION_STRING \"`cat $(TOPDIR)/VERSION`\"" >$@ - -hd.h: $(TOPDIR)/VERSION - @perl -pi -e "s/define\s+HD_VERSION\s+\d+/define HD_VERSION\t$(LIBHD_MAJOR_VERSION)/" $@ - -$(LIBHD_D): $(OBJS) - ar r $(LIBHD) $? diff --git a/src/hwinfo/src/hd/adb.c b/src/hwinfo/src/hd/adb.c deleted file mode 100644 index d71e45eeea..0000000000 --- a/src/hwinfo/src/hd/adb.c +++ /dev/null @@ -1,78 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "adb.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * adb info - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#ifdef __PPC__ - -void hd_scan_adb(hd_data_t *hd_data) -{ - int i; - unsigned u, adr = 0; - hd_t *hd; - str_list_t *sl; - - if(!hd_probe_feature(hd_data, pr_adb)) return; - - hd_data->module = mod_adb; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "get info"); - - for(sl = hd_data->klog; sl; sl = sl->next) { - if(sscanf(sl->str, "<4>ADB mouse at %u, %*[a-z ] %i", &u, &i) == 2 && u < 32) { - /* u: max 15 actually, but who cares... */ - if(!(adr & (1 << u))) { - adr |= 1 << u; - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_mouse; - hd->sub_class.id = sc_mou_bus; - hd->bus.id = bus_adb; - hd->slot = u; -// hd->func = i; - hd->unix_dev_name = new_str(DEV_MICE); - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0100); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0300 + i); - } - } - - if(sscanf(sl->str, "<4>ADB keyboard at %u, %*[a-z ] %i", &u, &i) == 2 && u < 32) { - /* u: max 15 actually, but who cares... */ - if(!(adr & (1 << u))) { - adr |= 1 << u; - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_keyboard; - hd->sub_class.id = 0; - hd->bus.id = bus_adb; - hd->slot = u; -// hd->func = i; -// hd->unix_dev_name = new_str(DEV_ADBMOUSE); - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0100); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0200+i); - } - } - } -} - -#endif /* __PPC__ */ diff --git a/src/hwinfo/src/hd/adb.h b/src/hwinfo/src/hd/adb.h deleted file mode 100644 index de686121aa..0000000000 --- a/src/hwinfo/src/hd/adb.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_adb(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/bios.c b/src/hwinfo/src/hd/bios.c deleted file mode 100644 index fcdfabdc0c..0000000000 --- a/src/hwinfo/src/hd/bios.c +++ /dev/null @@ -1,1014 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(__i386__) || defined (__x86_64__) || defined(__ia64__) -#include -#endif -typedef unsigned long kernel_ulong_t; -#include -#ifdef __UCLIBC__ -#include -#else -#include -#endif - -#include "hd.h" -#include "hd_int.h" -#include "bios.h" -#include "smbios.h" -#include "klog.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * bios info - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#if defined(__i386__) || defined (__x86_64__) || defined (__ia64__) - -static struct { - int width; - int height; - char *vendor; - char *name; - char *version; -} panel_data[] = { - { 800, 600, "Fujitsu Siemens", "LiteLine", "LF6" }, - { 1024, 768, "ASUSTEK", "L2000D", NULL }, - { 1024, 768, "ASUSTeK Computer Inc.", "L8400C series Notebook PC", NULL }, - { 1024, 768, "ASUSTeK Computer Inc.", "S5N", NULL }, - { 1024, 768, "Acer", "TravelMate 720", NULL }, - { 1024, 768, "COMPAL", "N30T5", NULL }, - { 1024, 768, "Dell Computer Corporation", "Inspiron 5000", NULL }, - { 1024, 768, "Dell Computer Corporation", "Latitude C400", NULL }, - { 1024, 768, "Dell Computer Corporation", "Latitude C600", NULL }, - { 1024, 768, "Dell Computer Corporation", "Latitude CPt C400GT", NULL }, - { 1024, 768, "Hewlett-Packard", "HP OmniBook PC", "HP OmniBook 4150 B" }, - { 1280, 800, "Hewlett-Packard", "hp compaq nx9105 (DU367T#ABD)", "03" }, - { 1280, 800, "Hewlett-Packard", "Pavilion zv5000 (PA456EA#ABD)", "F.11" }, -#include "ibm-notebooks.h" - { 1400, 1050, "IBM", "73geu99", NULL }, - { 1024, 768, "KDST", "KDS6KSUMO", NULL }, - { 1024, 768, "Sony Corporation", "PCG-F370(UC)", NULL }, - { 1024, 768, "Sony Corporation", "PCG-N505SN", NULL }, - { 1024, 768, "TOSHIBA", "S2400-103", NULL }, - { 1280, 800, "Acer", "Aspire 1520", NULL }, - { 1400, 1050, "Acer", "TravelMate 660", NULL }, - { 1400, 1050, "Dell Computer Corporation", "Inspiron 8000", NULL }, - { 1600, 1200, "Dell Computer Corporation", "Inspiron 8200", NULL }, - { 1600, 1200, "Dell Computer Corporation", "Latitude C840", NULL } -}; - -#define BIOS_TEST - -typedef struct { - unsigned eax, ebx, ecx, edx, esi, edi, eip, es, iret, cli; -} bios32_regs_t; - -static void read_memory(hd_data_t *hd_data, memory_range_t *mem); -static void dump_memory(hd_data_t *hd_data, memory_range_t *mem, int sparse, char *label); -static void get_pnp_support_status(memory_range_t *mem, bios_info_t *bt); -static void smbios_get_info(hd_data_t *hd_data, memory_range_t *mem, bios_info_t *bt); -static void get_fsc_info(hd_data_t *hd_data, memory_range_t *mem, bios_info_t *bt); -static void add_panel_info(hd_data_t *hd_data, bios_info_t *bt); -static void add_mouse_info(hd_data_t *hd_data, bios_info_t *bt); -static unsigned char crc(unsigned char *mem, unsigned len); -static int get_smp_info(hd_data_t *hd_data, memory_range_t *mem, smp_info_t *smp); -static void parse_mpconfig(hd_data_t *hd_data, memory_range_t *mem, smp_info_t *smp); -static int get_bios32_info(hd_data_t *hd_data, memory_range_t *mem, bios32_info_t *bios32); - -int detect_smp_bios(hd_data_t *hd_data) -{ - bios_info_t *bt; - hd_smbios_t *sm; - hd_t *hd; - int cpus; - - if(!hd_data->bios_ram.data) return -1; /* hd_scan_bios() not called */ - - for(bt = NULL, hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_internal && - hd->sub_class.id == sc_int_bios && - hd->detail && - hd->detail->type == hd_detail_bios && - (bt = hd->detail->bios.data) - ) { - break; - } - } - - if(!bt) return -1; - - cpus = 0; - - /* look at smbios data in case there's no mp table */ - if(hd_data->smbios) { - for(sm = hd_data->smbios; sm; sm = sm->next) { - if( - sm->any.type == sm_processor && - sm->processor.pr_type.id == 3 && /* cpu */ - sm->processor.cpu_status.id == 1 /* enabled */ - ) { - cpus++; - } - } - ADD2LOG(" smp detect: mp %d cpus, smbios %d cpus\n", bt->smp.ok ? bt->smp.cpus_en : 0, cpus); - } - - if(bt->smp.ok && bt->smp.cpus_en) cpus = bt->smp.cpus_en; - - return cpus; -} - - -void hd_scan_bios(hd_data_t *hd_data) -{ - hd_t *hd; - bios_info_t *bt; - char *s; - unsigned char *bios_ram; - unsigned u, u1; - memory_range_t mem; - unsigned smp_ok; -#ifndef LIBHD_TINY - vbe_info_t *vbe; - vbe_mode_info_t *mi; - hd_res_t *res; - str_list_t *sl; -#endif - - if(!hd_probe_feature(hd_data, pr_bios)) return; - - /* we better do nothing on a SGI Altix machine */ - if(hd_is_sgi_altix(hd_data)) return; - - hd_data->module = mod_bios; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "cmdline"); - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_internal; - hd->sub_class.id = sc_int_bios; - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_bios; - hd->detail->bios.data = bt = new_mem(sizeof *bt); - - /* - * first, look for APM support - */ - if((s = get_cmd_param(hd_data, 1))) { - if(strlen(s) >= 10) { - bt->apm_supported = 1; - bt->apm_ver = hex(s, 1); - bt->apm_subver = hex(s + 1, 1); - bt->apm_bios_flags = hex(s + 2, 2); - /* - * Bitfields for APM flags (from Ralf Brown's list): - * Bit(s) Description - * 0 16-bit protected mode interface supported - * 1 32-bit protected mode interface supported - * 2 CPU idle call reduces processor speed - * 3 BIOS power management disabled - * 4 BIOS power management disengaged (APM v1.1) - * 5-7 reserved - */ - bt->apm_enabled = (bt->apm_bios_flags & 8) ? 0 : 1; - - bt->vbe_ver = hex(s + 4, 2); - bt->vbe_ver = (((bt->vbe_ver >> 4) & 0xf) << 8) + (bt->vbe_ver & 0xf); - bt->vbe_video_mem = hex(s + 6, 4) << 16; - } - - s = free_mem(s); - } - - if((s = get_cmd_param(hd_data, 2))) { - if(strlen(s) > 8) { - if(s[8] == '.') bt->lba_support = 1; - } - - s = free_mem(s); - } - - PROGRESS(1, 1, "apm"); - - if(!bt->apm_ver) { - str_list_t *sl0, *sl; - - sl0 = read_file(PROC_APM, 0, 0); - if(sl0) { - bt->apm_supported = 1; - bt->apm_enabled = 1; - ADD2LOG("----- %s -----\n", PROC_APM); - for(sl = sl0; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- %s end -----\n", PROC_APM); - } - free_str_list(sl0); - } - - /* - * get the i/o ports for the parallel & serial interfaces from the BIOS - * memory area starting at 0x40:0 - */ - PROGRESS(2, 0, "ram"); - - hd_data->bios_ram.start = BIOS_RAM_START; - hd_data->bios_ram.size = BIOS_RAM_SIZE; - read_memory(hd_data, &hd_data->bios_ram); - - hd_data->bios_rom.start = BIOS_ROM_START; - hd_data->bios_rom.size = BIOS_ROM_SIZE; - read_memory(hd_data, &hd_data->bios_rom); - - if(hd_data->bios_ram.data) { - bios_ram = hd_data->bios_ram.data; - - bt->ser_port0 = (bios_ram[1] << 8) + bios_ram[0]; - bt->ser_port1 = (bios_ram[3] << 8) + bios_ram[2]; - bt->ser_port2 = (bios_ram[5] << 8) + bios_ram[4]; - bt->ser_port3 = (bios_ram[7] << 8) + bios_ram[6]; - - bt->par_port0 = (bios_ram[ 9] << 8) + bios_ram[ 8]; - bt->par_port1 = (bios_ram[0xb] << 8) + bios_ram[0xa]; - bt->par_port2 = (bios_ram[0xd] << 8) + bios_ram[0xc]; - - bt->led.scroll_lock = bios_ram[0x97] & 1; - bt->led.num_lock = (bios_ram[0x97] >> 1) & 1; - bt->led.caps_lock = (bios_ram[0x97] >> 2) & 1; - bt->led.ok = 1; - - /* - * do some consistency checks: - * - * ports must be < 0x1000 and not appear twice - */ - if(bt->ser_port0 >= 0x1000) bt->ser_port0 = 0; - - if( - bt->ser_port1 >= 0x1000 || - bt->ser_port1 == bt->ser_port0 - ) bt->ser_port1 = 0; - - if( - bt->ser_port2 >= 0x1000 || - bt->ser_port2 == bt->ser_port0 || - bt->ser_port2 == bt->ser_port1 - ) bt->ser_port2 = 0; - - if( - bt->ser_port3 >= 0x1000 || - bt->ser_port3 == bt->ser_port0 || - bt->ser_port3 == bt->ser_port1 || - bt->ser_port3 == bt->ser_port2 - ) bt->ser_port3 = 0; - - if(bt->par_port0 >= 0x1000) bt->par_port0 = 0; - - if( - bt->par_port1 >= 0x1000 || - bt->par_port1 == bt->par_port0 - ) bt->par_port1 = 0; - - if( - bt->par_port2 >= 0x1000 || - bt->par_port2 == bt->par_port0 || - bt->par_port2 == bt->par_port1 - ) bt->par_port2 = 0; - - ADD2LOG(" bios: %u disks\n", bios_ram[0x75]); - - bt->low_mem_size = ((bios_ram[0x14] << 8) + bios_ram[0x13]) << 10; - - if(bt->low_mem_size) { - ADD2LOG(" bios: %uk low mem\n", bt->low_mem_size >> 10); - } - - /* too unusual */ - if(bt->low_mem_size >= (768 << 10) || bt->low_mem_size < (384 << 10)) { - bt->low_mem_size = 0; - } - - hd_data->bios_ebda.start = hd_data->bios_ebda.size = 0; - hd_data->bios_ebda.data = free_mem(hd_data->bios_ebda.data); - u = ((bios_ram[0x0f] << 8) + bios_ram[0x0e]) << 4; - if(u) { - hd_data->bios_ebda.start = u; - hd_data->bios_ebda.size = 1; /* just one byte */ - read_memory(hd_data, &hd_data->bios_ebda); - if(hd_data->bios_ebda.data) { - u1 = hd_data->bios_ebda.data[0]; - if(u1 > 0 && u1 <= 64) { /* be sensible, typically only 1k */ - u1 <<= 10; - if(u + u1 <= (1 << 20)) { - hd_data->bios_ebda.size = u1; - read_memory(hd_data, &hd_data->bios_ebda); - } - } - } - } - - if(hd_data->bios_ebda.data) { - ADD2LOG( - " bios: EBDA 0x%05x bytes at 0x%05x\n", - hd_data->bios_ebda.size, hd_data->bios_ebda.start - ); - } - } - - /* - * read the bios rom and look for useful things there... - */ - PROGRESS(2, 0, "rom"); - - if(hd_data->bios_rom.data) { - get_pnp_support_status(&hd_data->bios_rom, bt); - smbios_get_info(hd_data, &hd_data->bios_rom, bt); - get_fsc_info(hd_data, &hd_data->bios_rom, bt); - add_panel_info(hd_data, bt); - add_mouse_info(hd_data, bt); - } - - PROGRESS(3, 0, "smp"); - - smp_ok = 0; - - mem = hd_data->bios_ebda; - smp_ok = get_smp_info(hd_data, &mem, &bt->smp); - - if(!smp_ok) { - mem = hd_data->bios_rom; - if(mem.data) { - mem.size -= 0xf0000 - mem.start; - mem.data += 0xf0000 - mem.start; - mem.start = 0xf0000; - if(mem.size < (1 << 20)) smp_ok = get_smp_info(hd_data, &mem, &bt->smp); - } - } - - if(!smp_ok) { - mem.size = 1 << 10; - mem.start = 639 << 10; - mem.data = NULL; - read_memory(hd_data, &mem); - if(mem.data) smp_ok = get_smp_info(hd_data, &mem, &bt->smp); - mem.data = free_mem(mem.data); - } - - if(bt->smp.ok && bt->smp.mpconfig) { - mem.start = bt->smp.mpconfig; - mem.size = 1 << 16; - mem.data = NULL; - read_memory(hd_data, &mem); - parse_mpconfig(hd_data, &mem, &bt->smp); - mem.data = free_mem(mem.data); - } - - if((hd_data->debug & HD_DEB_BIOS)) { - dump_memory(hd_data, &hd_data->bios_ram, 0, "BIOS data"); - dump_memory(hd_data, &hd_data->bios_ebda, hd_data->bios_ebda.size <= (8 << 10) ? 0 : 1, "EBDA"); - // dump_memory(hd_data, &hd_data->bios_rom, 1, "BIOS ROM"); - - if(bt->smp.ok && bt->smp.mpfp) { - mem.start = bt->smp.mpfp; - mem.size = 0x10; - mem.data = NULL; - read_memory(hd_data, &mem); - dump_memory(hd_data, &mem, 0, "MP FP"); - mem.data = free_mem(mem.data); - } - - if(bt->smp.ok && bt->smp.mpconfig && bt->smp.mpconfig_size) { - mem.start = bt->smp.mpconfig; - mem.size = bt->smp.mpconfig_size; - mem.data = NULL; - read_memory(hd_data, &mem); - dump_memory(hd_data, &mem, 0, "MP config table"); - mem.data = free_mem(mem.data); - } - } - -#ifndef LIBHD_TINY - if(hd_probe_feature(hd_data, pr_bios_vesa)) { - PROGRESS(4, 0, "vbe"); - - vbe = &bt->vbe; - vbe->ok = 0; - - if(!hd_data->klog) read_klog(hd_data); - for(sl = hd_data->klog; sl; sl = sl->next) { - if(sscanf(sl->str, "<6>PCI: Using configuration type %u", &u) == 1) { - hd_data->pci_config_type = u; - ADD2LOG(" klog: pci config type %u\n", hd_data->pci_config_type); - } - } - - get_vbe_info(hd_data, vbe); - - if(vbe->ok) { - bt->vbe_ver = vbe->version; - } - - if(vbe->ok && vbe->fb_start) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_framebuffer; - hd->sub_class.id = sc_fb_vesa; - - hd_set_hw_class(hd, hw_vbe); - -#if 0 - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_bios; - hd->detail->bios.data = bt = new_mem(sizeof *bt); -#endif - - hd->vendor.name = new_str(vbe->vendor_name); - hd->device.name = new_str(vbe->product_name); - hd->sub_vendor.name = new_str(vbe->oem_name); - hd->revision.name = new_str(vbe->product_revision); - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->phys_mem.type = res_phys_mem; - res->phys_mem.range = vbe->memory; - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->mem.type = res_mem; - res->mem.base = vbe->fb_start; - res->mem.range = vbe->memory; - res->mem.access = acc_rw; - res->mem.enabled = 1; - - if(vbe->mode) { - for(u = 0; u < vbe->modes; u++) { - mi = vbe->mode + u; - if( - (mi->attributes & 1) && /* mode supported */ - mi->fb_start && - mi->pixel_size != -1u /* text mode */ - ) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->framebuffer.type = res_framebuffer; - res->framebuffer.width = mi->width; - res->framebuffer.bytes_p_line = mi->bytes_p_line; - res->framebuffer.height = mi->height; - res->framebuffer.colorbits = mi->pixel_size; - res->framebuffer.mode = mi->number + 0x200; - } - } - } - -#if 0 - if( - hd->vend_name && - !strcmp(hd->vend_name, "Matrox") && - hd->device.name && - ( - strstr(hd->dev_name, "G200") || - strstr(hd->dev_name, "G400") || - strstr(hd->dev_name, "G450") - ) - ) { - hd->broken = 1; - } -#endif - - } - } -#endif /* LIBHD_TINY */ - - PROGRESS(5, 0, "32"); - - mem = hd_data->bios_rom; - if(mem.data) { - mem.size -= 0xe0000 - mem.start; - mem.data += 0xe0000 - mem.start; - mem.start = 0xe0000; - if(mem.size < (1 << 20)) get_bios32_info(hd_data, &mem, &bt->bios32); - } - - if(bt->bios32.ok) { - mem = hd_data->bios_rom; - - if( - mem.start <= 0xfffea && - mem.start + mem.size >= 0xfffea + 6 && - !memcmp(mem.data + 0xfffea - mem.start, "COMPAQ", 6) - ) { - bt->bios32.compaq = 1; - ADD2LOG(" bios32: compaq machine\n"); - } - } - -} - - -void read_memory(hd_data_t *hd_data, memory_range_t *mem) -{ -#ifdef BIOS_TEST - char *s = getenv("LIBHD_MEM"); -#endif - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, ">%p\n", CALLED_FROM(read_memory, mem)); - } -#endif - - if(mem->data) free_mem(mem->data); - mem->data = new_mem(mem->size); -#ifdef BIOS_TEST - hd_read_mmap(hd_data, s ?: DEV_MEM, mem->data, mem->start, mem->size); -#else - hd_read_mmap(hd_data, DEV_MEM, mem->data, mem->start, mem->size); -#endif - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, "<%p\n", CALLED_FROM(read_memory, mem)); - } -#endif -} - - -void dump_memory(hd_data_t *hd_data, memory_range_t *mem, int sparse, char *label) -{ - unsigned u, step; - - if(!mem->size || !mem->data) return; - -#if 1 - step = sparse ? 0x1000 : 0x10; -#else - step = 0x10; -#endif - - ADD2LOG("----- %s 0x%05x - 0x%05x -----\n", label, mem->start, mem->start + mem->size - 1); - for(u = 0; u < mem->size; u += step) { - ADD2LOG(" %03x ", u + mem->start); - hexdump(&hd_data->log, 1, mem->size - u > 0x10 ? 0x10 : mem->size - u, mem->data + u); - ADD2LOG("\n"); - } - ADD2LOG("----- %s end -----\n", label); -} - - -void get_pnp_support_status(memory_range_t *mem, bios_info_t *bt) -{ - int i; - unsigned char pnp[4] = { '$', 'P', 'n', 'P' }; - unsigned char *t; - unsigned l, cs; - - if(!mem->data) return; - - for(i = 0xf0000 - mem->start; (unsigned) i < mem->size; i += 0x10) { - t = mem->data + i; - if(t[0] == pnp[0] && t[1] == pnp[1] && t[2] == pnp[2] && t[3] == pnp[3]) { - for(l = cs = 0; l < t[5]; l++) { cs += t[l]; } - if((cs & 0xff) == 0) { // checksum ok - bt->is_pnp_bios = 1; -// printf("0x%x bytes at 0x%x, cs = 0x%x\n", t[5], i, cs); - bt->pnp_id = t[0x17] + (t[0x18] << 8) + (t[0x19] << 16) + (t[0x20] << 24); - } - } - } -} - -unsigned char crc(unsigned char *mem, unsigned len) -{ - unsigned char uc = 0; - - while(len--) uc += *mem++; - - return uc; -} - - -void smbios_get_info(hd_data_t *hd_data, memory_range_t *mem, bios_info_t *bt) -{ - unsigned u, u1, u2, ok, hlen = 0, ofs; - unsigned addr = 0, len = 0, scnt; - unsigned structs = 0, type, slen; - char *s; - memory_range_t memory; - hd_smbios_t *sm; - - if(!mem->data || mem->size < 0x100) return; - - for(u = ok = 0; u <= mem->size - 0x100; u += 0x10) { - if(*(unsigned *) (mem->data + u) == 0x5f4d535f) { /* "_SM_" */ - hlen = mem->data[u + 5]; - addr = *(unsigned *) (mem->data + u + 0x18); - len = *(unsigned short *) (mem->data + u + 0x16); - structs = *(unsigned short *) (mem->data + u + 0x1c); - if(hlen < 0x1e) continue; - ok = crc(mem->data + u, hlen) == 0 && addr < (1 << 20) && len; - if(ok) break; - } - } - - if(!ok) return; - - bt->smbios_ver = (mem->data[u + 6] << 8) + mem->data[u + 7]; - - hd_data->smbios = smbios_free(hd_data->smbios); - - memory.start = mem->start + u; - memory.size = hlen; - memory.data = mem->data + u; - dump_memory(hd_data, &memory, 0, "SMBIOS Entry Point"); - - memory.start = addr; - memory.size = len; - memory.data = NULL; - read_memory(hd_data, &memory); - if(len >= 0x4000) { - ADD2LOG( - " SMBIOS Structure Table at 0x%05x (size 0x%x)\n", - addr, len - ); - } - else { - dump_memory(hd_data, &memory, 0, "SMBIOS Structure Table"); - } - - for(type = 0, u = 0, ofs = 0; u < structs && ofs + 3 < len; u++) { - type = memory.data[ofs]; - slen = memory.data[ofs + 1]; - if(ofs + slen > len || slen < 4) break; - sm = smbios_add_entry(&hd_data->smbios, new_mem(sizeof *sm)); - sm->any.type = type; - sm->any.data_len = slen; - sm->any.data = new_mem(slen); - memcpy(sm->any.data, memory.data + ofs, slen); - sm->any.handle = memory.data[ofs + 2] + (memory.data[ofs + 3] << 8); - ADD2LOG(" type 0x%02x [0x%04x]: ", type, sm->any.handle); - if(slen) hexdump(&hd_data->log, 0, slen, sm->any.data); - ADD2LOG("\n"); - if(type == sm_end) break; - ofs += slen; - u1 = ofs; - u2 = 1; - scnt = 0; - while(ofs + 1 < len) { - if(!memory.data[ofs]) { - if(ofs > u1) { - s = canon_str(memory.data + u1, strlen(memory.data + u1)); - add_str_list(&sm->any.strings, s); - scnt++; - if(*s) ADD2LOG(" str%d: \"%s\"\n", scnt, s); - free_mem(s); - u1 = ofs + 1; - u2++; - } - if(!memory.data[ofs + 1]) { - ofs += 2; - break; - } - } - ofs++; - } - } - - if(u != structs) { - if(type == sm_end) { - ADD2LOG(" smbios: stopped at end tag\n"); - } - else { - ADD2LOG(" smbios oops: only %d of %d structs found\n", u, structs); - } - } - - memory.data = free_mem(memory.data); - - smbios_parse(hd_data); -} - - -void get_fsc_info(hd_data_t *hd_data, memory_range_t *mem, bios_info_t *bt) -{ - unsigned u, mtype, fsc_id; - unsigned x, y; - hd_smbios_t *sm; - char *vendor = NULL; - - if(!mem->data || mem->size < 0x20) return; - - for(sm = hd_data->smbios; sm; sm = sm->next) { - if(sm->any.type == sm_sysinfo) { - vendor = sm->sysinfo.manuf; - break; - } - } - - vendor = vendor && !strcasecmp(vendor, "Fujitsu") ? "Fujitsu" : "Fujitsu Siemens"; - - for(u = 0; u <= mem->size - 0x20; u += 0x10) { - if( - *(unsigned *) (mem->data + u) == 0x696a7546 && - *(unsigned *) (mem->data + u + 4) == 0x20757374 - ) { - mtype = *(unsigned *) (mem->data + u + 0x14); - if(!crc(mem->data + u, 0x20) && !(mtype & 0xf0000000)) { - fsc_id = (mtype >> 12) & 0xf; - - switch(fsc_id) { - case 1: - x = 640; y = 480; - break; - - case 2: - x = 800; y = 600; - break; - - case 3: - x = 1024; y = 768; - break; - - case 4: - x = 1280; y = 1024; - break; - - case 5: - x = 1400; y = 1050; - break; - - case 6: - x = 1024; y = 512; - break; - - case 7: - x = 1280; y = 600; - break; - - case 8: - x = 1600; y = 1200; - break; - - default: - x = 0; y = 0; - } - - if(x) { - bt->lcd.vendor = new_str(vendor); - bt->lcd.name = new_str("Notebook LCD"); - bt->lcd.width = x; - bt->lcd.height = y; - } - - ADD2LOG(" found FSC LCD: %d (%ux%u)\n", fsc_id, x, y); - break; - } - } - } -} - - -void add_panel_info(hd_data_t *hd_data, bios_info_t *bt) -{ - unsigned width, height; - char *vendor, *name, *version; - hd_smbios_t *sm; - unsigned u; - - if(bt->lcd.width || !hd_data->smbios) return; - - vendor = name = version = NULL; - width = height = 0; - - for(sm = hd_data->smbios; sm; sm = sm->next) { - if(sm->any.type == sm_sysinfo) { - vendor = sm->sysinfo.manuf; - name = sm->sysinfo.product; - version = sm->sysinfo.version; - break; - } - } - - if(!vendor || !name) return; - - for(u = 0; u < sizeof panel_data / sizeof *panel_data; u++) { - if( - !strcmp(vendor, panel_data[u].vendor) && - !strcmp(name, panel_data[u].name) && - (version || !panel_data[u].version) && - (!version || !panel_data[u].version || !strcmp(version, panel_data[u].version)) - ) { - bt->lcd.vendor = new_str(vendor); - bt->lcd.name = new_str("Notebook LCD"); - bt->lcd.width = panel_data[u].width; - bt->lcd.height = panel_data[u].height; - break; - } - } -} - - -void add_mouse_info(hd_data_t *hd_data, bios_info_t *bt) -{ - unsigned compat_vend, compat_dev, bus; - char *vendor, *name, *type; - hd_smbios_t *sm; - - if(bt->mouse.compat_vend || !hd_data->smbios) return; - - vendor = name = type = NULL; - compat_vend = compat_dev = bus = 0; - - for(sm = hd_data->smbios; sm; sm = sm->next) { - if(sm->any.type == sm_sysinfo) { - vendor = sm->sysinfo.manuf; - name = sm->sysinfo.product; - } - if( - sm->any.type == sm_mouse && - !compat_vend /* take the first entry */ - ) { - compat_vend = compat_dev = bus = 0; - type = NULL; - - switch(sm->mouse.interface.id) { - case 4: /* ps/2 */ - case 7: /* bus mouse (dell notebooks report this) */ - bus = bus_ps2; - compat_vend = MAKE_ID(TAG_SPECIAL, 0x0200); - compat_dev = MAKE_ID(TAG_SPECIAL, sm->mouse.buttons == 3 ? 0x0007 : 0x0006); - break; - } - type = sm->mouse.mtype.name; - if(sm->mouse.mtype.id == 1) type = "Touch Pad"; /* Why??? */ - if(sm->mouse.mtype.id == 2) type = NULL; /* "Other" */ - } - } - - if(!vendor || !name) return; - - if(!type) { - if(!strcmp(vendor, "Sony Corporation") && strstr(name, "PCG-") == name) { - bus = bus_ps2; - type = "Touch Pad"; - compat_vend = MAKE_ID(TAG_SPECIAL, 0x0200); - compat_dev = MAKE_ID(TAG_SPECIAL, 0x0006); - } - } - - if(!type) return; - - bt->mouse.vendor = new_str(vendor); - bt->mouse.type = new_str(type); - bt->mouse.bus = bus; - bt->mouse.compat_vend = compat_vend; - bt->mouse.compat_dev = compat_dev; -} - - -int get_smp_info(hd_data_t *hd_data, memory_range_t *mem, smp_info_t *smp) -{ -#ifndef __ia64__ - unsigned u, ok; - unsigned addr = 0, len; - - if(mem->size < 0x10) return 0; - - for(u = ok = 0; u <= mem->size - 0x10; u++) { - if(*(unsigned *) (mem->data + u) == 0x5f504d5f) { /* "_MP_" */ - addr = *(unsigned *) (mem->data + u + 4); - len = mem->data[u + 8]; - ok = len == 1 && crc(mem->data + u, 0x10) == 0 && addr < (1 << 20) ? 1 : 0; - ADD2LOG( - " smp: %svalid MP FP at 0x%05x (size 0x%x, rev %u), MP config at 0x%05x\n", - ok ? "" : "in", u + mem->start, len << 4, mem->data[u + 9], addr - ); - if(ok) break; - } - } - - if(ok) { - smp->ok = 1; - smp->mpfp = mem->start + u; - smp->rev = mem->data[u + 9]; - smp->mpconfig = addr; - memcpy(smp->feature, mem->data + u + 11, 5); - } - - return ok; -#else - return 0; -#endif -} - - -void parse_mpconfig(hd_data_t *hd_data, memory_range_t *mem, smp_info_t *smp) -{ - unsigned cfg_len, xcfg_len; - unsigned char u0, ux0; - unsigned u, type, len, entries, entry_cnt; - char *s; - - cfg_len = xcfg_len = 0; - - if(*(unsigned *) (mem->data) == 0x504d4350) { /* "PCMP" */ - cfg_len = mem->data[0x04] + (mem->data[0x05] << 8); - smp->mpconfig_size = cfg_len; - u0 = crc(mem->data, cfg_len); - if(u0) return; - smp->mpconfig_ok = 1; - smp->cpus = smp->cpus_en = 0; - xcfg_len = mem->data[0x28] + (mem->data[0x29] << 8); - ux0 = crc(mem->data + cfg_len, xcfg_len) + mem->data[0x2a]; - if(!ux0) { - smp->mpconfig_size += xcfg_len; - } - else { - xcfg_len = 0; - } - } - - if(cfg_len) { - s = canon_str(mem->data + 8, 8); - strcpy(smp->oem_id, s); - free_mem(s); - s = canon_str(mem->data + 0x10, 12); - strcpy(smp->prod_id, s); - s = free_mem(s); - - entries = mem->data[0x22] + (mem->data[0x23] << 8); - ADD2LOG(" base MP config table (%u entries):\n", entries); - entry_cnt = 0; - for(u = 0x2c; u < cfg_len - 1; u += len, entry_cnt++) { - type = mem->data[u]; - len = type == 0 ? 20 : type <= 4 ? 8 : 16; - ADD2LOG(" %stype %u, len %u\n ", type > 4 ? "unknown ": "", type, len); - if(len + u > cfg_len) len = cfg_len - u; - hexdump(&hd_data->log, 1, len, mem->data + u); - ADD2LOG("\n"); - if(type > 4) break; - if(type == 0) { - smp->cpus++; - if((mem->data[u + 3] & 1)) smp->cpus_en++; - } - } - if(entry_cnt != entries) { - ADD2LOG(" oops: %u entries instead of %u found\n", entry_cnt, entries); - } - } - - if(xcfg_len) { - ADD2LOG(" extended MP config table:\n"); - for(u = 0; u < xcfg_len - 2; u += len) { - type = mem->data[u + cfg_len]; - len = mem->data[u + cfg_len + 1]; - ADD2LOG(" type %u, len %u\n ", type, len); - if(len + u > xcfg_len) len = xcfg_len - u; - hexdump(&hd_data->log, 1, len, mem->data + cfg_len + u); - ADD2LOG("\n"); - if(len < 2) { - ADD2LOG(" oops: invalid record lenght\n"); - break; - } - } - } -} - - -int get_bios32_info(hd_data_t *hd_data, memory_range_t *mem, bios32_info_t *bios32) -{ - unsigned u, ok; - unsigned addr = 0, len; - - if(mem->size < 0x10) return 0; - - for(u = ok = 0; u <= mem->size - 0x10; u += 0x10) { - if(*(unsigned *) (mem->data + u) == 0x5f32335f) { /* "_32_" */ - addr = *(unsigned *) (mem->data + u + 4); - len = mem->data[u + 9]; - ok = len == 1 && crc(mem->data + u, 0x10) == 0 && addr < (1 << 20) ? 1 : 0; - ADD2LOG( - " bios32: %svalid SD header at 0x%05x (size 0x%x, rev %u), SD at 0x%05x\n", - ok ? "" : "in", u + mem->start, len << 4, mem->data[u + 8], addr - ); - if(ok) break; - } - } - - if(ok) { - bios32->ok = 1; - bios32->entry = addr; - } - - return ok; -} - - -#endif /* defined(__i386__) || defined (__x86_64__) */ - diff --git a/src/hwinfo/src/hd/bios.h b/src/hwinfo/src/hd/bios.h deleted file mode 100644 index cdb046f6dc..0000000000 --- a/src/hwinfo/src/hd/bios.h +++ /dev/null @@ -1,8 +0,0 @@ -#define BIOS_ROM_START 0xc0000 -#define BIOS_ROM_SIZE 0x40000 - -#define BIOS_RAM_START 0x400 -#define BIOS_RAM_SIZE 0x100 - -void hd_scan_bios(hd_data_t *hd_data); -void get_vbe_info(hd_data_t *hd_data, vbe_info_t *vbe); diff --git a/src/hwinfo/src/hd/block.c b/src/hwinfo/src/hd/block.c deleted file mode 100644 index 2a8f400785..0000000000 --- a/src/hwinfo/src/hd/block.c +++ /dev/null @@ -1,1578 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "hddb.h" -#include "block.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * block device stuff - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -static void get_block_devs(hd_data_t *hd_data); -static void add_partitions(hd_data_t *hd_data, hd_t *hd, char *path); -static void add_cdrom_info(hd_data_t *hd_data, hd_t *hd); -static void add_other_sysfs_info(hd_data_t *hd_data, hd_t *hd, struct sysfs_device *sf_dev); -static void add_ide_sysfs_info(hd_data_t *hd_data, hd_t *hd, struct sysfs_device *sf_dev); -static void add_scsi_sysfs_info(hd_data_t *hd_data, hd_t *hd, struct sysfs_device *sf_dev); -static void read_partitions(hd_data_t *hd_data); -static void read_cdroms(hd_data_t *hd_data); -static cdrom_info_t *new_cdrom_entry(cdrom_info_t **ci); -static cdrom_info_t *get_cdrom_entry(cdrom_info_t *ci, int n); -static void get_scsi_tape(hd_data_t *hd_data); -static void get_generic_scsi_devs(hd_data_t *hd_data); -static void add_disk_size(hd_data_t *hd_data, hd_t *hd); - - -void hd_scan_sysfs_block(hd_data_t *hd_data) -{ - if(!hd_probe_feature(hd_data, pr_block)) return; - - hd_data->module = mod_block; - - /* some clean-up */ - remove_hd_entries(hd_data); - - hd_data->disks = free_str_list(hd_data->disks); - hd_data->partitions = free_str_list(hd_data->partitions); - hd_data->cdroms = free_str_list(hd_data->cdroms); - - if(hd_probe_feature(hd_data, pr_block_mods)) { - PROGRESS(1, 0, "block modules"); - load_module(hd_data, "ide_cd"); - load_module(hd_data, "sr_mod"); - load_module(hd_data, "sd_mod"); - load_module(hd_data, "st"); - } - - PROGRESS(2, 0, "sysfs drivers"); - - hd_sysfs_driver_list(hd_data); - - PROGRESS(3, 0, "cdrom"); - - read_cdroms(hd_data); - - PROGRESS(4, 0, "partition"); - - read_partitions(hd_data); - - PROGRESS(5, 0, "get sysfs block dev data"); - - get_block_devs(hd_data); - - if(hd_data->cdrom) { - ADD2LOG("oops: cdrom list not empty\n"); - } -} - - -void get_block_devs(hd_data_t *hd_data) -{ - str_list_t *sl; - char *s, *t; - unsigned u1, u2, u3; - uint64_t ul0; - hd_t *hd, *hd1; - hd_dev_num_t dev_num; - - struct sysfs_bus *sf_bus; - struct sysfs_class *sf_class; - struct sysfs_class_device *sf_cdev; - struct sysfs_device *sf_dev; - struct dlist *sf_cdev_list; - struct dlist *sf_ide_list = NULL; - struct sysfs_device *sf_ide; - - sf_bus = sysfs_open_bus("ide"); - if(sf_bus) { - sf_ide_list = sysfs_get_bus_devices(sf_bus); - if(sf_ide_list) dlist_for_each_data(sf_ide_list, sf_ide, struct sysfs_device) { - ADD2LOG( - " ide: bus_id = %s path = %s\n", - sf_ide->bus_id, - hd_sysfs_id(sf_ide->path) - ); - } - } - - sf_class = sysfs_open_class("block"); - - if(!sf_class) { - ADD2LOG("sysfs: no such class: block\n"); - return; - } - - sf_cdev_list = sysfs_get_class_devices(sf_class); - if(sf_cdev_list) dlist_for_each_data(sf_cdev_list, sf_cdev, struct sysfs_class_device) { - ADD2LOG( - " block: name = %s, path = %s\n", - sf_cdev->name, - hd_sysfs_id(sf_cdev->path) - ); - - memset(&dev_num, 0, sizeof dev_num); - - if((s = hd_attr_str(sysfs_get_classdev_attr(sf_cdev, "dev")))) { - if(sscanf(s, "%u:%u", &u1, &u2) == 2) { - dev_num.type = 'b'; - dev_num.major = u1; - dev_num.minor = u2; - dev_num.range = 1; - } - ADD2LOG(" dev = %u:%u\n", u1, u2); - } - - if(hd_attr_uint(sysfs_get_classdev_attr(sf_cdev, "range"), &ul0, 0)) { - dev_num.range = ul0; - ADD2LOG(" range = %u\n", dev_num.range); - } - - sf_dev = sysfs_get_classdev_device(sf_cdev); - if(sf_dev) { - ADD2LOG( - " block device: bus = %s, bus_id = %s driver = %s\n path = %s\n", - sf_dev->bus, - sf_dev->bus_id, - sf_dev->driver_name, - hd_sysfs_id(sf_dev->path) - ); - } - - hd = NULL; - - /* check if disk is DASD and has already been found by s390.c */ - if(sf_dev && sf_dev->driver_name && strstr(sf_dev->driver_name,"dasd")) - { - char bid[9]; - hd_res_t* res; - //fprintf(stderr,"dn %s bi %s\n",sf_dev->driver_name,sf_dev->bus_id); - for(hd=hd_data->hd;hd;hd=hd->next) - { - //fprintf(stderr,"bcid %d\n",hd->base_class.id); - if(hd->base_class.id == bc_storage_device - && hd->detail - && hd->detail->ccw.type == hd_detail_ccw) - { - for(res=hd->res;res;res=res->next) - { - if(res->io.type==res_io) - { - sprintf(bid,"%01x.%01x.%04x", - hd->detail->ccw.data->lcss >> 8, - hd->detail->ccw.data->lcss & 0xff, - (unsigned short)res->io.base); - //fprintf(stderr,"bid %s\n",bid); - if (strcmp(bid,sf_dev->bus_id)==0) goto out; - } - } - } - } - hd=NULL; - out:; - } - else if((sl = search_str_list(hd_data->disks, hd_sysfs_name2_dev(sf_cdev->name)))) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->sub_class.id = sc_sdev_disk; - } - else if((sl = search_str_list(hd_data->cdroms, hd_sysfs_name2_dev(sf_cdev->name)))) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->sub_class.id = sc_sdev_cdrom; - } - else if( - sf_dev && - sf_dev->bus && - (!strcmp(sf_dev->bus, "scsi") || !strcmp(sf_dev->bus, "ide")) - ) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->sub_class.id = sc_sdev_other; - } - - if(hd) { - str_printf(&hd->unix_dev_name, 0, "/dev/%s", hd_sysfs_name2_dev(sf_cdev->name)); - - hd->base_class.id = bc_storage_device; - - hd->sysfs_id = new_str(hd_sysfs_id(sf_cdev->path)); - - if(sf_dev) hd->sysfs_device_link = new_str(hd_sysfs_id(sf_dev->path)); - - hd->unix_dev_num = dev_num; - - hd->bus.id = bus_none; - - if(sf_dev) { - if(sf_dev->bus) { - if(!strcmp(sf_dev->bus, "ide")) hd->bus.id = bus_ide; - else if(!strcmp(sf_dev->bus, "scsi")) hd->bus.id = bus_scsi; - } - hd->sysfs_bus_id = new_str(sf_dev->bus_id); - } - - if(sf_dev && (s = hd_sysfs_id(sf_dev->path))) { - - /* parent has longest matching sysfs id */ - u2 = strlen(s); - for(u3 = 0, hd1 = hd_data->hd; hd1; hd1 = hd1->next) { - if(hd1->sysfs_id) { - u1 = strlen(hd1->sysfs_id); - if(u1 > u3 && u1 <= u2 && !strncmp(s, hd1->sysfs_id, u1)) { - u3 = u1; - hd->attached_to = hd1->idx; - } - } - } - - /* find longest matching sysfs id we have a driver for */ - s = new_str(s); - t = strrchr(s, '/'); - if(t) *t = 0; - t = hd_sysfs_find_driver(hd_data, s, 0); - if(t) { - add_str_list(&hd->drivers, t); - } - s = free_mem(s); - - /* look for ide-scsi handled devices */ - if(hd->bus.id == bus_scsi) { - if(sf_ide_list) dlist_for_each_data(sf_ide_list, sf_ide, struct sysfs_device) { - if( - strcmp(sf_dev->path, sf_ide->path) && - !strncmp(sf_dev->path, sf_ide->path, strlen(sf_ide->path)) && - sscanf(sf_ide->bus_id, "%u.%u", &u1, &u2) == 2 - ) { - str_printf(&hd->unix_dev_name2, 0, "/dev/hd%c", 'a' + (u1 << 1) + u2); - } - } - } - } - - /* - * set hd->drivers before calling any of add_xxx_sysfs_info() - */ - if( - sf_dev && - sf_dev->driver_name && - *sf_dev->driver_name && - strcmp(sf_dev->driver_name, "unknown") - ) { - add_str_list(&hd->drivers, sf_dev->driver_name); - } - - if(hd->bus.id == bus_ide) { - add_ide_sysfs_info(hd_data, hd, sf_dev); - } - else if(hd->bus.id == bus_scsi) { - add_scsi_sysfs_info(hd_data, hd, sf_dev); - } - else { - add_other_sysfs_info(hd_data, hd, sf_dev); - } - - - if(hd->sub_class.id == sc_sdev_cdrom) { - add_cdrom_info(hd_data, hd); - } - - if( - hd->sub_class.id == sc_sdev_disk && - hd_probe_feature(hd_data, pr_block_part) - ) { - add_partitions(hd_data, hd, sf_cdev->path); - } - - } - - } - - sysfs_close_class(sf_class); - - sysfs_close_bus(sf_bus); -} - - -/* - * Find driver for sysfs_id. - * - * Return driver for id (exact = 1) or longest matching id (exact = 0). - */ -char *hd_sysfs_find_driver(hd_data_t *hd_data, char *sysfs_id, int exact) -{ - hd_sysfsdrv_t *sf; - char *t; - unsigned u1, u2, u3; - - if(!sysfs_id || !*sysfs_id) return NULL; - - t = NULL; - - if(exact) { - for(sf = hd_data->sysfsdrv; sf; sf = sf->next) { - if(!strcmp(sysfs_id, sf->device)) { - t = sf->driver; - break; - } - } - } - else { - u2 = strlen(sysfs_id); - u3 = 0; - for(sf = hd_data->sysfsdrv; sf; sf = sf->next) { - u1 = strlen(sf->device); - if(u1 > u3 && u1 <= u2 && !strncmp(sysfs_id, sf->device, u1)) { - u3 = u1; - t = sf->driver; - } - } - } - - return t; -} - - -void add_partitions(hd_data_t *hd_data, hd_t *hd, char *path) -{ - hd_t *hd1; - str_list_t *sl; - char *s; - size_t len; - - s = hd->unix_dev_name + sizeof "/dev/" - 1; - len = strlen(s); - for(sl = hd_data->partitions; sl; sl = sl->next) { - if(!strncmp(sl->str, s, len)) { - hd1 = add_hd_entry(hd_data, __LINE__, 0); - hd1->base_class.id = bc_partition; - str_printf(&hd1->unix_dev_name, 0, "/dev/%s", sl->str); - hd1->attached_to = hd->idx; - - str_printf(&hd1->sysfs_id, 0, "%s/%s", hd->sysfs_id, hd_sysfs_dev2_name(sl->str)); - } - } -} - - -void add_cdrom_info(hd_data_t *hd_data, hd_t *hd) -{ - cdrom_info_t *ci, **prev; - - hd->detail = free_hd_detail(hd->detail); - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_cdrom; - - for(ci = *(prev = &hd_data->cdrom); ci; ci = *(prev = &ci->next)) { - if(!strcmp(hd->unix_dev_name + sizeof "/dev/" - 1, ci->name)) { - hd->detail->cdrom.data = ci; - *prev = ci->next; - hd->detail->cdrom.data->next = NULL; - break; - } - } - - if((ci = hd->detail->cdrom.data)) { - /* update prog_if: cdr, cdrw, ... */ - if( - /* ###### FIXME: dosn't work anyway: ide-scsi doesn't support sysfs */ - hd->bus.id == bus_scsi && - !search_str_list(hd->drivers, "ide-scsi") /* could be ide, though */ - ) { - /* scsi devs lie */ - if(ci->dvd && (ci->cdrw || ci->dvdr || ci->dvdram)) { - ci->dvd = ci->dvdr = ci->dvdram = 0; - } - ci->dvdr = ci->dvdram = 0; - ci->cdr = ci->cdrw = 0; - if(hd->prog_if.id == pif_cdr) ci->cdr = 1; - } - - /* trust ide info */ - if(ci->dvd) { - hd->is.dvd = 1; - hd->prog_if.id = pif_dvd; - } - if(ci->cdr) { - hd->is.cdr = 1; - hd->prog_if.id = pif_cdr; - } - if(ci->cdrw) { - hd->is.cdrw = 1; - hd->prog_if.id = pif_cdrw; - } - if(ci->dvdr) { - hd->is.dvdr = 1; - hd->prog_if.id = pif_dvdr; - } - if(ci->dvdram) { - hd->is.dvdram = 1; - hd->prog_if.id = pif_dvdram; - } - } - - if( - hd_probe_feature(hd_data, pr_block_cdrom) && - hd_report_this(hd_data, hd) - ) { - hd_read_cdrom_info(hd_data, hd); - } -} - - -void add_other_sysfs_info(hd_data_t *hd_data, hd_t *hd, struct sysfs_device *sf_dev) -{ - unsigned u0, u1; - char c; - - if(hd->sysfs_id) { - if( - sscanf(hd->sysfs_id, "/block/cciss!c%ud%u", &u0, &u1) == 2 - ) { - hd->slot = (u0 << 8) + u1; - str_printf(&hd->device.name, 0, "CCISS disk %u/%u", u0, u1); - } - else if( - sscanf(hd->sysfs_id, "/block/ida!c%ud%u", &u0, &u1) == 2 - ) { - hd->slot = (u0 << 8) + u1; - str_printf(&hd->device.name, 0, "SMART Array %u/%u", u0, u1); - } - else if( - sscanf(hd->sysfs_id, "/block/rd!c%ud%u", &u0, &u1) == 2 - ) { - hd->slot = (u0 << 8) + u1; - str_printf(&hd->device.name, 0, "DAC960 RAID Array %u/%u", u0, u1); - } - else if( - sscanf(hd->sysfs_id, "/block/i2o!hd%c", &c) == 1 && - c >= 'a' - ) { - hd->slot = c - 'a'; - str_printf(&hd->device.name, 0, "I2O disk %u", hd->slot); - } - else if( - sscanf(hd->sysfs_id, "/block/dasd%c", &c) == 1 && - c >= 'a' - ) { - hd->slot = c - 'a'; - hd->device.name = new_str("S390 Disk"); - } - } - - add_disk_size(hd_data, hd); -} - - -void add_ide_sysfs_info(hd_data_t *hd_data, hd_t *hd, struct sysfs_device *sf_dev) -{ - char *fname = NULL, buf[256], *dev_name, *s; - unsigned u0, u1, u2, size = 0; - str_list_t *sl, *sl0; - hd_res_t *res; - FILE *f; - - if(!hd_report_this(hd_data, hd)) return; - - if(hd->sysfs_bus_id && sscanf(hd->sysfs_bus_id, "%u.%u", &u0, &u1) == 2) { - /* host.master/slave */ - hd->slot = (u0 << 1) + u1; - } - - if( - hd->unix_dev_name && - strlen(hd->unix_dev_name) > 5 - ) { - dev_name = hd->unix_dev_name + 5; - - str_printf(&fname, 0, PROC_IDE "/%s/media", dev_name); - if((sl = read_file(fname, 0, 1))) { - - if(strstr(sl->str, "floppy")) - hd->sub_class.id = sc_sdev_floppy; - else if(strstr(sl->str, "cdrom")) - hd->sub_class.id = sc_sdev_cdrom; - else if(strstr(sl->str, "tape")) - hd->sub_class.id = sc_sdev_tape; - - free_str_list(sl); - } - - str_printf(&fname, 0, PROC_IDE "/%s/model", dev_name); - if((sl = read_file(fname, 0, 1))) { - hd->vendor.name = canon_str(sl->str, strlen(sl->str)); - if((s = strchr(hd->vendor.name, ' '))) { - hd->device.name = canon_str(s, strlen(s)); - if(*hd->device.name) { - *s = 0; - } - else { - hd->device.name = free_mem(hd->device.name); - } - } - if(!hd->device.name) { - hd->device.name = hd->vendor.name; - hd->vendor.name = NULL; - } - - free_str_list(sl); - } - - str_printf(&fname, 0, PROC_IDE "/%s/driver", dev_name); - if((sl = read_file(fname, 0, 1))) { - if((s = strchr(sl->str, ' '))) *s = 0; - s = canon_str(sl->str, strlen(sl->str)); - add_str_list(&hd->drivers, s); - s = free_mem(s); - free_str_list(sl); - } - - str_printf(&fname, 0, PROC_IDE "/%s/capacity", dev_name); - if((sl = read_file(fname, 0, 1))) { - if(sscanf(sl->str, "%u", &u0) == 1 && u0 != 0x7fffffff) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->size.type = res_size; - res->size.unit = size_unit_sectors; - res->size.val1 = size = u0; - res->size.val2 = 512; // ####### FIXME: sector size? - } - free_str_list(sl); - } - - str_printf(&fname, 0, PROC_IDE "/%s/geometry", dev_name); - if((sl0 = read_file(fname, 0, 2))) { - for(sl = sl0; sl; sl = sl->next) { - if(sscanf(sl->str, " physical %u / %u / %u", &u0, &u1, &u2) == 3) { - if(u0 || u1 || u2) { - if(size && u1 && u2) { - u0 = size / (u1 * u2); - } - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->disk_geo.type = res_disk_geo; - res->disk_geo.cyls = u0; - res->disk_geo.heads = u1; - res->disk_geo.sectors = u2; - res->disk_geo.geotype = geo_physical; - } - continue; - } - - if(sscanf(sl->str, " logical %u / %u / %u", &u0, &u1, &u2) == 3) { - if(size && u1 && u2) { - u0 = size / (u1 * u2); - } - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->disk_geo.type = res_disk_geo; - res->disk_geo.cyls = u0; - res->disk_geo.heads = u1; - res->disk_geo.sectors = u2; - res->disk_geo.geotype = geo_logical; - } - } - free_str_list(sl0); - } - - str_printf(&fname, 0, PROC_IDE "/%s/cache", dev_name); - if((sl = read_file(fname, 0, 1))) { - if(sscanf(sl->str, "%u", &u0) == 1 && u0) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->cache.type = res_cache; - res->cache.size = u0; - } - free_str_list(sl); - } - - str_printf(&fname, 0, PROC_IDE "/%s/identify", dev_name); - if((f = fopen(fname, "r"))) { - u1 = 0; - memset(buf, sizeof buf, 0); - while(u1 < sizeof buf - 1 && fscanf(f, "%x", &u0) == 1) { - buf[u1++] = u0 >> 8; buf[u1++] = u0; - } - fclose(f); - - /* ok, we now have the ATA/ATAPI ident block */ - - if(buf[0x14] || buf[0x15]) { /* has serial id */ - hd->serial = canon_str(buf + 0x14, 20); - } - if(buf[0x2e] || buf[0x2f]) { /* has revision id */ - hd->revision.name = canon_str(buf + 0x2e, 8); - } - } - - free_mem(fname); - } - - if(!size) add_disk_size(hd_data, hd); -} - - -/* - * assumes hd->drivers aleady includes scsi device drivers (like 'sd') - */ -void add_scsi_sysfs_info(hd_data_t *hd_data, hd_t *hd, struct sysfs_device *sf_dev) -{ - hd_t *hd1; - char *s, *t, *cs, *pr_str; - unsigned u0, u1, u2, u3; - int fd, k; - unsigned char scsi_cmd_buf[0x300]; - struct sg_io_hdr hdr; - unsigned char *uc; - scsi_t *scsi; - hd_res_t *geo, *size; - uint64_t ul0; - - if(!hd_report_this(hd_data, hd)) return; - - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_scsi; - hd->detail->scsi.data = scsi = new_mem(sizeof *scsi); - - if(hd->sysfs_bus_id && sscanf(hd->sysfs_bus_id, "%u:%u:%u:%u", &u0, &u1, &u2, &u3) == 4) { - /* host:channel:id:lun */ - hd->slot = (u0 << 8) + (u1 << 4) + u2; - hd->func = u3; - } - - if((s = hd_attr_str(sysfs_get_device_attr(sf_dev, "vendor")))) { - cs = canon_str(s, strlen(s)); - ADD2LOG(" vendor = %s\n", cs); - if(*cs) { - hd->vendor.name = cs; - } - else { - free_mem(cs); - } - } - - if((s = hd_attr_str(sysfs_get_device_attr(sf_dev, "model")))) { - cs = canon_str(s, strlen(s)); - ADD2LOG(" model = %s\n", cs); - if(*cs) { - hd->device.name = cs; - } - else { - free_mem(cs); - } - - /* sata entries are somewhat strange... */ - if( - hd->vendor.name && - !strcmp(hd->vendor.name, "ATA") && - hd->device.name - ) { - hd->bus.id = bus_ide; - - if((cs = strchr(hd->device.name, ' '))) { - t = canon_str(cs, strlen(cs)); - if(*t) { - *cs = 0; - free_mem(hd->vendor.name); - hd->vendor.name = hd->device.name; - hd->device.name = t; - } - else { - t = free_mem(t); - } - } - - if(!strcmp(hd->vendor.name, "ATA")) { - hd->vendor.name = free_mem(hd->vendor.name); - } - } - } - - if((s = hd_attr_str(sysfs_get_device_attr(sf_dev, "rev")))) { - cs = canon_str(s, strlen(s)); - ADD2LOG(" rev = %s\n", cs); - if(*cs) { - hd->revision.name = cs; - } - else { - free_mem(cs); - } - } - - if(hd_attr_uint(sysfs_get_device_attr(sf_dev, "type"), &ul0, 0)) { - ADD2LOG(" type = %u\n", (unsigned) ul0); - if(ul0 == 6 /* scanner */) { - hd->sub_class.id = sc_sdev_scanner; - } - else if(ul0 == 3 /* processor */ && hd->vendor.name) { - if( - !strncmp(hd->vendor.name, "HP", sizeof "HP" - 1) || - !strncmp(hd->vendor.name, "EPSON", sizeof "EPSON" - 1) - ) { - hd->sub_class.id = sc_sdev_scanner; - } - } - - /* - * typically needed for usb card readers (unused slots) - */ - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_other - ) { - switch(ul0) { - case 0: - if(search_str_list(hd->drivers, "sd")) { - hd->sub_class.id = sc_sdev_disk; - } - break; - - case 5: - if(search_str_list(hd->drivers, "sr")) { - hd->sub_class.id = sc_sdev_cdrom; - } - break; - } - } - - } - - /* s390: wwpn & fcp lun */ - if(hd_attr_uint(sysfs_get_device_attr(sf_dev, "wwpn"), &ul0, 0)) { - ADD2LOG(" wwpn = 0x%016"PRIx64"\n", ul0); - scsi->wwpn = ul0; - - /* it's a bit of a hack, actually */ - t = new_str(hd_sysfs_id(sf_dev->path)); - if(t) { - if((s = strrchr(t, '/'))) *s = 0; - if((s = strrchr(t, '/'))) *s = 0; - if((s = strrchr(t, '/'))) { - scsi->controller_id = new_str(s + 1); - } - } - t = free_mem(t); - } - - if(hd_attr_uint(sysfs_get_device_attr(sf_dev, "fcp_lun"), &ul0, 0)) { - ADD2LOG(" fcp_lun = 0x%016"PRIx64"\n", ul0); - scsi->fcp_lun = ul0; - } - - /* ppc: get rom id */ - if((hd1 = hd_get_device_by_idx(hd_data, hd->attached_to)) && hd1->rom_id) { - str_printf(&hd->rom_id, 0, "%s/@%u", hd1->rom_id, (hd->slot & 0xf)); - } - - pr_str = NULL; - - if( - hd_report_this(hd_data, hd) && - hd->unix_dev_name && - hd->sub_class.id == sc_sdev_cdrom && - hd_data->in_vmware != 1 /* VMWare doesn't like it */ - ) { - PROGRESS(5, 0, hd->unix_dev_name); - fd = open(hd->unix_dev_name, O_RDONLY | O_NONBLOCK); - if(fd >= 0) { - - str_printf(&pr_str, 0, "%s cache", hd->unix_dev_name); - PROGRESS(5, 1, pr_str); - - memset(scsi_cmd_buf, 0, sizeof scsi_cmd_buf); - memset(&hdr, 0, sizeof(hdr)); - - hdr.interface_id = 'S'; - hdr.cmd_len = 6; - hdr.dxfer_direction = SG_DXFER_FROM_DEV; - hdr.dxferp = scsi_cmd_buf + 8 + 6; - hdr.dxfer_len = 0xff; - hdr.cmdp = scsi_cmd_buf + 8; - hdr.cmdp[0] = 0x1a; - hdr.cmdp[2] = 0x08; - hdr.cmdp[4] = 0xff; - - k = ioctl(fd, SG_IO, &hdr); - - if(k) { - ADD2LOG("%s status(0x1a:8) 0x%x\n", hd->unix_dev_name, k); - } - else { - unsigned char *ptr = hdr.dxferp; - - uc = ptr + 4 + ptr[3] + 2; - scsi->cache = uc[0]; - ADD2LOG(" scsi cache: 0x%02x\n", uc[0]); - - if((scsi->cache & 4)) { - hd->prog_if.id = pif_cdr; - } - } - - close(fd); - } - } - - - if( - hd_report_this(hd_data, hd) && - hd->unix_dev_name && - hd->sub_class.id == sc_sdev_disk && - !hd_probe_feature(hd_data, pr_scsi_noserial) - ) { - PROGRESS(5, 0, hd->unix_dev_name); - fd = open(hd->unix_dev_name, O_RDONLY | O_NONBLOCK); - if(fd >= 0) { - - str_printf(&pr_str, 0, "%s geo", hd->unix_dev_name); - PROGRESS(5, 1, pr_str); - - if(hd_getdisksize(hd_data, hd->unix_dev_name, fd, &geo, &size) == 1) { - /* (low-level) unformatted disk */ - hd->is.notready = 1; - } - - if(geo) add_res_entry(&hd->res, geo); - if(size) add_res_entry(&hd->res, size); - - str_printf(&pr_str, 0, "%s serial", hd->unix_dev_name); - PROGRESS(5, 2, pr_str); - - memset(scsi_cmd_buf, 0, sizeof scsi_cmd_buf); - memset(&hdr, 0, sizeof(hdr)); - - hdr.interface_id = 'S'; - hdr.cmd_len = 6; - hdr.dxfer_direction = SG_DXFER_FROM_DEV; - hdr.dxferp = scsi_cmd_buf + 8 + 6; - hdr.dxfer_len = 0x24; - hdr.cmdp = scsi_cmd_buf + 8; - hdr.cmdp[0] = 0x12; - hdr.cmdp[1] = 0x01; - hdr.cmdp[2] = 0x80; - hdr.cmdp[4] = 0x24; - - k = ioctl(fd, SG_IO, &hdr); - - if(k) { - ADD2LOG("%s status(0x12) 0x%x\n", scsi->dev_name, k); - } - else { - unsigned char *ptr = hdr.dxferp; - - ADD2LOG(" serial id len: %u\n", ptr[3]); - - if((hd->serial = canon_str(ptr + 4, ptr[3]))) { - if(!*hd->serial) hd->serial = free_mem(hd->serial); - } - } - - close(fd); - } - } - - pr_str = free_mem(pr_str); - - - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_scanner - ) { - hd->base_class.id = bc_scanner; - } - - // ###### FIXME: usb-storage: disk vs. floppy? - -} - - -void read_partitions(hd_data_t *hd_data) -{ - str_list_t *sl, *sl0, *pl0 = NULL; - char buf[256], *s1, *name, *base; - char *last_base = new_str(" "); - char *last_name = new_str(" "); - int l, is_disk; - - if(!(sl0 = read_file(PROC_PARTITIONS, 2, 0))) return; - - if(hd_data->debug) { - ADD2LOG("----- "PROC_PARTITIONS" -----\n"); - for(sl = sl0; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- "PROC_PARTITIONS" end -----\n"); - } - - for(sl = sl0; sl; sl = sl->next) { - *buf = 0; - if(sscanf(sl->str, "%*s %*s %*s %255s", buf) > 0) { - if(*buf) add_str_list(&pl0, buf); - } - } - - free_str_list(sl0); - - for(is_disk = 1, sl = pl0; sl; sl = sl->next) { - base = sl->str; - l = strlen(base); - if(!l) continue; - - s1 = base + l - 1; - while(isdigit(*s1) && s1 > base) s1--; - if(s1 == base) continue; - - name = new_str(base); - s1[1] = 0; - - if(!strcmp(last_base, base)) { - if(!strcmp(last_name, base)) is_disk = 0; - } - else { - is_disk = strncmp(last_name, base, strlen(last_name)) ? 1 : 0; - } - - if(!search_str_list(hd_data->cdroms, name)) { - if( - strncmp(name, "loop", sizeof "loop" - 1) && - ( - hd_data->flags.list_md || - ( - strncmp(name, "md", sizeof "md" - 1) && - strncmp(name, "dm-", sizeof "dm-" - 1) - ) - ) - ) { - add_str_list(is_disk ? &hd_data->disks : &hd_data->partitions, name); - } - } - free_mem(last_base); - free_mem(last_name); - - last_base = new_str(base); - last_name = name; name = NULL; - } - - free_mem(last_base); - free_mem(last_name); - - free_str_list(pl0); - - if(hd_data->debug) { - ADD2LOG("disks:\n"); - for(sl = hd_data->disks; sl; sl = sl->next) ADD2LOG(" %s\n", sl->str); - ADD2LOG("partitions:\n"); - for(sl = hd_data->partitions; sl; sl = sl->next) ADD2LOG(" %s\n", sl->str); - } -} - - -/* - * Read iso9660/el torito info, if there is a CD inserted. - * Returns NULL if nothing was found - */ -cdrom_info_t *hd_read_cdrom_info(hd_data_t *hd_data, hd_t *hd) -{ - int fd; - char *s; - cdrom_info_t *ci; - struct iso_primary_descriptor iso_desc; - unsigned char sector[0x800]; - unsigned et; - unsigned u0, u1, u2; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_read_cdrom_info, hd_data), hd_data); - } -#endif - - /* free existing entry */ - if(hd->detail && hd->detail->type != hd_detail_cdrom) { - hd->detail = free_hd_detail(hd->detail); - } - - if(!hd->detail) { - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_cdrom; - hd->detail->cdrom.data = new_mem(sizeof *hd->detail->cdrom.data); - } - - ci = hd->detail->cdrom.data; - - hd->is.notready = 0; - - if((fd = open(hd->unix_dev_name, O_RDONLY)) < 0) { - /* we are here if there is no CD in the drive */ - hd->is.notready = 1; - return NULL; - } - - ci->iso9660.ok = 0; - if( - lseek(fd, 0x8000, SEEK_SET) >= 0 && - read(fd, &iso_desc, sizeof iso_desc) == sizeof iso_desc - ) { - ci->cdrom = 1; - if(!memcmp(iso_desc.id, "CD001", 5)) { - ci->iso9660.ok = 1; - /* now, fill in the fields */ - s = canon_str(iso_desc.volume_id, sizeof iso_desc.volume_id); - if(!*s) s = free_mem(s); - ci->iso9660.volume = s; - - s = canon_str(iso_desc.publisher_id, sizeof iso_desc.publisher_id); - if(!*s) s = free_mem(s); - ci->iso9660.publisher = s; - - s = canon_str(iso_desc.preparer_id, sizeof iso_desc.preparer_id); - if(!*s) s = free_mem(s); - ci->iso9660.preparer = s; - - s = canon_str(iso_desc.application_id, sizeof iso_desc.application_id); - if(!*s) s = free_mem(s); - ci->iso9660.application = s; - - s = canon_str(iso_desc.creation_date, sizeof iso_desc.creation_date); - if(!*s) s = free_mem(s); - ci->iso9660.creation_date = s; - } - } - - if( - ci->iso9660.ok && - lseek(fd, 0x8800, SEEK_SET) >= 0 && - read(fd, §or, sizeof sector) == sizeof sector - ) { - if( - sector[0] == 0 && sector[6] == 1 && - !memcmp(sector + 1, "CD001", 5) && - !memcmp(sector + 7, "EL TORITO SPECIFICATION", 23) - ) { - et = sector[0x47] + (sector[0x48] << 8) + (sector[0x49] << 16) + (sector[0x4a] << 24); - ADD2LOG(" %s: el torito boot catalog at 0x%04x\n", ci->name, et); - if( - lseek(fd, et * 0x800, SEEK_SET) >= 0 && - read(fd, §or, sizeof sector) == sizeof sector && - sector[0] == 1 - ) { - ci->el_torito.ok = 1; - ci->el_torito.catalog = et; - ci->el_torito.platform = sector[1]; - s = canon_str(sector + 4, 24); - if(!*s) s = free_mem(s); - ci->el_torito.id_string = s; - ci->el_torito.bootable = sector[0x20] == 0x88 ? 1 : 0; - ci->el_torito.media_type = sector[0x21]; - ADD2LOG(" media type: %u\n", ci->el_torito.media_type); - ci->el_torito.load_address = (sector[0x22] + (sector[0x23] << 8)) << 4; - ADD2LOG(" load address: 0x%04x\n", ci->el_torito.load_address); -#if 0 - if(ci->el_torito.platform == 0 && ci->el_torito.load_address == 0) - ci->el_torito.load_address = 0x7c00; -#endif - ci->el_torito.load_count = sector[0x26] + (sector[0x27] << 8); - ci->el_torito.start = sector[0x28] + (sector[0x29] << 8) + (sector[0x2a] << 16) + (sector[0x2b] << 24); - if(ci->el_torito.media_type >= 1 && ci->el_torito.media_type <= 3) { - ci->el_torito.geo.c = 80; - ci->el_torito.geo.h = 2; - } - switch(ci->el_torito.media_type) { - case 1: - ci->el_torito.geo.s = 15; - break; - case 2: - ci->el_torito.geo.s = 18; - break; - case 3: - ci->el_torito.geo.s = 36; - break; - } - if( - lseek(fd, ci->el_torito.start * 0x800, SEEK_SET) >= 0 && - read(fd, §or, sizeof sector) == sizeof sector - ) { - if(ci->el_torito.media_type == 4) { - /* ##### we should go on and read the 1st partition sector in this case... */ - ci->el_torito.geo.h = (unsigned) sector[0x1be + 5] + 1; - ci->el_torito.geo.s = sector[0x1be + 6] & 0x3f; - ci->el_torito.geo.c = sector[0x1be + 7] + (((unsigned) sector[0x1be + 6] >> 6) << 8); - } - if( - sector[0x1fe] == 0x55 && sector[0x1ff] == 0xaa && - sector[0x0b] == 0 && sector[0x0c] == 2 && - sector[0x0e] == 1 && sector[0x0f] == 0 - ) { - u0 = sector[0x13] + (sector[0x14] << 8); /* partition size */ - u1 = sector[0x18] + (sector[0x19] << 8); /* sectors per track */ - u2 = sector[0x1a] + (sector[0x1b] << 8); /* heads */ - u0 = u0 ? u0 : sector[0x20] + (sector[0x21] << 8) + (sector[0x22] << 16) + ((unsigned) sector[0x23] << 24); - if(sector[0x26] == 0x29) { - s = canon_str(sector + 0x2b, 11); - if(!*s) s = free_mem(s); - ci->el_torito.label = s; - } - if(!ci->el_torito.label) { - s = canon_str(sector + 3, 8); - if(!*s) s = free_mem(s); - ci->el_torito.label = s; - } - if( - (ci->el_torito.media_type == 0 || ci->el_torito.media_type > 3) && - u0 && u1 && u2 - ) { - ci->el_torito.geo.h = u2; - ci->el_torito.geo.s = u1; - ci->el_torito.geo.size = u0; - ci->el_torito.geo.c = ci->el_torito.geo.size / (u1 * u2); - } - } - } - - ci->el_torito.geo.size = ci->el_torito.geo.s * ci->el_torito.geo.c * ci->el_torito.geo.h; - } - } - } - - close(fd); - - return ci; -} - - -/* - * Read the list of CDROM devices known to the kernel. The info is taken - * from /proc/sys/dev/cdrom/info. - */ -void read_cdroms(hd_data_t *hd_data) -{ - char *s, *t, *v; - str_list_t *sl, *sl0; - cdrom_info_t *ci; - int i, line, entries = 0; - unsigned val; - - if(!(sl0 = read_file(PROC_CDROM_INFO, 2, 0))) return; - - if((hd_data->debug & HD_DEB_CDROM)) { - ADD2LOG("----- "PROC_CDROM_INFO" -----\n"); - for(sl = sl0; sl; sl = sl->next) { - if(*sl->str != '\n') ADD2LOG("%s", sl->str); - } - ADD2LOG("----- "PROC_CDROM_INFO" end -----\n"); - } - - for(sl = sl0; sl; sl = sl->next) { - if( - (line = 0, strstr(sl->str, "drive name:") == sl->str) || - (line++, strstr(sl->str, "drive speed:") == sl->str) || - (line++, strstr(sl->str, "Can write CD-R:") == sl->str) || - (line++, strstr(sl->str, "Can write CD-RW:") == sl->str) || - (line++, strstr(sl->str, "Can read DVD:") == sl->str) || - (line++, strstr(sl->str, "Can write DVD-R:") == sl->str) || - (line++, strstr(sl->str, "Can write DVD-RAM:") == sl->str) - ) { - s = strchr(sl->str, ':') + 1; - i = 0; - while((t = strsep(&s, " \t\n"))) { - if(!*t) continue; - i++; - switch(line) { - case 0: /* drive name */ - ci = new_cdrom_entry(&hd_data->cdrom); - entries++; - add_str_list(&hd_data->cdroms, t); - ci->name = new_str(t); - break; - - case 1: /* drive speed */ - case 2: /* Can write CD-R */ - case 3: /* Can write CD-RW */ - case 4: /* Can read DVD */ - case 5: /* Can write DVD-R */ - case 6: /* Can write DVD-RAM */ - ci = get_cdrom_entry(hd_data->cdrom, entries - i); - if(ci) { - val = strtoul(t, &v, 10); - if(!*v) { - switch(line) { - case 1: - ci->speed = val; - break; - case 2: - ci->cdr = val; - break; - case 3: - ci->cdrw = val; - break; - case 4: - ci->dvd = val; - break; - case 5: - ci->dvdr = val; - break; - case 6: - ci->dvdram = val; - break; - } - } - } - break; - } - } - } - } - - free_str_list(sl0); -} - - -/* add new entries at the _start_ of the list */ -cdrom_info_t *new_cdrom_entry(cdrom_info_t **ci) -{ - cdrom_info_t *new_ci = new_mem(sizeof *new_ci); - - new_ci->next = *ci; - return *ci = new_ci; -} - - -/* return nth entry */ -cdrom_info_t *get_cdrom_entry(cdrom_info_t *ci, int n) -{ - if(n < 0) return NULL; - - while(n--) { - if(!ci) return NULL; - ci = ci->next; - } - - return ci; -} - - -/* - * Add generic scsi devs. - */ -void hd_scan_sysfs_scsi(hd_data_t *hd_data) -{ - if(!hd_probe_feature(hd_data, pr_scsi)) return; - - hd_data->module = mod_scsi; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "scsi modules"); - - load_module(hd_data, "sg"); - - PROGRESS(2, 0, "scsi tape"); - - get_scsi_tape(hd_data); - - PROGRESS(3, 0, "scsi generic"); - - get_generic_scsi_devs(hd_data); -} - - -void get_scsi_tape(hd_data_t *hd_data) -{ - char *s, *t; - unsigned u1, u2, u3; - uint64_t ul0; - hd_t *hd, *hd1; - hd_dev_num_t dev_num; - - struct sysfs_class *sf_class; - struct sysfs_class_device *sf_cdev; - struct sysfs_device *sf_dev; - struct dlist *sf_cdev_list; - - sf_class = sysfs_open_class("scsi_tape"); - - if(!sf_class) { - ADD2LOG("sysfs: no such class: scsi_tape\n"); - return; - } - - sf_cdev_list = sysfs_get_class_devices(sf_class); - if(sf_cdev_list) dlist_for_each_data(sf_cdev_list, sf_cdev, struct sysfs_class_device) { - ADD2LOG( - " scsi tape: name = %s, path = %s\n", - sf_cdev->name, - hd_sysfs_id(sf_cdev->path) - ); - - memset(&dev_num, 0, sizeof dev_num); - - if((s = hd_attr_str(sysfs_get_classdev_attr(sf_cdev, "dev")))) { - if(sscanf(s, "%u:%u", &u1, &u2) == 2) { - dev_num.type = 'c'; - dev_num.major = u1; - dev_num.minor = u2; - dev_num.range = 1; - } - ADD2LOG(" dev = %u:%u\n", u1, u2); - } - - if(hd_attr_uint(sysfs_get_classdev_attr(sf_cdev, "range"), &ul0, 0)) { - dev_num.range = ul0; - ADD2LOG(" range = %u\n", dev_num.range); - } - - sf_dev = sysfs_get_classdev_device(sf_cdev); - if(sf_dev) { - s = hd_sysfs_id(sf_dev->path); - ADD2LOG( - " scsi device: bus = %s, bus_id = %s driver = %s\n path = %s\n", - sf_dev->bus, - sf_dev->bus_id, - sf_dev->driver_name, - s - ); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->module == hd_data->module && - hd->sysfs_device_link && - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_tape && - s && - !strcmp(hd->sysfs_device_link, s) - ) break; - } - - if(!hd) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_storage_device; - hd->sub_class.id = sc_sdev_tape; - - hd->bus.id = bus_scsi; - - hd->sysfs_device_link = new_str(s); - - hd->sysfs_bus_id = new_str(sf_dev->bus_id); - - /* parent has longest matching sysfs id */ - u2 = strlen(s); - for(u3 = 0, hd1 = hd_data->hd; hd1; hd1 = hd1->next) { - if(hd1->sysfs_id) { - u1 = strlen(hd1->sysfs_id); - if(u1 > u3 && u1 <= u2 && !strncmp(s, hd1->sysfs_id, u1)) { - u3 = u1; - hd->attached_to = hd1->idx; - } - } - } - - /* find longest matching sysfs id we have a driver for */ - s = new_str(s); - t = strrchr(s, '/'); - if(t) *t = 0; - t = hd_sysfs_find_driver(hd_data, s, 0); - if(t) { - add_str_list(&hd->drivers, t); - } - s = free_mem(s); - - if( - sf_dev->driver_name && - *sf_dev->driver_name && - strcmp(sf_dev->driver_name, "unknown") - ) { - add_str_list(&hd->drivers, sf_dev->driver_name); - } - - add_scsi_sysfs_info(hd_data, hd, sf_dev); - } - - s = hd_sysfs_name2_dev(sf_cdev->name); - - if(!hd->unix_dev_name || strlen(s) + sizeof "/dev/" - 1 < strlen(hd->unix_dev_name)) { - str_printf(&hd->unix_dev_name, 0, "/dev/%s", s); - hd->unix_dev_num = dev_num; - free_mem(hd->sysfs_id); - hd->sysfs_id = new_str(hd_sysfs_id(sf_cdev->path)); - } - } - } - - sysfs_close_class(sf_class); -} - - -void get_generic_scsi_devs(hd_data_t *hd_data) -{ - char *s, *t; - unsigned u1, u2, u3; - uint64_t ul0; - hd_t *hd, *hd1; - hd_dev_num_t dev_num; - - struct sysfs_class *sf_class; - struct sysfs_class_device *sf_cdev; - struct sysfs_device *sf_dev; - struct dlist *sf_cdev_list; - - sf_class = sysfs_open_class("scsi_generic"); - - if(!sf_class) { - ADD2LOG("sysfs: no such class: scsi_generic\n"); - return; - } - - sf_cdev_list = sysfs_get_class_devices(sf_class); - if(sf_cdev_list) dlist_for_each_data(sf_cdev_list, sf_cdev, struct sysfs_class_device) { - ADD2LOG( - " scsi: name = %s, path = %s\n", - sf_cdev->name, - hd_sysfs_id(sf_cdev->path) - ); - - memset(&dev_num, 0, sizeof dev_num); - - if((s = hd_attr_str(sysfs_get_classdev_attr(sf_cdev, "dev")))) { - if(sscanf(s, "%u:%u", &u1, &u2) == 2) { - dev_num.type = 'c'; - dev_num.major = u1; - dev_num.minor = u2; - dev_num.range = 1; - } - ADD2LOG(" dev = %u:%u\n", u1, u2); - } - - if(hd_attr_uint(sysfs_get_classdev_attr(sf_cdev, "range"), &ul0, 0)) { - dev_num.range = ul0; - ADD2LOG(" range = %u\n", dev_num.range); - } - - sf_dev = sysfs_get_classdev_device(sf_cdev); - if(sf_dev) { - s = hd_sysfs_id(sf_dev->path); - - ADD2LOG( - " scsi device: bus = %s, bus_id = %s driver = %s\n path = %s\n", - sf_dev->bus, - sf_dev->bus_id, - sf_dev->driver_name, - s - ); - } - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->sysfs_device_link && - hd->bus.id == bus_scsi && - s && - !strcmp(hd->sysfs_device_link, s) - ) break; - } - - if(hd) { - if(!hd->unix_dev_name2) { - str_printf(&hd->unix_dev_name2, 0, "/dev/%s", hd_sysfs_name2_dev(sf_cdev->name)); - hd->unix_dev_num2 = dev_num; - } - } - - hd = NULL; - - if( - sf_dev && - sf_dev->driver_name && - !strcmp(sf_dev->driver_name, "unknown") - ) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_storage_device; - hd->sub_class.id = sc_sdev_other; - - str_printf(&hd->unix_dev_name, 0, "/dev/%s", hd_sysfs_name2_dev(sf_cdev->name)); - - hd->bus.id = bus_scsi; - - hd->sysfs_id = new_str(hd_sysfs_id(sf_cdev->path)); - - hd->unix_dev_num = dev_num; - - if(sf_dev) hd->sysfs_bus_id = new_str(sf_dev->bus_id); - - if(sf_dev && (s = hd_sysfs_id(sf_dev->path))) { - - /* parent has longest matching sysfs id */ - u2 = strlen(s); - for(u3 = 0, hd1 = hd_data->hd; hd1; hd1 = hd1->next) { - if(hd1->sysfs_id) { - u1 = strlen(hd1->sysfs_id); - if(u1 > u3 && u1 <= u2 && !strncmp(s, hd1->sysfs_id, u1)) { - u3 = u1; - hd->attached_to = hd1->idx; - } - } - } - - /* find longest matching sysfs id we have a driver for */ - s = new_str(s); - t = strrchr(s, '/'); - if(t) *t = 0; - t = hd_sysfs_find_driver(hd_data, s, 0); - if(t) { - add_str_list(&hd->drivers, t); - } - s = free_mem(s); - - } - - add_scsi_sysfs_info(hd_data, hd, sf_dev); - - } - - } - - sysfs_close_class(sf_class); -} - - -void add_disk_size(hd_data_t *hd_data, hd_t *hd) -{ - hd_res_t *geo, *size; - int fd; - char *pr_str; - - pr_str = NULL; - - if( - hd->unix_dev_name && - hd->sub_class.id == sc_sdev_disk - ) { - PROGRESS(5, 0, hd->unix_dev_name); - fd = open(hd->unix_dev_name, O_RDONLY | O_NONBLOCK); - if(fd >= 0) { - - str_printf(&pr_str, 0, "%s geo", hd->unix_dev_name); - PROGRESS(5, 1, pr_str); - - if(hd_getdisksize(hd_data, hd->unix_dev_name, fd, &geo, &size) == 1) { - /* (low-level) unformatted disk */ - hd->is.notready = 1; - } - - if(geo) add_res_entry(&hd->res, geo); - if(size) add_res_entry(&hd->res, size); - - close(fd); - } - } - - pr_str = free_mem(pr_str); -} - - diff --git a/src/hwinfo/src/hd/block.h b/src/hwinfo/src/hd/block.h deleted file mode 100644 index d3dad4360d..0000000000 --- a/src/hwinfo/src/hd/block.h +++ /dev/null @@ -1,2 +0,0 @@ -void hd_scan_sysfs_block(hd_data_t *hd_data); -void hd_scan_sysfs_scsi(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/braille.c b/src/hwinfo/src/hd/braille.c deleted file mode 100644 index 5095c28709..0000000000 --- a/src/hwinfo/src/hd/braille.c +++ /dev/null @@ -1,455 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "braille.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * braille displays - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#if !defined(LIBHD_TINY) && !defined(__sparc__) - -static unsigned do_alva(hd_data_t *hd_data, char *dev_name, int cnt); -static unsigned do_fhp(hd_data_t *hd_data, char *dev_name, unsigned baud, int cnt); -static unsigned do_ht(hd_data_t *hd_data, char *dev_name, int cnt); -static unsigned do_baum(hd_data_t *hd_data, char *dev_name, int cnt); - -void hd_scan_braille(hd_data_t *hd_data) -{ - hd_t *hd, *hd_tmp; - int cnt = 0; - unsigned dev, vend; - - if(!hd_probe_feature(hd_data, pr_braille)) return; - - hd_data->module = mod_braille; - - /* some clean-up */ - remove_hd_entries(hd_data); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_comm && - hd->sub_class.id == sc_com_ser && - hd->unix_dev_name && - !hd->tag.ser_skip && - !has_something_attached(hd_data, hd) - ) { - cnt++; - dev = vend = 0; - - if(hd_probe_feature(hd_data, pr_braille_alva)) { - PROGRESS(1, cnt, "alva"); - vend = MAKE_ID(TAG_SPECIAL, 0x5001); - dev = do_alva(hd_data, hd->unix_dev_name, cnt); - } - - if(!dev && hd_probe_feature(hd_data, pr_braille_fhp)) { - PROGRESS(1, cnt, "fhp_old"); - vend = MAKE_ID(TAG_SPECIAL, 0x5002); - dev = do_fhp(hd_data, hd->unix_dev_name, B19200, cnt); - if(!dev) { - PROGRESS(1, cnt, "fhp_el"); - dev = do_fhp(hd_data, hd->unix_dev_name, B38400, cnt); - } - } - - if(!dev && hd_probe_feature(hd_data, pr_braille_ht)) { - PROGRESS(1, cnt, "ht"); - vend = MAKE_ID(TAG_SPECIAL, 0x5003); - dev = do_ht(hd_data, hd->unix_dev_name, cnt); - } - - if(!dev && hd_probe_feature(hd_data, pr_braille_baum)) { - PROGRESS(1, cnt, "baum"); - vend = MAKE_ID(TAG_SPECIAL, 0x5004); - dev = do_baum(hd_data, hd->unix_dev_name, cnt); - } - - if(dev) { - hd_tmp = add_hd_entry(hd_data, __LINE__, 0); - hd_tmp->base_class.id = bc_braille; - hd_tmp->bus.id = bus_serial; - hd_tmp->unix_dev_name = new_str(hd->unix_dev_name); - hd_tmp->attached_to = hd->idx; - hd_tmp->vendor.id = vend; - hd_tmp->device.id = dev; - } - } - } -} - - -/* - * autodetect for Alva Braille-displays - * Author: marco Skambraks - * Suse GmbH Nuernberg - * - * This is free software, placed under the terms of the - * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. -*/ - -/* Communication codes */ -#define BRL_ID "\033ID=" - - -#define WAIT_DTR 700000 -#define WAIT_FLUSH 200 - -unsigned do_alva(hd_data_t *hd_data, char *dev_name, int cnt) -{ - int fd, i, timeout = 100; - struct termios oldtio, newtio; /* old & new terminal settings */ - int model = -1; - unsigned char buffer[sizeof BRL_ID]; - unsigned dev = 0; - - PROGRESS(2, cnt, "alva open"); - - /* Open the Braille display device for random access */ - fd = open(dev_name, O_RDWR | O_NOCTTY); - if(fd < 0) return 0; - - tcgetattr(fd, &oldtio); /* save current settings */ - - /* Set flow control and 8n1, enable reading */ - memset(&newtio, 0, sizeof newtio); - newtio.c_cflag = CRTSCTS | CS8 | CLOCAL | CREAD; - /* Ignore bytes with parity errors and make terminal raw and dumb */ - newtio.c_iflag = IGNPAR; - newtio.c_oflag = 0; /* raw output */ - newtio.c_lflag = 0; /* don't echo or generate signals */ - newtio.c_cc[VMIN] = 0; /* set nonblocking read */ - newtio.c_cc[VTIME] = 0; - - PROGRESS(3, cnt, "alva init ok"); - - PROGRESS(4, cnt, "alva read data"); - - /* autodetecting ABT model */ - /* to force DTR off */ - cfsetispeed(&newtio, B0); - cfsetospeed(&newtio, B0); - tcsetattr(fd, TCSANOW, &newtio); /* activate new settings */ - usleep(WAIT_DTR); - - tcflush(fd, TCIOFLUSH); /* clean line */ - usleep(WAIT_FLUSH); - - /* DTR back on */ - cfsetispeed(&newtio, B9600); - cfsetospeed(&newtio, B9600); - tcsetattr(fd, TCSANOW, &newtio); /* activate new settings */ - usleep(WAIT_DTR); /* give time to send ID string */ - - if((i = read(fd, buffer, sizeof buffer)) == sizeof buffer) { - if(!strncmp(buffer, BRL_ID, sizeof BRL_ID - 1)) { - /* Find out which model we are connected to... */ - switch(model = buffer[sizeof buffer - 1]) - { - case 1: - case 2: - case 3: - case 4: - case 0x0b: - case 0x0d: - case 0x0e: - dev = MAKE_ID(TAG_SPECIAL, model); - break; - } - } - } - ADD2LOG("alva.%d@%s[%d]: ", timeout, dev_name, i); - if(i > 0) hexdump(&hd_data->log, 1, i, buffer); - ADD2LOG("\n"); - - PROGRESS(5, cnt, "alva read done"); - - /* reset serial lines */ - tcflush(fd, TCIOFLUSH); - tcsetattr(fd, TCSAFLUSH, &oldtio); - close(fd); - - return dev; -} - - -/* - * autodetect for Papenmeier Braille-displays - * Author: marco Skambraks - * Suse GmbH Nuernberg - * - * This is free software, placed under the terms of the - * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. - */ - -unsigned do_fhp(hd_data_t *hd_data, char *dev_name, unsigned baud, int cnt) -{ - int fd, i; - char crash[] = { 2, 'S', 0, 0, 0, 0 }; - unsigned char buf[10]; - struct termios oldtio, newtio; /* old & new terminal settings */ - unsigned dev; - - PROGRESS(2, cnt, "fhp open"); - - /* Now open the Braille display device for random access */ - fd = open(dev_name, O_RDWR | O_NOCTTY); - if(fd < 0) return 0; - - tcgetattr(fd, &oldtio); /* save current settings */ - - /* Set bps, flow control and 8n1, enable reading */ - memset(&newtio, 0, sizeof newtio); - newtio.c_cflag = baud | CS8 | CLOCAL | CREAD; - - /* Ignore bytes with parity errors and make terminal raw and dumb */ - newtio.c_iflag = IGNPAR; - newtio.c_oflag = 0; /* raw output */ - newtio.c_lflag = 0; /* don't echo or generate signals */ - newtio.c_cc[VMIN] = 0; /* set nonblocking read */ - newtio.c_cc[VTIME] = 0; - tcflush(fd, TCIFLUSH); /* clean line */ - tcsetattr(fd, TCSANOW, &newtio); /* activate new settings */ - - PROGRESS(3, cnt, "fhp init ok"); - - crash[2] = 0x200 >> 8; - crash[3] = 0x200 & 0xff; - crash[5] = (7+10) & 0xff; - - write(fd, crash, sizeof crash); - write(fd, "1111111111",10); - write(fd, "\03", 1); - - crash[2] = 0x0 >> 8; - crash[3] = 0x0 & 0xff; - crash[5] = 5 & 0xff; - - write(fd, crash, sizeof crash); - write(fd, "1111111111", 10); - write(fd, "\03", 1); - - usleep(500000); /* 100000 should be enough */ - - PROGRESS(4, cnt, "fhp write ok"); - - i = read(fd, &buf, 10); - - PROGRESS(5, cnt, "fhp read done"); - - ADD2LOG("fhp@%s[%d]: ", dev_name, i); - if(i > 0) hexdump(&hd_data->log, 1, i, buf); - ADD2LOG("\n"); - - dev = 0; - if(i == 10 && buf[0] == 0x02 && buf[1] == 0x49) { - switch(buf[2]) { - case 1: - case 2: - case 3: - case 64: - case 65: - case 66: - case 67: - case 68: - dev = buf[2]; - dev = MAKE_ID(TAG_SPECIAL, dev); - break; - } - } - if(!dev) ADD2LOG("no fhp display: 0x%02x\n", i >= 2 ? buf[2] : 0); - - /* reset serial lines */ - tcflush(fd, TCIOFLUSH); - tcsetattr(fd, TCSAFLUSH, &oldtio); - close(fd); - - return dev; -} - - -/* - * autodetect for Handy Tech Braille-displays - * Author: marco Skambraks - * Suse GmbH Nuernberg - * - * This is free software, placed under the terms of the - * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. -*/ - -unsigned do_ht(hd_data_t *hd_data, char *dev_name, int cnt) -{ - int fd, i; - unsigned char code = 0xff, buf[2] = { 0, 0 }; - struct termios oldtio, newtio; - unsigned dev = 0; - - PROGRESS(2, cnt, "ht open"); - - fd = open(dev_name, O_RDWR | O_NOCTTY); - if(fd < 0) return 0; - - tcgetattr(fd, &oldtio); - - newtio = oldtio; - newtio.c_cflag = CLOCAL | PARODD | PARENB | CREAD | CS8; - newtio.c_iflag = IGNPAR; - newtio.c_oflag = 0; - newtio.c_lflag = 0; - newtio.c_cc[VMIN] = 0; - newtio.c_cc[VTIME] = 0; - - i = 0; - /* - * Force down DTR, flush any pending data and then the port to what we - * want it to be - */ - if( - !( - cfsetispeed(&newtio, B0) || - cfsetospeed(&newtio, B0) || - tcsetattr(fd, TCSANOW, &newtio) || - tcflush(fd, TCIOFLUSH) || - cfsetispeed(&newtio, B19200) || - cfsetospeed(&newtio, B19200) || - tcsetattr(fd, TCSANOW, &newtio) - ) - ) { - /* Pause to let them take effect */ - usleep(500); - - PROGRESS(3, cnt, "ht init ok"); - - write(fd, &code, 1); /* reset brl */ - usleep(5000); /* wait for reset */ - - PROGRESS(4, cnt, "ht write ok"); - - read(fd, buf, 1); - i = 1; - - PROGRESS(5, cnt, "ht read done"); - - if(buf[0] == 0xfe) { /* resetok now read id */ - usleep(5000); - read(fd, buf + 1, 1); - i = 2; - - PROGRESS(6, cnt, "ht read done"); - - switch(buf[1]) { - case 0x05: - case 0x09: - case 0x44: - case 0x74: - case 0x80: - case 0x84: - case 0x88: - case 0x89: - dev = buf[1]; - dev = MAKE_ID(TAG_SPECIAL, dev); - break; - } - } - } - - ADD2LOG("ht@%s[%d]: ", dev_name, i); - if(i > 0) hexdump(&hd_data->log, 1, i, buf); - ADD2LOG("\n"); - - if(!dev) ADD2LOG("no ht display: 0x%02x\n", buf[1]); - - /* reset serial lines */ - tcflush(fd, TCIOFLUSH); - tcsetattr(fd, TCSAFLUSH, &oldtio); - close(fd); - - return dev; -} - - -/* - * autodetect for Baum Braille-displays - * Author: marco Skambraks - * Suse GmbH Nuernberg - * - * This is free software, placed under the terms of the - * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. -*/ - -#define BAUDRATE B19200 /* But both run at 19k2 */ -#define MAXREAD 18 - -unsigned do_baum(hd_data_t *hd_data, char *dev_name, int cnt) -{ - static char device_id[] = { 0x1b, 0x84 }; - int fd; - struct termios oldtio, curtio; - unsigned char buf[MAXREAD + 1]; - int i; - - PROGRESS(2, cnt, "baum open"); - - fd = open(dev_name, O_RDWR | O_NOCTTY); - if(fd < 0) return 0; - - tcgetattr(fd, &curtio); - - oldtio = curtio; - cfmakeraw(&curtio); - - /* no SIGTTOU to backgrounded processes */ - curtio.c_lflag &= ~TOSTOP; - curtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD; - /* no input parity check, no XON/XOFF */ - curtio.c_iflag &= ~(INPCK | ~IXOFF); - - curtio.c_cc[VTIME] = 1; /* 0.1s timeout between chars on input */ - curtio.c_cc[VMIN] = 0; /* no minimum input */ - - tcsetattr(fd, TCSAFLUSH, &curtio); - - /* write ID-request */ - write(fd, device_id, sizeof device_id); - - /* wait for response */ - usleep(100000); - - PROGRESS(3, cnt, "baum write ok"); - - i = read(fd, buf, sizeof buf - 1); - buf[sizeof buf - 1] = 0; - - PROGRESS(4, cnt, "baum read done"); - - ADD2LOG("baum@%s[%d]: ", dev_name, i); - if(i > 0) hexdump(&hd_data->log, 1, i, buf); - ADD2LOG("\n"); - - /* reset serial lines */ - tcflush(fd, TCIOFLUSH); - tcsetattr(fd, TCSAFLUSH, &oldtio); - close(fd); - - if(!strcmp(buf + 2, "Baum Vario40")) return 1; - if(!strcmp(buf + 2, "Baum Vario80")) return 2; - - return 0; -} - - -#endif /* !defined(LIBHD_TINY) && !defined(__sparc__) */ - diff --git a/src/hwinfo/src/hd/braille.h b/src/hwinfo/src/hd/braille.h deleted file mode 100644 index 7c5496e477..0000000000 --- a/src/hwinfo/src/hd/braille.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_braille(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/cpu.c b/src/hwinfo/src/hd/cpu.c deleted file mode 100644 index e8f4fd81f2..0000000000 --- a/src/hwinfo/src/hd/cpu.c +++ /dev/null @@ -1,777 +0,0 @@ -#include -#include -#include -#include - -#ifdef __ia64__ -#include -#include -#include -#include -#endif - -#ifdef __powerpc__ -#include -#endif - -#include "hd.h" -#include "hd_int.h" -#include "klog.h" -#include "cpu.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * cpu info - * - * Note: on other architectures, entries differ (cf. Alpha)!!! - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -static void read_cpuinfo(hd_data_t *hd_data); -static void dump_cpu_data(hd_data_t *hd_data); - -#if defined(__i386__) || defined(__x86_64__) -static inline unsigned units_per_cpu(); -#endif -#ifdef __ia64__ -static int ia64DetectSMP(hd_data_t *hd_data); -#endif - -void hd_scan_cpu(hd_data_t *hd_data) -{ - hd_t *hd0, *hd; - int i, cpus; - unsigned u; - - if(!hd_probe_feature(hd_data, pr_cpu)) return; - - hd_data->module = mod_cpu; - - /* some clean-up */ - remove_hd_entries(hd_data); - hd_data->cpu = free_str_list(hd_data->cpu); - - PROGRESS(1, 0, "cpuinfo"); - - read_cpuinfo(hd_data); - - for(hd0 = hd_data->hd; hd0; hd0 = hd0->next) { - if(hd0->base_class.id == bc_internal && hd0->sub_class.id == sc_int_cpu) break; - } - - if(!hd0 || hd0->next) return; /* 0 or > 1 entries */ - - /* only one entry, maybe UP kernel on SMP system */ - - cpus = 0; - -#ifdef __ia64__ - cpus = ia64DetectSMP(hd_data); -#endif - - for(i = 1; i < cpus; i++) { - hd = add_hd_entry(hd_data, __LINE__, 0); - u = hd->idx; - hd_copy(hd, hd0); - hd->idx = u; - hd->slot = i; - } -} - - -void read_cpuinfo(hd_data_t *hd_data) -{ - hd_t *hd; - unsigned cpus = 0; - cpu_info_t *ct; - str_list_t *sl; - -#if defined(__i386__) || defined (__x86_64__) - char model_id[80], vendor_id[80], features[0x100]; - unsigned bogo, mhz, cache, family, model, stepping; - char *t0, *t; -#endif - -#ifdef __ia64__ - char model_id[80], vendor_id[80], features[0x100]; - unsigned mhz, stepping; - char *t0, *t; -#endif - -#ifdef __alpha__ - char model_id[80], system_id[80], serial_number[80], platform[80]; - unsigned cpu_variation, cpu_revision, u, hz; - cpu_info_t *ct1; -#endif - -#ifdef __PPC__ - char model_id[80], vendor_id[80], motherboard[80]; - unsigned bogo, mhz, cache, family, model, stepping; - struct utsname un; -#endif - -#ifdef __sparc__ - char cpu_id[80], fpu_id[80], promlib[80], prom[80], type[80], mmu[80]; - unsigned u, bogo, cpus_active; -#endif - -#if defined(__s390__) || defined(__s390x__) - char vendor_id[80]; - unsigned bogo; - unsigned u0, u1, u2, u3; -#endif - - hd_data->cpu = read_file(PROC_CPUINFO, 0, 0); - if((hd_data->debug & HD_DEB_CPU)) dump_cpu_data(hd_data); - if(!hd_data->cpu) return; - -#ifdef __alpha__ - *model_id = *system_id = *serial_number = *platform = 0; - cpu_variation = cpu_revision = hz = 0; - - for(sl = hd_data->cpu; sl; sl = sl->next) { - if(sscanf(sl->str, "cpu model : %79[^\n]", model_id) == 1) continue; - if(sscanf(sl->str, "system type : %79[^\n]", system_id) == 1) continue; - if(sscanf(sl->str, "cpu variation : %u", &cpu_variation) == 1) continue; - if(sscanf(sl->str, "cpu revision : %u", &cpu_revision) == 1) continue; - if(sscanf(sl->str, "system serial number : %79[^\n]", serial_number) == 1) continue; - if(sscanf(sl->str, "cpus detected : %u", &cpus) == 1) continue; - if(sscanf(sl->str, "cycle frequency [Hz] : %u", &hz) == 1) continue; - if(sscanf(sl->str, "system variation : %79[^\n]", platform) == 1) continue; - } - - if(*model_id || *system_id) { /* at least one of those */ - ct = new_mem(sizeof *ct); - ct->architecture = arch_alpha; - if(model_id) ct->model_name = new_str(model_id); - if(system_id) ct->vend_name = new_str(system_id); - if(strncmp(serial_number, "MILO", 4) == 0) - hd_data->boot = boot_milo; - else - hd_data->boot = boot_aboot; - - ct->family = cpu_variation; - ct->model = cpu_revision; - ct->stepping = 0; - ct->cache = 0; - ct->clock = (hz + 500000) / 1000000; - - if(platform && strcmp(platform, "0")) { - ct->platform = new_str(platform); - } - - if(!cpus) cpus = 1; /* at least 1 machine had a "cpus: 0" entry... */ - for(u = 0; u < cpus; u++) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_internal; - hd->sub_class.id = sc_int_cpu; - hd->slot = u; - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_cpu; - if(u) { - hd->detail->cpu.data = ct1 = new_mem(sizeof *ct); - *ct1 = *ct; - ct1->model_name = new_str(ct1->model_name); - ct1->vend_name = new_str(ct1->vend_name); - ct1->platform = new_str(ct1->platform); - } - else { - hd->detail->cpu.data = ct; - } - } - - } -#endif /* __alpha__ */ - - -#ifdef __sparc__ - *cpu_id = *fpu_id = *promlib = *prom = *type = *mmu = 0; - cpus = cpus_active = bogo = 0; - - for(sl = hd_data->cpu; sl; sl = sl->next) { - if(sscanf(sl->str, "cpu : %79[^\n]", cpu_id) == 1); - if(sscanf(sl->str, "fpu : %79[^\n]", fpu_id) == 1); - if(sscanf(sl->str, "promlib : %79[^\n]", promlib) == 1); - if(sscanf(sl->str, "prom : %79[^\n]", prom) == 1); - if(sscanf(sl->str, "type : %79[^\n]", type) == 1); - if(sscanf(sl->str, "ncpus probed : %u", &cpus) == 1); - if(sscanf(sl->str, "ncpus active : %u", &cpus_active) == 1); - if(sscanf(sl->str, "BogoMips : %u", &bogo) == 1); - if(sscanf(sl->str, "MMU Type : %79[^\n]", mmu) == 1); - } - - if(*cpu_id) { - for(u = 0; u < cpus; u++) { - ct = new_mem(sizeof *ct); - ct->platform = new_str (type); - if(strcmp (type, "sun4u") == 0) - ct->architecture = arch_sparc64; - else - ct->architecture = arch_sparc; - - ct->model_name = new_str(cpu_id); - hd_data->boot = boot_silo; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_internal; - hd->sub_class.id = sc_int_cpu; - hd->slot = u; - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_cpu; - hd->detail->cpu.data = ct; - } - } -#endif /* sparc */ - - -#if defined(__i386__) || defined (__x86_64__) - *model_id = *vendor_id = *features = 0; - bogo = mhz = cache = family = model = stepping = 0; - - for(sl = hd_data->cpu; sl; sl = sl->next) { - if(sscanf(sl->str, "model name : %79[^\n]", model_id) == 1); - if(sscanf(sl->str, "vendor_id : %79[^\n]", vendor_id) == 1); - if(sscanf(sl->str, "flags : %255[^\n]", features) == 1); - if(sscanf(sl->str, "bogomips : %u", &bogo) == 1); - if(sscanf(sl->str, "cpu MHz : %u", &mhz) == 1); - if(sscanf(sl->str, "cache size : %u KB", &cache) == 1); - - if(sscanf(sl->str, "cpu family : %u", &family) == 1); - if(sscanf(sl->str, "model : %u", &model) == 1); - if(sscanf(sl->str, "stepping : %u", &stepping) == 1); - - if(strstr(sl->str, "processor") == sl->str || !sl->next) { /* EOF */ - if(*model_id || *vendor_id) { /* at least one of those */ - ct = new_mem(sizeof *ct); -#ifdef __i386__ - ct->architecture = arch_intel; -#endif -#ifdef __x86_64__ - ct->architecture = arch_x86_64; -#endif - if(model_id) ct->model_name = new_str(model_id); - if(vendor_id) ct->vend_name = new_str(vendor_id); - ct->family = family; - ct->model = model; - ct->stepping = stepping; - ct->cache = cache; - hd_data->boot = boot_grub; - - /* round clock to typical values */ - if(mhz >= 38 && mhz <= 42) - mhz = 40; - else if(mhz >= 88 && mhz <= 92) - mhz = 90; - else { - unsigned u, v; - - u = (mhz + 2) % 100; - v = (mhz + 2) / 100; - if(u <= 4) - u = 2; - else if(u >= 25 && u <= 29) - u = 25 + 2; - else if(u >= 33 && u <= 37) - u = 33 + 2; - else if(u >= 50 && u <= 54) - u = 50 + 2; - else if(u >= 66 && u <= 70) - u = 66 + 2; - else if(u >= 75 && u <= 79) - u = 75 + 2; - else if(u >= 80 && u <= 84) /* there are 180MHz PPros */ - u = 80 + 2; - u -= 2; - mhz = v * 100 + u; - } - - ct->clock = mhz; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_internal; - hd->sub_class.id = sc_int_cpu; - hd->slot = cpus; - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_cpu; - hd->detail->cpu.data = ct; - - if(*features) { - for(t0 = features; (t = strsep(&t0, " ")); ) { - add_str_list(&ct->features, t); - if(!strcmp(t, "ht")) ct->units = units_per_cpu(); - } - } - - *model_id = *vendor_id = 0; - bogo = mhz = cache = family = model= 0; - cpus++; - } - } - } -#endif /* __i386__ || __x86_64__ */ - - -#ifdef __PPC__ - *model_id = *vendor_id = *motherboard = 0; - bogo = mhz = cache = family = model = stepping = 0; - - for(sl = hd_data->cpu; sl; sl = sl->next) { - if(sscanf(sl->str, "machine : %79[^\n]", vendor_id) == 1); - } - - for(sl = hd_data->cpu; sl; sl = sl->next) { - if(sscanf(sl->str, "cpu : %79[^\n]", model_id) == 1); - if(sscanf(sl->str, "motherboard : %79[^\n]", motherboard) == 1); - if(sscanf(sl->str, "bogomips : %u", &bogo) == 1); - if(sscanf(sl->str, "clock : %u", &mhz) == 1); - if(sscanf(sl->str, "L2 cache : %u KB", &cache) == 1); - - if(strstr(sl->str, "processor") == sl->str || !sl->next) { /* EOF */ - if(*model_id) { /* at least one of those */ - ct = new_mem(sizeof *ct); - ct->architecture = arch_ppc; - if(model_id) { - ct->model_name = new_str(model_id); - } - - if(!uname(&un)) - if(strstr(un.machine,"ppc64")) - ct->architecture = arch_ppc64; - - if(vendor_id) ct->vend_name = new_str(vendor_id); - if(motherboard) ct->platform = new_str(motherboard); - ct->family = family; - ct->model = model; - ct->stepping = stepping; - ct->cache = cache; - hd_data->boot = boot_ppc; - ct->clock = mhz; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_internal; - hd->sub_class.id = sc_int_cpu; - hd->slot = cpus; - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_cpu; - hd->detail->cpu.data = ct; - - if(ct->vend_name && !strcmp(ct->vend_name, "PowerBook") && !hd_data->color_code) { - hd_data->color_code = 7; // black - } - - *model_id = 0; - bogo = mhz = cache = family = model= 0; - cpus++; - } - } - } -#endif /* __PPC__ */ - - -#ifdef __ia64__ - *model_id = *vendor_id = *features = 0; - mhz = stepping = 0; - - for(sl = hd_data->cpu; sl; sl = sl->next) { - if(sscanf(sl->str, "family : %79[^\n]", model_id) == 1); - if(sscanf(sl->str, "vendor : %79[^\n]", vendor_id) == 1); - if(sscanf(sl->str, "features : %255[^\n]", features) == 1); - if(sscanf(sl->str, "cpu MHz : %u", &mhz) == 1); - if(sscanf(sl->str, "revision : %u", &stepping) == 1); - - if(strstr(sl->str, "processor") == sl->str || !sl->next) { /* EOF */ - if(*model_id || *vendor_id) { /* at least one of those */ - ct = new_mem(sizeof *ct); - ct->architecture = arch_ia64; - if(model_id) ct->model_name = new_str(model_id); - if(vendor_id) ct->vend_name = new_str(vendor_id); - ct->stepping = stepping; - hd_data->boot = boot_elilo; - - /* round clock to typical values */ - if(mhz >= 38 && mhz <= 42) - mhz = 40; - else if(mhz >= 88 && mhz <= 92) - mhz = 90; - else { - unsigned u, v; - - u = (mhz + 2) % 100; - v = (mhz + 2) / 100; - if(u <= 4) - u = 2; - else if(u >= 25 && u <= 29) - u = 25 + 2; - else if(u >= 33 && u <= 37) - u = 33 + 2; - else if(u >= 50 && u <= 54) - u = 50 + 2; - else if(u >= 66 && u <= 70) - u = 66 + 2; - else if(u >= 75 && u <= 79) - u = 75 + 2; - else if(u >= 80 && u <= 84) /* there are 180MHz PPros */ - u = 80 + 2; - u -= 2; - mhz = v * 100 + u; - } - - ct->clock = mhz; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_internal; - hd->sub_class.id = sc_int_cpu; - hd->slot = cpus; - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_cpu; - hd->detail->cpu.data = ct; - - if(*features) { - for(t0 = features; (t = strsep(&t0, " ")); ) { - add_str_list(&ct->features, t); - } - } - - *model_id = *vendor_id = 0; - mhz = 0; - cpus++; - } - } - } - -#endif /* __ia64__ */ - - -#if defined(__s390__) || defined(__s390x__) - *vendor_id = 0; - bogo = 0; - - for(sl = hd_data->cpu; sl; sl = sl->next) { - if(sscanf(sl->str, "vendor_id : %79[^\n]", vendor_id) == 1); - if(sscanf(sl->str, "bogomips per cpu : %u", &bogo) == 1); - } - - for(sl = hd_data->cpu; sl; sl = sl->next) { - if( - sscanf(sl->str, "processor %u : version = %x , identification = %x , machine = %x", &u0, &u1, &u2, &u3) == 4 - ) { - ct = new_mem(sizeof *ct); -#ifdef __s390x__ - ct->architecture = arch_s390x; -#else - ct->architecture = arch_s390; -#endif - if(vendor_id) ct->vend_name = new_str(vendor_id); - ct->stepping = u1; - hd_data->boot = boot_s390; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_internal; - hd->sub_class.id = sc_int_cpu; - hd->slot = cpus; - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_cpu; - hd->detail->cpu.data = ct; - - bogo = 0; - cpus++; - } - } -#endif /* defined(__s390__) || defined(__s390x__) */ -} - -/* - * Add some cpu data to the global log. - */ -void dump_cpu_data(hd_data_t *hd_data) -{ - str_list_t *sl; - - ADD2LOG("----- /proc/cpuinfo -----\n"); - for(sl = hd_data->cpu; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- /proc/cpuinfo end -----\n"); -} - - -#if defined(__i386__) || defined(__x86_64__) -inline unsigned units_per_cpu() -{ - unsigned u; - - asm( -#ifdef __i386__ - "push %%ebx\n\t" -#else - "push %%rbx\n\t" -#endif - "mov $1,%%eax\n\t" - "cpuid\n\t" - "shr $8,%%ebx\n\t" - "movzx %%bh,%%eax\n\t" -#ifdef __i386__ - "pop %%ebx" -#else - "pop %%rbx" -#endif - : "=a" (u) - :: "%ecx", "%edx" - ); - - return u; -} -#endif - - -#ifdef __ia64__ - -/* - * IA64 SMP detection code - */ - -#define PAGE_OFFSET(addr) ((uintptr_t) (addr) & (getpagesize () - 1)) - -typedef struct -{ - uint8_t type; - uint8_t length; -} __attribute__ ((packed)) acpi_table_entry_header; - -struct acpi20_table_rsdp -{ - char signature[8]; - uint8_t checksum; - char oem_id[6]; - uint8_t revision; - uint32_t rsdt_address; - uint32_t length; - unsigned long xsdt_address; - uint8_t ext_checksum; - uint8_t reserved[3]; -} __attribute__ ((packed)); - -struct acpi_table_header -{ - char signature[4]; - uint32_t length; - uint8_t revision; - uint8_t checksum; - char oem_id[6]; - char oem_table_id[8]; - uint32_t oem_revision; - char asl_compiler_id[4]; - uint32_t asl_compiler_revision; -}; - -#define ACPI_XSDT_SIG "XSDT" -struct acpi_table_xsdt -{ - struct acpi_table_header header; - unsigned long entry[0]; -} __attribute__ ((packed)); - -#define ACPI_MADT_SIG "ACPI" -struct acpi_table_madt -{ - struct acpi_table_header header; - uint32_t lapic_address; - struct - { - uint32_t pcat_compat:1; - uint32_t reserved:31; - } flags; -} __attribute__ ((packed)); - -#define ACPI_MADT_LSAPIC 7 - -struct acpi_table_lsapic -{ - acpi_table_entry_header header; - uint8_t acpi_id; - uint8_t id; - uint8_t eid; - uint8_t reserved[3]; - struct - { - uint32_t enabled:1; - uint32_t reserved:31; - } flags; -} __attribute__ ((packed)); - -/* - * Map an ACPI table into virtual memory - */ -static struct acpi_table_header * -acpi_map_table (int mem, unsigned long addr, char *signature) -{ - /* mmap header to determine table size */ - struct acpi_table_header *table = NULL; - unsigned long offset = PAGE_OFFSET (addr); - uint8_t *mapped = mmap (NULL, - sizeof (struct acpi_table_header) + offset, - PROT_READ, - MAP_PRIVATE, - mem, - (unsigned long) addr - offset); - table = (struct acpi_table_header *) (mapped != MAP_FAILED - ? mapped + offset - : NULL); - if (table) - { - if (memcmp (table->signature, signature, sizeof (table->signature))) - { - munmap ((char *) table - offset, - sizeof (struct acpi_table_header) + offset); - return NULL; - } - { - /* re-mmap entire table */ - unsigned long size = table->length; - munmap ((uint8_t *) table - offset, - sizeof (struct acpi_table_header) + offset); - mapped = mmap (NULL, size + offset, PROT_READ, MAP_PRIVATE, mem, - (unsigned long) addr - offset); - table = (struct acpi_table_header *) (mapped != MAP_FAILED - ? mapped + offset - : NULL); - } - } - return table; -} - -/* - * Unmap an ACPI table from virtual memory - */ -static void -acpi_unmap_table (struct acpi_table_header * table) -{ - if (table) - { - unsigned long offset = PAGE_OFFSET (table); - munmap ((uint8_t *) table - offset, table->length + offset); - } -} - -int -acpi_parse_lsapic (acpi_table_entry_header *p) -{ - struct acpi_table_lsapic *lsapic = (struct acpi_table_lsapic *) p; - - return lsapic->flags.enabled; -} - -static int -acpi_parse_madt (struct acpi_table_madt *madt) -{ - acpi_table_entry_header *p, *end; - int n_cpu = 0; - - p = (acpi_table_entry_header *) (madt + 1); - end = (acpi_table_entry_header *) ((char *) madt + madt->header.length); - - while (p < end) - { - if (p->type == ACPI_MADT_LSAPIC) - n_cpu += acpi_parse_lsapic (p); - - p = (acpi_table_entry_header *) ((char *) p + p->length); - } - - return n_cpu; -} - -static int -acpi_parse_rsdp (int mem_fd, struct acpi20_table_rsdp *rsdp) -{ - int n_cpu = 0; - int i; - struct acpi_table_xsdt *xsdt = 0; - int tables; - - if (rsdp->xsdt_address) - xsdt = (struct acpi_table_xsdt *) acpi_map_table (mem_fd, rsdp->xsdt_address, - ACPI_XSDT_SIG); - if (xsdt) - { - tables = (xsdt->header.length - sizeof (struct acpi_table_header)) / 8; - for (i = 0; i < tables; i++) - { - struct acpi_table_header *dt - = acpi_map_table (mem_fd, xsdt->entry[i], ACPI_MADT_SIG); - if (dt) - n_cpu += acpi_parse_madt ((struct acpi_table_madt *) dt); - acpi_unmap_table (dt); - } - acpi_unmap_table ((struct acpi_table_header *) xsdt); - } - return n_cpu; -} - -int ia64DetectSMP(hd_data_t *hd_data) -{ - int n_cpu = 0, mem_fd, systab_fd; - struct acpi20_table_rsdp rsdp; - uint8_t *mapped; - unsigned long addr = 0, offset; - int ok = 0; - str_list_t *sl; - const char *rsd_klog = "ACPI 2.0="; - const char *rsd_systab = "ACPI20="; - char *s; - - mem_fd = open("/dev/mem", O_RDONLY); - if(mem_fd == -1) return -1; - - systab_fd = open("/proc/efi/systab", O_RDONLY); - if (systab_fd != -1) - { - char buffer[512]; - int n_read = read(systab_fd, buffer, sizeof(buffer) - 1); - close(systab_fd); - if (n_read > 0) - { - buffer[n_read] = 0; - if ((s = strstr(buffer, rsd_systab)) != NULL && - sscanf(s + strlen(rsd_systab), "%lx", &addr) == 1) - goto found_it; - } - } - - if(!hd_data->klog) read_klog(hd_data); - - for(sl = hd_data->klog; sl; sl = sl->next) { - if((s = strstr(sl->str, rsd_klog))) { - if(sscanf(s + strlen(rsd_klog), "%lx", &addr) == 1) { - found_it: - offset= PAGE_OFFSET (addr); - mapped = mmap(NULL, sizeof rsdp + offset, PROT_READ, MAP_PRIVATE, - mem_fd, (unsigned long) addr - offset); - if(mapped != MAP_FAILED) { - ADD2LOG("seek to 0x%lx\n", addr); - memcpy(&rsdp, mapped + offset, sizeof rsdp); - munmap(mapped, sizeof rsdp + offset); - ok = 1; - } - break; - } - } - } - - if(ok) { - n_cpu = acpi_parse_rsdp(mem_fd, &rsdp); - if(n_cpu) { - ADD2LOG("RSDP found at 0x%lx\n", addr); - } - } - - close (mem_fd); - - ADD2LOG("n_cpu = %d\n", n_cpu); - - return n_cpu; -} - - -#endif /* __ia64__ */ - diff --git a/src/hwinfo/src/hd/cpu.h b/src/hwinfo/src/hd/cpu.h deleted file mode 100644 index 1ff02fa928..0000000000 --- a/src/hwinfo/src/hd/cpu.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_cpu(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/edd.c b/src/hwinfo/src/hd/edd.c deleted file mode 100644 index 6a4c693b6f..0000000000 --- a/src/hwinfo/src/hd/edd.c +++ /dev/null @@ -1,242 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "hddb.h" -#include "edd.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * edd - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -static void get_edd_info(hd_data_t *hd_data); - -void hd_scan_sysfs_edd(hd_data_t *hd_data) -{ - if(!hd_probe_feature(hd_data, pr_edd)) return; - - hd_data->module = mod_edd; - - /* some clean-up */ - remove_hd_entries(hd_data); - - hd_data->flags.edd_used = 0; - - if(hd_probe_feature(hd_data, pr_edd_mod)) { - PROGRESS(1, 0, "edd mod"); - load_module(hd_data, "edd"); - } - - PROGRESS(2, 0, "edd info"); - - get_edd_info(hd_data); -} - - -void get_edd_info(hd_data_t *hd_data) -{ - hd_t *hd; - hd_res_t *res; - unsigned u, u1, u2, edd_cnt = 0, lba; - uint64_t ul0; - str_list_t *sl; - bios_info_t *bt; - edd_info_t *ei; - - struct sysfs_directory *sf_dir; - struct sysfs_directory *sf_dir_2; - struct sysfs_link *sf_link; - - for(u = 0; u < sizeof hd_data->edd / sizeof *hd_data->edd; u++) { - free_mem(hd_data->edd[u].sysfs_id); - } - - memset(hd_data->edd, 0, sizeof hd_data->edd); - - sf_dir = sysfs_open_directory("/sys/firmware/edd"); - - if(sf_dir) { - if(!sysfs_read_all_subdirs(sf_dir)) { - if(sf_dir->subdirs) { - dlist_for_each_data(sf_dir->subdirs, sf_dir_2, struct sysfs_directory) { - - if( - sscanf(sf_dir_2->name, "int13_dev%02x", &u) == 1 && - u >= 0x80 && - u <= 0xff - ) { - edd_cnt++; - - u -= 0x80; - - ei = hd_data->edd + u; - - if(hd_attr_uint(sysfs_get_directory_attribute(sf_dir_2, "sectors"), &ul0, 0)) { - ei->sectors = ul0; - } - - if(hd_attr_uint(sysfs_get_directory_attribute(sf_dir_2, "default_cylinders"), &ul0, 0)) { - ei->edd.cyls = ul0; - } - - if(hd_attr_uint(sysfs_get_directory_attribute(sf_dir_2, "default_heads"), &ul0, 0)) { - ei->edd.heads = ul0; - } - - if(hd_attr_uint(sysfs_get_directory_attribute(sf_dir_2, "default_sectors_per_track"), &ul0, 0)) { - ei->edd.sectors = ul0; - } - - if(hd_attr_uint(sysfs_get_directory_attribute(sf_dir_2, "legacy_max_cylinder"), &ul0, 0)) { - ei->legacy.cyls = ul0 + 1; - } - - if(hd_attr_uint(sysfs_get_directory_attribute(sf_dir_2, "legacy_max_head"), &ul0, 0)) { - ei->legacy.heads = ul0 + 1; - } - - if(hd_attr_uint(sysfs_get_directory_attribute(sf_dir_2, "legacy_sectors_per_track"), &ul0, 0)) { - ei->legacy.sectors = ul0; - } - - if(ei->sectors && ei->edd.heads && ei->edd.sectors) { - ei->edd.cyls = ei->sectors / (ei->edd.heads * ei->edd.sectors); - } - - sf_link = sysfs_get_directory_link(sf_dir_2, "pci_dev"); - if(sf_link) { - hd_data->edd[u].sysfs_id = new_str(hd_sysfs_id(sf_link->target)); - if((hd = hd_find_sysfs_id(hd_data, hd_data->edd[u].sysfs_id))) { - hd_data->edd[u].hd_idx = hd->idx; - } - } - - sl = hd_attr_list(sysfs_get_directory_attribute(sf_dir_2, "extensions")); - if(search_str_list(sl, "Fixed disk access")) hd_data->edd[u].ext_fixed_disk = 1; - if(search_str_list(sl, "Device locking and ejecting")) hd_data->edd[u].ext_lock_eject = 1; - if(search_str_list(sl, "Enhanced Disk Drive support")) hd_data->edd[u].ext_edd = 1; - if(search_str_list(sl, "64-bit extensions")) hd_data->edd[u].ext_64bit = 1; - - ADD2LOG( - "edd: 0x%02x\n size: %"PRIu64"\n chs default: %u/%u/%u\n chs legacy: %u/%u/%u\n caps: %s%s%s%s\n attached: #%u %s\n", - u + 0x80, - ei->sectors, - ei->edd.cyls, - ei->edd.heads, - ei->edd.sectors, - ei->legacy.cyls, - ei->legacy.heads, - ei->legacy.sectors, - ei->ext_fixed_disk ? "fixed " : "", - ei->ext_lock_eject ? "lock " : "", - ei->ext_edd ? "edd " : "", - ei->ext_64bit ? "64bit " : "", - ei->hd_idx, - ei->sysfs_id ?: "" - ); - } - } - } - } - } - - sysfs_close_directory(sf_dir); - - if(!edd_cnt) return; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk - ) { - hd->rom_id = free_mem(hd->rom_id); - } - } - - /* add BIOS drive ids to disks */ - - /* first, check sysfs link */ - for(u = 0; u < sizeof hd_data->edd / sizeof *hd_data->edd; u++) { - if(!hd_data->edd[u].hd_idx) continue; - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk && - hd->attached_to == hd_data->edd[u].hd_idx && - !hd->rom_id - ) { - str_printf(&hd->rom_id, 0, "0x%02x", u + 0x80); - hd_data->flags.edd_used = 1; - hd_data->edd[u].assigned = 1; - break; - } - } - } - - /* try based on disk size */ - for(u = 0; u < sizeof hd_data->edd / sizeof *hd_data->edd; u++) { - if(hd_data->edd[u].assigned) continue; - if(!(ul0 = hd_data->edd[u].sectors)) continue; - for(u1 = u2 = 0; u1 < sizeof hd_data->edd / sizeof *hd_data->edd; u1++) { - if(ul0 == hd_data->edd[u1].sectors) u2++; - } - - /* more than one disk with this size */ - if(u2 != 1) continue; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk && - !hd->rom_id - ) { - for(res = hd->res; res; res = res->next) { - if( - res->any.type == res_size && - res->size.unit == size_unit_sectors && - res->size.val1 == ul0 - ) break; - } - - if(!res) continue; - - str_printf(&hd->rom_id, 0, "0x%02x", u + 0x80); - hd_data->flags.edd_used = 1; - hd_data->edd[u].assigned = 1; - break; - } - } - } - - /* set lba support flag in BIOS data */ - for(lba = u = 0; u < sizeof hd_data->edd / sizeof *hd_data->edd; u++) { - if(hd_data->edd[u].ext_fixed_disk) { - lba = 1; - break; - } - } - - if(lba) { - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_internal && - hd->sub_class.id == sc_int_bios && - hd->detail && - hd->detail->type == hd_detail_bios && - (bt = hd->detail->bios.data) - ) { - bt->lba_support = lba; - } - } - } - -} - diff --git a/src/hwinfo/src/hd/edd.h b/src/hwinfo/src/hd/edd.h deleted file mode 100644 index c931ff82fb..0000000000 --- a/src/hwinfo/src/hd/edd.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_sysfs_edd(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/fb.c b/src/hwinfo/src/hd/fb.c deleted file mode 100644 index 62e3148f0d..0000000000 --- a/src/hwinfo/src/hd/fb.c +++ /dev/null @@ -1,136 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "fb.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * - * scan framebuffer devices - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -typedef struct { - unsigned width; - unsigned height; - double pix_clock; - double h_freq; - double v_freq; -} fb_info_t; - -static fb_info_t *fb_get_info(hd_data_t *hd_data); - -void hd_scan_fb(hd_data_t *hd_data) -{ - fb_info_t *fb; - hd_t *hd; - hd_res_t *res; - unsigned imac_dev, imac_vend; - unsigned imac = 0; - monitor_info_t *mi = NULL; - - if(!hd_probe_feature(hd_data, pr_fb)) return; - - hd_data->module = mod_fb; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "read info"); - - fb = fb_get_info(hd_data); - - if(fb) { - imac_dev = MAKE_ID(TAG_EISA, 0x9d03); - imac_vend = name2eisa_id("APP"); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == bc_monitor) break; - } - - if(hd && hd->device.id == imac_dev && hd->vendor.id == imac_vend) { - hd->tag.remove = 1; - remove_tagged_hd_entries(hd_data); - imac = 1; - hd = NULL; - } - - /* add monitor entry based on fb data if we have no other info */ - if(!hd) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_monitor; - if(imac) { - hd->vendor.id = imac_vend; - hd->device.id = imac_dev; - } - else { - hd->vendor.name = new_str("Generic"); - hd->device.name = new_str("Monitor"); - } - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->monitor.type = res_monitor; - res->monitor.width = fb->width; - res->monitor.height = fb->height; - res->monitor.vfreq = fb->v_freq + 0.5; - - if(!hd->detail) { - mi = new_mem(sizeof *mi); - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_monitor; - hd->detail->monitor.data = mi; - - mi->min_vsync = 50; - mi->min_hsync = 31; - mi->max_vsync = fb->v_freq * 1.11 + 0.9; - mi->max_hsync = fb->h_freq / 1000.0 + 1.9; - if(mi->max_vsync <= mi->min_vsync) mi->max_vsync = mi->min_vsync + 10; - if(mi->max_hsync <= mi->min_hsync) mi->max_hsync = mi->min_hsync + 5; - /* round up */ - mi->max_vsync = ((mi->max_vsync + 9) / 10) * 10; - } - } - } -} - -fb_info_t *fb_get_info(hd_data_t *hd_data) -{ - int fd; - struct fb_var_screeninfo fbv_info; - static fb_info_t fb_info; - fb_info_t *fb = NULL; - int h, v; - - fd = open(DEV_FB, O_RDONLY); - if(fd < 0) fd = open(DEV_FB0, O_RDONLY); - if(fd < 0) return fb; - - if(!ioctl(fd, FBIOGET_VSCREENINFO, &fbv_info)) { - h = fbv_info.left_margin + fbv_info.xres + fbv_info.right_margin + fbv_info.hsync_len; - v = fbv_info.upper_margin + fbv_info.yres + fbv_info.lower_margin + fbv_info.vsync_len; - if(fbv_info.pixclock && h && v) { - fb_info.width = fbv_info.xres; - fb_info.height = fbv_info.yres; - fb_info.pix_clock = 1e12 / fbv_info.pixclock; - fb_info.h_freq = fb_info.pix_clock / h; - fb_info.v_freq = fb_info.h_freq / v; - fb = &fb_info; - ADD2LOG("fb: size %d x %d\n", fb_info.width, fb_info.height); - ADD2LOG("fb: timing %.2f MHz, %.2f kHz, %.2f Hz\n", fb_info.pix_clock * 1e-6, fb_info.h_freq * 1e-3, fb_info.v_freq); - } - } - - close(fd); - - return fb; -} diff --git a/src/hwinfo/src/hd/fb.h b/src/hwinfo/src/hd/fb.h deleted file mode 100644 index 08b77ab225..0000000000 --- a/src/hwinfo/src/hd/fb.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_fb(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/floppy.c b/src/hwinfo/src/hd/floppy.c deleted file mode 100644 index 3c34feb50f..0000000000 --- a/src/hwinfo/src/hd/floppy.c +++ /dev/null @@ -1,162 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "klog.h" -#include "floppy.h" - -static void dump_floppy_data(hd_data_t *hd_data); - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * floppy info - * - * This should currently be called *before* scan_misc() so we can try to get - * the floppy controller resources in scan_misc() by actually accessing the - * floppy drive. (Otherwise there would be a rather longish timeout.) - * - * This is all rather strange and should be rewritten... - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - - -void hd_scan_floppy(hd_data_t *hd_data) -{ - hd_t *hd; - char b0[10], b1[10], c; - unsigned u; - int fd, i, floppy_ctrls = 0, floppy_ctrl_idx = 0; - str_list_t *sl; - hd_res_t *res; - int floppy_stat[2] = { 1, 1 }; - - if(!hd_probe_feature(hd_data, pr_floppy)) return; - - hd_data->module = mod_floppy; - - /* some clean-up */ - remove_hd_entries(hd_data); - hd_data->floppy = free_str_list(hd_data->floppy); - - PROGRESS(1, 0, "get nvram"); - - /* - * Look for existing floppy controller entries (typically there will be - * *none*). - */ - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == bc_storage && hd->sub_class.id == sc_sto_floppy) { - floppy_ctrls++; - floppy_ctrl_idx = hd->idx; - } - } - - /* - * Is enough to load the nvram module. - * - * Note: although you must be root to access /dev/nvram, every - * user can read /proc/nvram. - */ - fd = open(DEV_NVRAM, O_RDONLY | O_NONBLOCK); - if(fd >= 0) close(fd); - - if( - !(hd_data->floppy = read_file(PROC_NVRAM_24, 0, 0)) && - !(hd_data->floppy = read_file(PROC_NVRAM_22, 0, 0)) - ); - - if(hd_data->floppy && (hd_data->debug & HD_DEB_FLOPPY)) dump_floppy_data(hd_data); - - if(!hd_data->klog) read_klog(hd_data); - - for(sl = hd_data->klog; sl; sl = sl->next) { - if(sscanf(sl->str, "<4>floppy%u: no floppy controllers foun%c", &u, &c) == 2) { - if(u < sizeof floppy_stat / sizeof *floppy_stat) { - floppy_stat[u] = 0; - } - } - } - - if(hd_data->floppy) { - PROGRESS(2, 0, "nvram info"); - sl = hd_data->floppy; - } - else { - PROGRESS(2, 0, "klog info"); - sl = hd_data->klog; - } - - for(; sl; sl = sl->next) { - if(hd_data->floppy) { - i = sscanf(sl->str, " Floppy %u type : %8[0-9.]'' %8[0-9.]%c", &u, b0, b1, &c) == 4; - } - else { - i = sscanf(sl->str, "<6>Floppy drive(s): fd%u is %8[0-9.]%c", &u, b1, &c) == 3; - *b0 = 0; - } - - if(i) { - if( - !floppy_ctrls && - u < sizeof floppy_stat / sizeof *floppy_stat && - floppy_stat[u] - ) { - /* create one, if missing (there's no floppy without a controller...) */ - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_floppy; - floppy_ctrl_idx = hd->idx; - floppy_ctrls++; - } - - if(floppy_ctrls) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_storage_device; - hd->sub_class.id = sc_sdev_floppy; - hd->bus.id = bus_floppy; - hd->slot = u; - str_printf(&hd->unix_dev_name, 0, "/dev/fd%u", u); - - if(*b0) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->size.type = res_size; - res->size.val1 = str2float(b0, 2); - res->size.unit = size_unit_cinch; - } - - /* 'k' or 'M' */ - i = c == 'M' ? str2float(b1, 3) : str2float(b1, 0); - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->size.type = res_size; - res->size.val1 = i << 1; - res->size.val2 = 0x200; - res->size.unit = size_unit_sectors; - - /* the only choice... */ - if(floppy_ctrls == 1) hd->attached_to = floppy_ctrl_idx; - } - } - } -} - - -/* - * Add floppy data to the global log. - */ -void dump_floppy_data(hd_data_t *hd_data) -{ - str_list_t *sl; - - ADD2LOG("----- /proc/nvram -----\n"); - for(sl = hd_data->floppy; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- /proc/nvram end -----\n"); -} diff --git a/src/hwinfo/src/hd/floppy.h b/src/hwinfo/src/hd/floppy.h deleted file mode 100644 index c12815a139..0000000000 --- a/src/hwinfo/src/hd/floppy.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_floppy(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/hd.c b/src/hwinfo/src/hd/hd.c deleted file mode 100644 index 8db54e3f84..0000000000 --- a/src/hwinfo/src/hd/hd.c +++ /dev/null @@ -1,5684 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -typedef unsigned long kernel_ulong_t; -#include -#include -#include -#define _LINUX_AUDIT_H_ -#include - -#define u64 uint64_t - -#ifndef BLKSSZGET -#define BLKSSZGET _IO(0x12,104) /* get block device sector size */ -#endif - -#include "hd.h" -#include "hddb.h" -#include "hd_int.h" -#include "smbios.h" -#include "memory.h" -#include "isapnp.h" -#include "monitor.h" -#include "cpu.h" -#include "misc.h" -#include "mouse.h" -#include "floppy.h" -#include "bios.h" -#include "serial.h" -#include "net.h" -#include "version.h" -#include "usb.h" -#include "adb.h" -#include "modem.h" -#include "parallel.h" -#include "isa.h" -#include "isdn.h" -#include "kbd.h" -#include "prom.h" -#include "sbus.h" -#include "int.h" -#include "braille.h" -#include "sys.h" -#include "manual.h" -#include "fb.h" -#include "pppoe.h" -#include "pcmcia.h" -#include "s390.h" -#include "pci.h" -#include "block.h" -#include "edd.h" -#include "input.h" -#include "wlan.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * various functions commmon to all probing modules - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#ifdef __i386__ -#define HD_ARCH "ia32" -#endif - -#ifdef __ia64__ -#define HD_ARCH "ia64" -#endif - -#ifdef __alpha__ -#define HD_ARCH "axp" -#endif - -#ifdef __PPC__ -#define HD_ARCH "ppc" -#endif - -#ifdef __sparc__ -#define HD_ARCH "sparc" -#endif - -#ifdef __s390x__ -#define HD_ARCH "s390x" -#else -#ifdef __s390__ -#define HD_ARCH "s390" -#endif -#endif - -#ifdef __arm__ -#define HD_ARCH "arm" -#endif - -#ifdef __mips__ -#define HD_ARCH "mips" -#endif - -#ifdef __x86_64__ -#define HD_ARCH "x86-64" -#endif - -#ifdef __hppa__ -#define HD_ARCH "hppa" -#endif - -typedef struct disk_s { - struct disk_s *next; - unsigned crc; - unsigned crc_match:1; - unsigned hd_idx; - char *dev_name; - unsigned char *data; -} disk_t; - -static struct s_pr_flags *get_pr_flags(enum probe_feature feature); -static void fix_probe_features(hd_data_t *hd_data); -static void set_probe_feature(hd_data_t *hd_data, enum probe_feature feature, unsigned val); -static void free_old_hd_entries(hd_data_t *hd_data); -static hd_t *free_hd_entry(hd_t *hd); -static hd_t *add_hd_entry2(hd_t **hd, hd_t *new_hd); -static void timeout_alarm_handler(int signal); -static void get_probe_env(hd_data_t *hd_data); -static void hd_scan_xtra(hd_data_t *hd_data); -static hd_t *hd_get_device_by_id(hd_data_t *hd_data, char *id); -static int has_item(hd_hw_item_t *items, hd_hw_item_t item); -static int has_hw_class(hd_t *hd, hd_hw_item_t *items); - -static void test_read_block0_open(void *arg); -static void get_kernel_version(hd_data_t *hd_data); -static int is_modem(hd_data_t *hd_data, hd_t *hd); -static int is_audio(hd_data_t *hd_data, hd_t *hd); -static void assign_hw_class(hd_data_t *hd_data, hd_t *hd); -static void short_vendor(char *vendor); -static void create_model_name(hd_data_t *hd_data, hd_t *hd); - -static void sigchld_handler(int); -static pid_t child_id; -static volatile pid_t child; -static char *hd_shm_add_str(hd_data_t *hd_data, char *str); -static str_list_t *hd_shm_add_str_list(hd_data_t *hd_data, str_list_t *sl); - -static hd_udevinfo_t *hd_free_udevinfo(hd_udevinfo_t *ui); -static hd_sysfsdrv_t *hd_free_sysfsdrv(hd_sysfsdrv_t *sf); - - -/* - * Names of the probing modules. - * Cf. enum mod_idx in hd_int.h. - */ -static struct s_mod_names { - unsigned val; - char *name; -} pr_modules[] = { - { mod_none, "none"}, - { mod_memory, "memory"}, - { mod_pci, "pci"}, - { mod_isapnp, "isapnp"}, - { mod_pnpdump, "pnpdump"}, - { mod_net, "net"}, - { mod_floppy, "floppy"}, - { mod_misc, "misc" }, - { mod_bios, "bios"}, - { mod_cpu, "cpu"}, - { mod_monitor, "monitor"}, - { mod_serial, "serial"}, - { mod_mouse, "mouse"}, - { mod_scsi, "scsi"}, - { mod_usb, "usb"}, - { mod_adb, "adb"}, - { mod_modem, "modem"}, - { mod_parallel, "parallel" }, - { mod_isa, "isa" }, - { mod_isdn, "isdn" }, - { mod_kbd, "kbd" }, - { mod_prom, "prom" }, - { mod_sbus, "sbus" }, - { mod_int, "int" }, - { mod_braille, "braille" }, - { mod_xtra, "hd" }, - { mod_sys, "sys" }, - { mod_manual, "manual" }, - { mod_fb, "fb" }, - { mod_pppoe, "pppoe" }, - { mod_pcmcia, "pcmcia" }, - { mod_s390, "s390" }, - { mod_sysfs, "sysfs" }, - { mod_dsl, "dsl" }, - { mod_block, "block" }, - { mod_edd, "edd" }, - { mod_input, "input" } -}; - -/* - * Names for the probe flags. Used for debugging and command line parsing in - * hw.c. Cf. enum probe_feature, hd_data_t.probe. - */ -static struct s_pr_flags { - enum probe_feature val, parent; - unsigned mask; /* bit 0: default, bit 1: all, bit 2: max, bit 3: linuxrc */ - char *name; -} pr_flags[] = { - { pr_default, -1, 1, "default" }, - { pr_all, -1, 2 , "all" }, - { pr_max, -1, 4 , "max" }, - { pr_lxrc, -1, 8 , "lxrc" }, - { pr_memory, 0, 8|4|2|1, "memory" }, - { pr_pci, 0, 8|4|2|1, "pci" }, - { pr_s390, 0, 8|4|2|1, "s390" }, - { pr_s390disks, 0, 0, "s390disks" }, - { pr_isapnp, 0, 4|2|1, "isapnp" }, - { pr_isapnp_old, pr_isapnp, 0, "isapnp.old" }, - { pr_isapnp_new, pr_isapnp, 0, "isapnp.new" }, - { pr_isapnp_mod, 0, 4 , "isapnp.mod" }, - { pr_isapnp, 0, 0, "pnpdump" }, /* alias for isapnp */ - { pr_net, 0, 8|4|2|1, "net" }, - { pr_floppy, 0, 8|4|2|1, "floppy" }, - { pr_misc, pr_bios, 8|4|2|1, "misc" }, // ugly hack! - { pr_misc_serial, pr_misc, 8|4|2|1, "misc.serial" }, - { pr_misc_par, pr_misc, 4|2|1, "misc.par" }, - { pr_misc_floppy, pr_misc, 8|4|2|1, "misc.floppy" }, - { pr_bios, 0, 8|4|2|1, "bios" }, - { pr_bios_vesa, pr_bios, 4|2|1, "bios.vesa" }, - { pr_bios_ddc, pr_bios_vesa, 0, "bios.ddc" }, - { pr_bios_fb, pr_bios_vesa, 0, "bios.fb" }, - { pr_bios_mode, pr_bios_vesa, 0, "bios.mode" }, - { pr_bios_vbe, pr_bios_mode, 0, "bios.vbe" }, // just an alias - { pr_cpu, 0, 8|4|2|1, "cpu" }, - { pr_monitor, 0, 8|4|2|1, "monitor" }, - { pr_serial, 0, 4|2|1, "serial" }, -#if defined(__sparc__) - /* Probe for mouse on SPARC */ - { pr_mouse, 0, 8|4|2|1, "mouse" }, -#else - { pr_mouse, 0, 4|2|1, "mouse" }, -#endif - { pr_scsi, 0, 8|4|2|1, "scsi" }, - { pr_scsi_noserial, 0, 0, "scsi.noserial" }, - { pr_usb, 0, 8|4|2|1, "usb" }, - { pr_usb_mods, 0, 4 , "usb.mods" }, - { pr_adb, 0, 8|4|2|1, "adb" }, - { pr_modem, 0, 4|2|1, "modem" }, - { pr_modem_usb, pr_modem, 4|2|1, "modem.usb" }, - { pr_parallel, 0, 4|2|1, "parallel" }, - { pr_parallel_lp, pr_parallel, 4|2|1, "parallel.lp" }, - { pr_parallel_zip, pr_parallel, 4|2|1, "parallel.zip" }, - { pr_parallel_imm, 0, 0, "parallel.imm" }, - { pr_isa, 0, 4|2|1, "isa" }, - { pr_isa_isdn, pr_isa, 4|2|1, "isa.isdn" }, - { pr_isdn, 0, 4|2|1, "isdn" }, - { pr_kbd, 0, 8|4|2|1, "kbd" }, - { pr_prom, 0, 8|4|2|1, "prom" }, - { pr_sbus, 0, 8|4|2|1, "sbus" }, - { pr_int, 0, 8|4|2|1, "int" }, -#if defined(__i386__) || defined (__x86_64__) - { pr_braille, 0, 4|2|1, "braille" }, - { pr_braille_alva, pr_braille, 4|2|1, "braille.alva" }, - { pr_braille_fhp, pr_braille, 4|2|1, "braille.fhp" }, - { pr_braille_ht, pr_braille, 4|2|1, "braille.ht" }, - { pr_braille_baum, pr_braille, 4|2|1, "braille.baum" }, -#else - { pr_braille, 0, 4|2 , "braille" }, - { pr_braille_alva, pr_braille, 0, "braille.alva" }, - { pr_braille_fhp, pr_braille, 4|2 , "braille.fhp" }, - { pr_braille_ht, pr_braille, 4|2 , "braille.ht" }, - { pr_braille_baum, pr_braille, 4|2 , "braille.baum" }, -#endif - { pr_ignx11, 0, 0, "ignx11" }, - { pr_sys, 0, 8|4|2|1, "sys" }, - { pr_manual, 0, 8|4|2|1, "manual" }, - { pr_fb, 0, 8|4|2|1, "fb" }, - { pr_pppoe, 0, 8|4|2|1, "pppoe" }, - /* dummy, used to turn off hwscan */ - { pr_scan, 0, 0, "scan" }, - { pr_pcmcia, 0, 8|4|2|1, "pcmcia" }, - { pr_fork, 0, 0, "fork" }, - { pr_cpuemu, 0, 0, "cpuemu" }, - { pr_cpuemu_debug, pr_cpuemu, 0, "cpuemu.debug" }, - { pr_sysfs, 0, 0, "sysfs" }, - { pr_dsl, 0, 4|2|1, "dsl" }, - { pr_udev, 0, 8|4|2|1, "udev" }, - { pr_block, 0, 8|4|2|1, "block" }, - { pr_block_cdrom, pr_block, 8|4|2|1, "block.cdrom" }, - { pr_block_part, pr_block, 8|4|2|1, "block.part" }, - { pr_block_mods, pr_block, 8|4|2|1, "block.mods" }, - { pr_edd, 0, 8|4|2|1, "edd" }, - { pr_edd_mod, pr_edd, 8|4|2|1, "edd.mod" }, - { pr_input, 0, 8|4|2|1, "input" }, - { pr_wlan, 0, 8|4|2|1, "wlan" } -}; - -struct s_pr_flags *get_pr_flags(enum probe_feature feature) -{ - int i; - - for(i = 0; (unsigned) i < sizeof pr_flags / sizeof *pr_flags; i++) { - if(feature == pr_flags[i].val) return pr_flags + i; - } - - return NULL; -} - -void fix_probe_features(hd_data_t *hd_data) -{ - int i; - - for(i = 0; (unsigned) i < sizeof hd_data->probe; i++) { - hd_data->probe[i] |= hd_data->probe_set[i]; - hd_data->probe[i] &= ~hd_data->probe_clr[i]; - } -} - -void set_probe_feature(hd_data_t *hd_data, enum probe_feature feature, unsigned val) -{ - unsigned ofs, bit, mask; - int i; - struct s_pr_flags *pr; - - if(!(pr = get_pr_flags(feature))) return; - - if(pr->parent == -1u) { - mask = pr->mask; - for(i = 0; (unsigned) i < sizeof pr_flags / sizeof *pr_flags; i++) { - if(pr_flags[i].parent != -1u && (pr_flags[i].mask & mask)) - set_probe_feature(hd_data, pr_flags[i].val, val); - } - } - else { - ofs = feature >> 3; bit = feature & 7; - if(ofs < sizeof hd_data->probe) { - if(val) { - hd_data->probe_set[ofs] |= 1 << bit; - hd_data->probe_clr[ofs] &= ~(1 << bit); - } - else { - hd_data->probe_clr[ofs] |= 1 << bit; - hd_data->probe_set[ofs] &= ~(1 << bit); - } - } - if(pr->parent) set_probe_feature(hd_data, pr->parent, val); - } - - fix_probe_features(hd_data); -} - -void hd_set_probe_feature(hd_data_t *hd_data, enum probe_feature feature) -{ - unsigned ofs, bit, mask; - int i; - struct s_pr_flags *pr; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_set_probe_feature, hd_data), hd_data); - } -#endif - - if(!(pr = get_pr_flags(feature))) return; - - if(pr->parent == -1u) { - mask = pr->mask; - for(i = 0; (unsigned) i < sizeof pr_flags / sizeof *pr_flags; i++) { - if(pr_flags[i].parent != -1u && (pr_flags[i].mask & mask)) - hd_set_probe_feature(hd_data, pr_flags[i].val); - } - } - else { - ofs = feature >> 3; bit = feature & 7; - if(ofs < sizeof hd_data->probe) - hd_data->probe[ofs] |= 1 << bit; - if(pr->parent) hd_set_probe_feature(hd_data, pr->parent); - } - - fix_probe_features(hd_data); -} - -void hd_clear_probe_feature(hd_data_t *hd_data, enum probe_feature feature) -{ - unsigned ofs, bit, mask; - int i; - struct s_pr_flags *pr; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_clear_probe_feature, hd_data), hd_data); - } -#endif - - if(!(pr = get_pr_flags(feature))) return; - - if(pr->parent == -1u) { - mask = pr->mask; - for(i = 0; (unsigned) i < sizeof pr_flags / sizeof *pr_flags; i++) { - if(pr_flags[i].parent != -1u && (pr_flags[i].mask & mask)) - hd_clear_probe_feature(hd_data, pr_flags[i].val); - } - } - else { - ofs = feature >> 3; bit = feature & 7; - if(ofs < sizeof hd_data->probe) - hd_data->probe[ofs] &= ~(1 << bit); - } -} - -int hd_probe_feature(hd_data_t *hd_data, enum probe_feature feature) -{ -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_probe_feature, hd_data), hd_data); - } -#endif - - if(feature < 0 || feature >= pr_default) return 0; - - return hd_data->probe[feature >> 3] & (1 << (feature & 7)) ? 1 : 0; -} - - -void hd_set_probe_feature_hw(hd_data_t *hd_data, hd_hw_item_t item) -{ - hd_set_probe_feature(hd_data, pr_int); - hd_set_probe_feature(hd_data, pr_manual); - - switch(item) { - case hw_cdrom: - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_block_mods); - hd_set_probe_feature(hd_data, pr_scsi); - if(!hd_data->flags.fast) { - hd_set_probe_feature(hd_data, pr_block_cdrom); - } - break; - - case hw_floppy: - hd_set_probe_feature(hd_data, pr_floppy); - hd_set_probe_feature(hd_data, pr_misc_floppy); - hd_set_probe_feature(hd_data, pr_prom); - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_block); - hd_set_probe_feature(hd_data, pr_block_mods); - hd_set_probe_feature(hd_data, pr_scsi); - break; - - case hw_partition: - hd_set_probe_feature(hd_data, pr_block_part); - - case hw_disk: - hd_set_probe_feature(hd_data, pr_s390disks); - hd_set_probe_feature(hd_data, pr_bios); // bios disk order - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_block); - hd_set_probe_feature(hd_data, pr_block_mods); - hd_set_probe_feature(hd_data, pr_edd_mod); - hd_set_probe_feature(hd_data, pr_scsi); - break; - - case hw_block: - hd_set_probe_feature(hd_data, pr_prom); - hd_set_probe_feature(hd_data, pr_s390disks); - hd_set_probe_feature(hd_data, pr_bios); // bios disk order - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_block); - hd_set_probe_feature(hd_data, pr_block_mods); - hd_set_probe_feature(hd_data, pr_edd_mod); - hd_set_probe_feature(hd_data, pr_scsi); - if(!hd_data->flags.fast) { - hd_set_probe_feature(hd_data, pr_floppy); - hd_set_probe_feature(hd_data, pr_misc_floppy); - hd_set_probe_feature(hd_data, pr_block_cdrom); - } - hd_set_probe_feature(hd_data, pr_block_part); - break; - - case hw_network: - hd_set_probe_feature(hd_data, pr_net); - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_prom); - hd_set_probe_feature(hd_data, pr_usb); - break; - - case hw_display: - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_sbus); - hd_set_probe_feature(hd_data, pr_prom); - hd_set_probe_feature(hd_data, pr_misc); /* for isa cards */ - break; - - case hw_monitor: - hd_set_probe_feature(hd_data, pr_misc); - hd_set_probe_feature(hd_data, pr_prom); - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_bios_ddc); - hd_set_probe_feature(hd_data, pr_fb); - hd_set_probe_feature(hd_data, pr_monitor); - break; - - case hw_framebuffer: - hd_set_probe_feature(hd_data, pr_misc); - hd_set_probe_feature(hd_data, pr_prom); - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_bios_fb); - hd_set_probe_feature(hd_data, pr_fb); - break; - - case hw_mouse: - hd_set_probe_feature(hd_data, pr_misc); - if(!hd_data->flags.fast) { - hd_set_probe_feature(hd_data, pr_serial); - } - hd_set_probe_feature(hd_data, pr_adb); - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_kbd); - hd_set_probe_feature(hd_data, pr_sys); - hd_set_probe_feature(hd_data, pr_bios); - hd_set_probe_feature(hd_data, pr_mouse); - hd_set_probe_feature(hd_data, pr_input); - break; - - case hw_joystick: - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_input); - break; - - case hw_chipcard: - hd_set_probe_feature(hd_data, pr_misc); - if(!hd_data->flags.fast) { - hd_set_probe_feature(hd_data, pr_serial); - } - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_mouse); /* we need the pnp code */ - break; - - case hw_camera: - hd_set_probe_feature(hd_data, pr_usb); - break; - - case hw_keyboard: - hd_set_probe_feature(hd_data, pr_cpu); - hd_set_probe_feature(hd_data, pr_misc); - hd_set_probe_feature(hd_data, pr_adb); - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_kbd); - hd_set_probe_feature(hd_data, pr_input); -#ifdef __PPC__ - hd_set_probe_feature(hd_data, pr_serial); -#endif - break; - - case hw_sound: - hd_set_probe_feature(hd_data, pr_misc); - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_isapnp); - hd_set_probe_feature(hd_data, pr_isapnp_mod); - hd_set_probe_feature(hd_data, pr_sbus); - hd_set_probe_feature(hd_data, pr_prom); - break; - - case hw_isdn: - hd_set_probe_feature(hd_data, pr_misc); /* get basic i/o res */ - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_pcmcia); - hd_set_probe_feature(hd_data, pr_isapnp); - hd_set_probe_feature(hd_data, pr_isapnp_mod); - hd_set_probe_feature(hd_data, pr_isa_isdn); - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_isdn); - break; - - case hw_modem: - hd_set_probe_feature(hd_data, pr_misc); - hd_set_probe_feature(hd_data, pr_serial); - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_modem); - hd_set_probe_feature(hd_data, pr_modem_usb); - break; - - case hw_storage_ctrl: - hd_set_probe_feature(hd_data, pr_floppy); - hd_set_probe_feature(hd_data, pr_sys); - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_sbus); - if(!hd_data->flags.fast) { - hd_set_probe_feature(hd_data, pr_misc_par); - hd_set_probe_feature(hd_data, pr_parallel_zip); - } - hd_set_probe_feature(hd_data, pr_s390); - hd_set_probe_feature(hd_data, pr_prom); -#ifdef __PPC__ - hd_set_probe_feature(hd_data, pr_misc); -#endif - break; - - case hw_network_ctrl: - hd_set_probe_feature(hd_data, pr_misc); - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_net); - hd_set_probe_feature(hd_data, pr_pcmcia); - hd_set_probe_feature(hd_data, pr_isapnp); - hd_set_probe_feature(hd_data, pr_isapnp_mod); - hd_set_probe_feature(hd_data, pr_sbus); - hd_set_probe_feature(hd_data, pr_isdn); - hd_set_probe_feature(hd_data, pr_dsl); - hd_set_probe_feature(hd_data, pr_prom); - hd_set_probe_feature(hd_data, pr_s390); - hd_set_probe_feature(hd_data, pr_wlan); - break; - - case hw_printer: - hd_set_probe_feature(hd_data, pr_sys); - hd_set_probe_feature(hd_data, pr_bios); - hd_set_probe_feature(hd_data, pr_misc_par); - hd_set_probe_feature(hd_data, pr_parallel_lp); - hd_set_probe_feature(hd_data, pr_usb); - break; - - case hw_wlan: - hd_set_probe_feature(hd_data, pr_pcmcia); - hd_set_probe_feature(hd_data, pr_wlan); - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_net); - break; - - case hw_tv: - case hw_dvb: - hd_set_probe_feature(hd_data, pr_pci); - break; - - case hw_scanner: - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_scsi); - break; - - case hw_braille: - hd_set_probe_feature(hd_data, pr_misc_serial); - hd_set_probe_feature(hd_data, pr_serial); - hd_set_probe_feature(hd_data, pr_braille_alva); - hd_set_probe_feature(hd_data, pr_braille_fhp); - hd_set_probe_feature(hd_data, pr_braille_ht); - hd_set_probe_feature(hd_data, pr_braille_baum); - hd_set_probe_feature(hd_data, pr_usb); - break; - - case hw_sys: - hd_set_probe_feature(hd_data, pr_bios); - hd_set_probe_feature(hd_data, pr_prom); - hd_set_probe_feature(hd_data, pr_s390); - hd_set_probe_feature(hd_data, pr_sys); - break; - - case hw_cpu: - hd_set_probe_feature(hd_data, pr_cpu); - break; - - case hw_bios: - hd_set_probe_feature(hd_data, pr_bios); - hd_set_probe_feature(hd_data, pr_edd_mod); - break; - - case hw_vbe: - hd_set_probe_feature(hd_data, pr_bios_ddc); - hd_set_probe_feature(hd_data, pr_bios_fb); - hd_set_probe_feature(hd_data, pr_bios_mode); - hd_set_probe_feature(hd_data, pr_monitor); - break; - - case hw_manual: - hd_set_probe_feature(hd_data, pr_manual); - break; - - case hw_usb_ctrl: - case hw_pcmcia_ctrl: - case hw_ieee1394_ctrl: - case hw_hotplug_ctrl: - hd_set_probe_feature(hd_data, pr_misc); - hd_set_probe_feature(hd_data, pr_pci); - break; - - case hw_usb: - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_isdn); // need pr_misc, too? - hd_set_probe_feature(hd_data, pr_dsl); - hd_set_probe_feature(hd_data, pr_block); - hd_set_probe_feature(hd_data, pr_block_mods); - hd_set_probe_feature(hd_data, pr_scsi); - hd_set_probe_feature(hd_data, pr_net); - hd_data->flags.fast = 1; - break; - - case hw_pci: - hd_set_probe_feature(hd_data, pr_misc); - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_net); - hd_set_probe_feature(hd_data, pr_isdn); - hd_set_probe_feature(hd_data, pr_dsl); - hd_set_probe_feature(hd_data, pr_prom); - break; - - case hw_isapnp: - hd_set_probe_feature(hd_data, pr_isapnp); - hd_set_probe_feature(hd_data, pr_isapnp_mod); - hd_set_probe_feature(hd_data, pr_misc); - hd_set_probe_feature(hd_data, pr_isdn); - break; - - case hw_bridge: - hd_set_probe_feature(hd_data, pr_misc); - hd_set_probe_feature(hd_data, pr_pci); - break; - - case hw_hub: - hd_set_probe_feature(hd_data, pr_usb); - break; - - case hw_memory: - hd_set_probe_feature(hd_data, pr_memory); - break; - - case hw_scsi: - case hw_tape: - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_block); - hd_set_probe_feature(hd_data, pr_block_mods); - hd_set_probe_feature(hd_data, pr_scsi); - break; - - case hw_ide: - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_block); - hd_set_probe_feature(hd_data, pr_block_mods); - break; - - case hw_pppoe: - hd_set_probe_feature(hd_data, pr_net); - hd_set_probe_feature(hd_data, pr_pppoe); - break; - - case hw_dsl: - hd_set_probe_feature(hd_data, pr_net); - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_pppoe); - hd_set_probe_feature(hd_data, pr_usb); - break; - - case hw_pcmcia: - hd_set_probe_feature(hd_data, pr_pci); - hd_set_probe_feature(hd_data, pr_pcmcia); - hd_set_probe_feature(hd_data, pr_wlan); - hd_set_probe_feature(hd_data, pr_net); - hd_set_probe_feature(hd_data, pr_isdn); - break; - - case hw_bluetooth: - hd_set_probe_feature(hd_data, pr_usb); - hd_set_probe_feature(hd_data, pr_isdn); // need pr_misc, too? - hd_set_probe_feature(hd_data, pr_dsl); - break; - - case hw_all: - hd_set_probe_feature(hd_data, pr_default); - break; - - case hw_redasd: - hd_set_probe_feature(hd_data, pr_block); - hd_set_probe_feature(hd_data, pr_block_mods); - break; - - case hw_unknown: - case hw_ieee1394: - case hw_hotplug: - case hw_zip: - break; - } -} - - -/* - * Free all data associated with a hd_data_t struct. *Not* the struct itself. - */ -hd_data_t *hd_free_hd_data(hd_data_t *hd_data) -{ - hddb_pci_t *p; - unsigned u; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_free_hd_data, hd_data), hd_data); - } -#endif - - add_hd_entry2(&hd_data->old_hd, hd_data->hd); hd_data->hd = NULL; - hd_data->log = free_mem(hd_data->log); - free_old_hd_entries(hd_data); /* hd_data->old_hd */ - /* hd_data->pci is always NULL */ - /* hd_data->isapnp->card is always NULL */ - hd_data->isapnp = free_mem(hd_data->isapnp); - /* hd_data->cdrom is always NULL */ - hd_data->net = free_str_list(hd_data->net); - hd_data->floppy = free_str_list(hd_data->floppy); - hd_data->misc = free_misc(hd_data->misc); - /* hd_data->serial is always NULL */ - /* hd_data->scsi is always NULL */ - /* hd_data->ser_mouse is always NULL */ - /* hd_data->ser_modem is always NULL */ - hd_data->cpu = free_str_list(hd_data->cpu); - hd_data->klog = free_str_list(hd_data->klog); - hd_data->proc_usb = free_str_list(hd_data->proc_usb); - /* hd_data->usb is always NULL */ - - if((p = hd_data->hddb_pci)) { - for(; p->module; p++) free_mem(p->module); - } - if(hd_data->hddb2[0]) { - free_mem(hd_data->hddb2[0]->list); - free_mem(hd_data->hddb2[0]->ids); - free_mem(hd_data->hddb2[0]->strings); - hd_data->hddb2[0] = free_mem(hd_data->hddb2[0]); - } - /* hddb2[1] is the static internal database; don't try to free it! */ - hd_data->hddb2[1] = NULL; - - hd_data->hddb_pci = free_mem(hd_data->hddb_pci); - hd_data->kmods = free_str_list(hd_data->kmods); - hd_data->bios_rom.data = free_mem(hd_data->bios_rom.data); - hd_data->bios_ram.data = free_mem(hd_data->bios_ram.data); - hd_data->bios_ebda.data = free_mem(hd_data->bios_ebda.data); - hd_data->cmd_line = free_mem(hd_data->cmd_line); - hd_data->xtra_hd = free_str_list(hd_data->xtra_hd); - hd_data->devtree = free_devtree(hd_data); - hd_data->manual = hd_free_manual(hd_data->manual); - hd_data->disks = free_str_list(hd_data->disks); - hd_data->partitions = free_str_list(hd_data->partitions); - hd_data->cdroms = free_str_list(hd_data->cdroms); - - hd_data->smbios = smbios_free(hd_data->smbios); - - hd_data->udevinfo = hd_free_udevinfo(hd_data->udevinfo); - hd_data->sysfsdrv = hd_free_sysfsdrv(hd_data->sysfsdrv); - - hd_data->only = free_str_list(hd_data->only); - hd_data->scanner_db = free_str_list(hd_data->scanner_db); - - for(u = 0; u < sizeof hd_data->edd / sizeof *hd_data->edd; u++) { - hd_data->edd[u].sysfs_id = free_mem(hd_data->edd[u].sysfs_id); - } - - hd_data->last_idx = 0; - - hd_shm_done(hd_data); - - memset(hd_data, 0, sizeof *hd_data); - - return NULL; -} - - -/* - * Free all data associated with a driver_info_t struct. Even the struct itself. - */ -driver_info_t *free_driver_info(driver_info_t *di) -{ - driver_info_t *next; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(free_driver_info, di), di); - } -#endif - - for(; di; di = next) { - next = di->next; - - switch(di->any.type) { - case di_any: - case di_display: - break; - - case di_module: - free_str_list(di->module.names); - free_str_list(di->module.mod_args); - free_mem(di->module.conf); - break; - - case di_mouse: - free_mem(di->mouse.xf86); - free_mem(di->mouse.gpm); - break; - - case di_x11: - free_mem(di->x11.server); - free_mem(di->x11.xf86_ver); - free_str_list(di->x11.extensions); - free_str_list(di->x11.options); - free_str_list(di->x11.raw); - free_mem(di->x11.script); - break; - - case di_isdn: - free_mem(di->isdn.i4l_name); - if(di->isdn.params) { - isdn_parm_t *p = di->isdn.params, *next; - for(; p; p = next) { - next = p->next; - free_mem(p->name); - free_mem(p->alt_value); - free_mem(p); - } - } - break; - - case di_dsl: - free_mem(di->dsl.name); - free_mem(di->dsl.mode); - break; - - case di_kbd: - free_mem(di->kbd.XkbRules); - free_mem(di->kbd.XkbModel); - free_mem(di->kbd.XkbLayout); - free_mem(di->kbd.keymap); - break; - } - - free_str_list(di->any.hddb0); - free_str_list(di->any.hddb1); - - free_mem(di); - } - - return NULL; -} - - -int exists_hd_entry(hd_data_t *hd_data, hd_t *old_hd, hd_t *hd_ex) -{ - hd_t *hd; - - if(!hd_ex) return 0; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd == hd_ex) return 1; - } - for(hd = old_hd; hd; hd = hd->next) { - if(hd == hd_ex) return 1; - } - - return 0; -} - - -/*! - * \note This may not free it. - */ -hd_t *hd_free_hd_list(hd_t *hd) -{ - hd_t *h; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_free_hd_list, hd), hd); - } -#endif - - /* Note: hd->next should better be NULL! */ - if(hd && hd->tag.freeit) { - free_hd_entry(hd); - return free_mem(hd); - } - - /* do nothing unless the list holds only copies of hd_t entries */ - for(h = hd; h; h = h->next) if(!h->ref) return NULL; - - for(; hd; hd = (h = hd)->next, free_mem(h)); - - return NULL; -} - -hd_detail_t *free_hd_detail(hd_detail_t *d) -{ - if(!d) return NULL; - - switch(d->type) { - case hd_detail_pci: { - pci_t *p = d->pci.data; - - free_mem(p->log); - free_mem(p->sysfs_id); - free_mem(p->sysfs_bus_id); - free_mem(p); - } - break; - - case hd_detail_usb: - { - usb_t *u = d->usb.data; - - if(!u->cloned) { - free_str_list(u->c); - free_str_list(u->e); - } - free_str_list(u->d); - free_str_list(u->p); - free_str_list(u->s); - free_str_list(u->t); - free_str_list(u->i); - - free_mem(u->manufact); - free_mem(u->product); - free_mem(u->serial); - free_mem(u->driver); - free_mem(u->raw_descr.data); - - free_mem(u); - } - break; - - case hd_detail_isapnp: - { - isapnp_dev_t *i = d->isapnp.data; - int j; - - if(!i->ref) { - free_mem(i->card->serial); - free_mem(i->card->card_regs); - free_mem(i->card->ldev_regs); - for(j = 0; j < i->card->res_len; j++) { - free_mem(i->card->res[j].data); - } - if(i->card->res) free_mem(i->card->res); - } - free_mem(i->card); - free_mem(i); - } - break; - - case hd_detail_cdrom: - { - cdrom_info_t *c = d->cdrom.data; - - if(c) { - free_mem(c->name); - free_mem(c->iso9660.volume); - free_mem(c->iso9660.publisher); - free_mem(c->iso9660.preparer); - free_mem(c->iso9660.application); - free_mem(c->iso9660.creation_date); - free_mem(c->el_torito.id_string); - free_mem(c->el_torito.label); - - free_mem(c); - } - } - break; - - case hd_detail_floppy: - free_mem(d->floppy.data); - break; - - case hd_detail_bios: - { - bios_info_t *b = d->bios.data; - - free_mem(b->vbe.oem_name); - free_mem(b->vbe.vendor_name); - free_mem(b->vbe.product_name); - free_mem(b->vbe.product_revision); - free_mem(b->vbe.mode); - free_mem(b->lcd.vendor); - free_mem(b->lcd.name); - free_mem(b->mouse.vendor); - free_mem(b->mouse.type); - - free_mem(b); - } - break; - - case hd_detail_cpu: - { - cpu_info_t *c = d->cpu.data; - - free_mem(c->vend_name); - free_mem(c->model_name); - free_mem(c->platform); - free_str_list(c->features); - free_mem(c); - } - break; - - case hd_detail_prom: - free_mem(d->prom.data); - break; - - case hd_detail_monitor: - { - monitor_info_t *m = d->monitor.data; - - free_mem(m->vendor); - free_mem(m->name); - free_mem(m->serial); - - free_mem(m); - } - break; - - case hd_detail_sys: - { - sys_info_t *s = d->sys.data; - - free_mem(s->system_type); - free_mem(s->generation); - free_mem(s->vendor); - free_mem(s->model); - free_mem(s->serial); - free_mem(s->lang); - - free_mem(s); - } - break; - - case hd_detail_scsi: - free_scsi(d->scsi.data, 1); - break; - - case hd_detail_devtree: - /* is freed with hd_data->dev_tree */ - break; - - case hd_detail_ccw: - free_mem(d->ccw.data); - break; - } - - free_mem(d); - - return NULL; -} - - -hd_t *free_hd_entry(hd_t *hd) -{ - free_mem(hd->bus.name); - free_mem(hd->base_class.name); - free_mem(hd->sub_class.name); - free_mem(hd->prog_if.name); - free_mem(hd->vendor.name); - free_mem(hd->device.name); - free_mem(hd->sub_vendor.name); - free_mem(hd->sub_device.name); - free_mem(hd->revision.name); - free_mem(hd->serial); - free_mem(hd->compat_vendor.name); - free_mem(hd->compat_device.name); - free_mem(hd->model); - free_mem(hd->sysfs_id); - free_mem(hd->sysfs_bus_id); - free_mem(hd->sysfs_device_link); - free_str_list(hd->unix_dev_names); - free_mem(hd->unix_dev_name); - free_mem(hd->unix_dev_name2); - free_mem(hd->rom_id); - free_mem(hd->unique_id); - free_mem(hd->block0); - free_mem(hd->driver); - free_str_list(hd->drivers); - free_mem(hd->old_unique_id); - free_mem(hd->unique_id1); - free_mem(hd->usb_guid); - free_mem(hd->parent_id); - free_str_list(hd->child_ids); - free_mem(hd->config_string); - free_str_list(hd->extra_info); - - free_res_list(hd->res); - - free_hd_detail(hd->detail); - - free_driver_info(hd->driver_info); - free_str_list(hd->requires); - - memset(hd, 0, sizeof *hd); - - return NULL; -} - -misc_t *free_misc(misc_t *m) -{ - int i, j; - - if(!m) return NULL; - - for(i = 0; (unsigned) i < m->io_len; i++) { - free_mem(m->io[i].dev); - } - free_mem(m->io); - - for(i = 0; (unsigned) i < m->dma_len; i++) { - free_mem(m->dma[i].dev); - } - free_mem(m->dma); - - for(i = 0; (unsigned) i < m->irq_len; i++) { - for(j = 0; j < m->irq[i].devs; j++) { - free_mem(m->irq[i].dev[j]); - } - free_mem(m->irq[i].dev); - } - free_mem(m->irq); - - free_str_list(m->proc_io); - free_str_list(m->proc_dma); - free_str_list(m->proc_irq); - - free_mem(m); - - return NULL; -} - -scsi_t *free_scsi(scsi_t *scsi, int free_all) -{ - scsi_t *next; - - for(; scsi; scsi = next) { - next = scsi->next; - - free_mem(scsi->dev_name); - free_mem(scsi->guessed_dev_name); - free_mem(scsi->vendor); - free_mem(scsi->model); - free_mem(scsi->rev); - free_mem(scsi->type_str); - free_mem(scsi->serial); - free_mem(scsi->proc_dir); - free_mem(scsi->driver); - free_mem(scsi->info); - free_mem(scsi->usb_guid); - free_str_list(scsi->host_info); - free_mem(scsi->controller_id); - - if(!free_all) { - next = scsi->next; - memset(scsi, 0, sizeof scsi); - scsi->next = next; - break; - } - - free_mem(scsi); - } - - return NULL; -} - - -hd_manual_t *hd_free_manual(hd_manual_t *manual) -{ - hd_manual_t *next; - - if(!manual) return NULL; - - for(; manual; manual = next) { - next = manual->next; - - free_mem(manual->unique_id); - free_mem(manual->parent_id); - free_mem(manual->child_ids); - free_mem(manual->model); - - free_mem(manual->config_string); - - free_str_list(manual->key); - free_str_list(manual->value); - - free_mem(manual); - } - - return NULL; -} - - -/* - * Removes all hd_data->old_hd entries and frees their memory. - */ -void free_old_hd_entries(hd_data_t *hd_data) -{ - hd_t *hd, *next; - - for(hd = hd_data->old_hd; hd; hd = next) { - next = hd->next; - - if(exists_hd_entry(hd_data, next, hd->ref) && hd->ref->ref_cnt) hd->ref->ref_cnt--; - - if(!hd->ref) free_hd_entry(hd); - - free_mem(hd); - } - - hd_data->old_hd = NULL; -} - - -void *new_mem(size_t size) -{ - void *p; - - if(size == 0) return NULL; - - p = calloc(size, 1); - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, "%p\t%p\t0x%x\n", CALLED_FROM(new_mem, size), p, size); - } -#endif - - if(p) return p; - - fprintf(stderr, "memory oops 1\n"); - exit(11); - /*NOTREACHED*/ - return 0; -} - -void *resize_mem(void *p, size_t n) -{ -#ifdef LIBHD_MEMCHECK - { - if(libhd_log && p) fprintf(libhd_log, "%p\t%p\n", CALLED_FROM(resize_mem, p), p); - } -#endif - - p = realloc(p, n); - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, "%p\t%p\t0x%x\n", CALLED_FROM(resize_mem, p), p, n); - } -#endif - - if(!p) { - fprintf(stderr, "memory oops 7\n"); - exit(17); - } - - return p; -} - -void *add_mem(void *p, size_t elem_size, size_t n) -{ -#ifdef LIBHD_MEMCHECK - { - if(libhd_log && p) fprintf(libhd_log, "%p\t%p\n", CALLED_FROM(add_mem, p), p); - } -#endif - - p = realloc(p, (n + 1) * elem_size); - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, "%p\t%p\t0x%x\n", CALLED_FROM(add_mem, p), p, (n + 1) * elem_size); - } -#endif - - if(!p) { - fprintf(stderr, "memory oops 7\n"); - exit(17); - } - - memset(p + n * elem_size, 0, elem_size); - - return p; -} - -char *new_str(const char *s) -{ - char *t; - - if(!s) return NULL; - - t = strdup(s); - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, "%p\t%p\t0x%x\n", CALLED_FROM(new_str, s), t, strlen(t) + 1); - } -#endif - - if(t) return t; - - fprintf(stderr, "memory oops 2\n"); - /*NOTREACHED*/ - exit(12); - - return NULL; -} - -void *free_mem(void *p) -{ -#ifdef LIBHD_MEMCHECK - { - if(libhd_log && p) fprintf(libhd_log, "%p\t%p\n", CALLED_FROM(free_mem, p), p); - } -#endif - - if(p) free(p); - - return NULL; -} - -void join_res_io(hd_res_t **res1, hd_res_t *res2) -{ - hd_res_t *res; - - /* - * see if we must add an i/o range (tricky...) - * - * We look for identical i/o bases and add a range if one was missing. If - * no matching pair was found, add the i/o resource. - */ - for(; res2; res2 = res2->next) { - if(res2->io.type == res_io) { - for(res = *res1; res; res = res->next) { - if(res->io.type == res_io) { - if(res->io.base == res2->io.base) { - /* identical bases: take maximum of both ranges */ - if(res2->io.range > res->io.range) { - res->io.range = res2->io.range; - } - break; - } - else if( - res->io.range && - res2->io.range && - res->io.base + res->io.range == res2->io.base) - { - /* res2 directly follows res1: extend res1 to cover res2 */ - res->io.range += res2->io.range; - break; - } - else if( - res2->io.base >= res->io.base && - res2->io.base < res->io.base + res->io.range - ) { - /* res2 is totally contained in res1: ignore it */ - break; - } - } - } - if(!res) { - res = add_res_entry(res1, new_mem(sizeof *res)); - *res = *res2; /* *copy* the struct */ - res->next = NULL; - } - } - } -} - -void join_res_irq(hd_res_t **res1, hd_res_t *res2) -{ - hd_res_t *res; - - /* see if we must add an dma channel */ - for(; res2; res2 = res2->next) { - if(res2->irq.type == res_irq) { - for(res = *res1; res; res = res->next) { - if(res->irq.type == res_irq && res->irq.base == res2->irq.base) break; - } - if(!res) { - res = add_res_entry(res1, new_mem(sizeof *res)); - *res = *res2; /* *copy* the struct */ - res->next = NULL; - } - } - } -} - - -void join_res_dma(hd_res_t **res1, hd_res_t *res2) -{ - hd_res_t *res; - - /* see if we must add an dma channel */ - for(; res2; res2 = res2->next) { - if(res2->dma.type == res_dma) { - for(res = *res1; res; res = res->next) { - if(res->dma.type == res_dma && res->dma.base == res2->dma.base) break; - } - if(!res) { - res = add_res_entry(res1, new_mem(sizeof *res)); - *res = *res2; /* *copy* the struct */ - res->next = NULL; - } - } - } -} - - -/* - * Check whether both resource lists have common entries. - */ -int have_common_res(hd_res_t *res1, hd_res_t *res2) -{ - hd_res_t *res; - - for(; res1; res1 = res1->next) { - for(res = res2; res; res = res->next) { - if(res->any.type == res1->any.type) { - switch(res->any.type) { - case res_io: - if(res->io.base == res1->io.base) return 1; - break; - - case res_irq: - if(res->irq.base == res1->irq.base) return 1; - break; - - case res_dma: - if(res->dma.base == res1->dma.base) return 1; - break; - - default: /* gcc -Wall */ - break; - } - } - } - } - - return 0; -} - - -/* - * Free the memory allocated by a resource list. - */ -hd_res_t *free_res_list(hd_res_t *res) -{ - hd_res_t *next; - - for(; res; res = next) { - next = res->next; - - if(res->any.type == res_init_strings) { - free_mem(res->init_strings.init1); - free_mem(res->init_strings.init2); - } - - if(res->any.type == res_pppd_option) { - free_mem(res->pppd_option.option); - } - - if(res->any.type == res_hwaddr) { - free_mem(res->hwaddr.addr); - } - - free_mem(res); - } - - return NULL; -} - - -/* - * Note: new_res is directly inserted into the list, so you *must* make sure - * that new_res points to a malloc'ed pice of memory. - */ -hd_res_t *add_res_entry(hd_res_t **res, hd_res_t *new_res) -{ - while(*res) res = &(*res)->next; - - return *res = new_res; -} - - -hd_t *add_hd_entry(hd_data_t *hd_data, unsigned line, unsigned count) -{ - hd_t *hd; - - hd = add_hd_entry2(&hd_data->hd, new_mem(sizeof *hd)); - - hd->idx = ++(hd_data->last_idx); - hd->module = hd_data->module; - hd->line = line; - hd->count = count; - - return hd; -} - - -hd_t *add_hd_entry2(hd_t **hd, hd_t *new_hd) -{ - while(*hd) hd = &(*hd)->next; - - return *hd = new_hd; -} - - -void hd_scan(hd_data_t *hd_data) -{ - char *s = NULL; - int i, j; - hd_t *hd, *hd2; - uint64_t irqs; - str_list_t *sl, *sl0; - -#ifdef LIBHD_MEMCHECK - if(!libhd_log) { - char *s = getenv("LIBHD_MEMCHECK"); - - if(s && *s) { - libhd_log = fopen(s, "w"); - if(libhd_log) setlinebuf(libhd_log); - } - } -#endif - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_scan, hd_data), hd_data); - } -#endif - - /* log the debug & probe flags */ - if(hd_data->debug && !hd_data->flags.internal) { - ADD2LOG("libhd version %s%s (%s)\n", HD_VERSION_STRING, getuid() ? "u" : "", HD_ARCH); - } - - get_kernel_version(hd_data); - - /* needed only on 1st call */ - if(hd_data->last_idx == 0) { - get_probe_env(hd_data); - } - - fix_probe_features(hd_data); - - if(hd_data->debug && !hd_data->flags.internal) { - for(i = sizeof hd_data->probe - 1; i >= 0; i--) { - str_printf(&s, -1, "%02x", hd_data->probe[i]); - } - ADD2LOG("debug = 0x%x\nprobe = 0x%s (", hd_data->debug, s); - s = free_mem(s); - - for(i = 1; i < pr_default; i++) { /* 1 because of pr_memory */ - if((s = hd_probe_feature_by_value(i))) { - ADD2LOG("%s%c%s", i == 1 ? "" : " ", hd_probe_feature(hd_data, i) ? '+' : '-', s); - } - } - - ADD2LOG(")\n"); - } - - /* init driver info database */ - hddb_init(hd_data); - - /* only first time */ - if(hd_data->last_idx == 0) { - hd_set_probe_feature(hd_data, pr_fork); - if(!hd_probe_feature(hd_data, pr_fork)) hd_data->flags.nofork = 1; -// hd_set_probe_feature(hd_data, pr_sysfs); - if(!hd_probe_feature(hd_data, pr_sysfs)) hd_data->flags.nosysfs = 1; - if(hd_probe_feature(hd_data, pr_cpuemu)) hd_data->flags.cpuemu = 1; - if(hd_probe_feature(hd_data, pr_udev)) hd_data->flags.udev = 1; - } - - /* get shm segment, if we didn't do it already */ - hd_shm_init(hd_data); - - if(!hd_data->shm.ok && !hd_data->flags.nofork) { - hd_data->flags.nofork = 1; - ADD2LOG("shm: failed to get shm segment; will not fork\n"); - } - - if(hd_data->only) { - s = hd_join(", ", hd_data->only); - ADD2LOG("only: %s\n", s); - s = free_mem(s); - } - -#ifndef LIBHD_TINY - /* - * There might be old 'manual' entries left from an earlier scan. Remove - * them, they will confuse us. - */ - if(hd_probe_feature(hd_data, pr_manual)) { - hd_data->module = mod_manual; - remove_hd_entries(hd_data); - } -#endif - - /* - * for various reasons, do it befor scan_misc() - */ - hd_scan_floppy(hd_data); - - /* - * to be able to read the right parport io, - * we have to do this before scan_misc() - */ -#if defined(__i386__) || defined (__x86_64__) || defined (__ia64__) - hd_scan_bios(hd_data); -#endif - - /* before hd_scan_misc(): we need some ppc info later */ - hd_scan_sys(hd_data); - - /* get basic system info */ - hd_scan_misc(hd_data); - - /* hd_scan_cpu() after hd_scan_misc(): klog needed */ - hd_scan_cpu(hd_data); - hd_scan_memory(hd_data); - - hd_scan_sysfs_pci(hd_data); - - /* do it _after_ hd_scan_sysfs_pci() */ -#if defined(__PPC__) - hd_scan_prom(hd_data); -#endif - -#if defined(__s390__) || defined(__s390x__) - hd_scan_s390disks(hd_data); - hd_scan_s390(hd_data); -#endif - - /* after hd_scan_prom() and hd_scan_bios() */ - hd_scan_monitor(hd_data); - -#ifndef LIBHD_TINY -#if defined(__i386__) || defined(__alpha__) - hd_scan_isapnp(hd_data); -#endif -#endif - -#ifndef LIBHD_TINY -#if defined(__i386__) - hd_scan_isa(hd_data); -#endif -#endif - - /* after pci & isa */ - hd_scan_pcmcia(hd_data); - - hd_scan_serial(hd_data); - - /* merge basic system info & the easy stuff */ - hd_scan_misc2(hd_data); - -#ifndef LIBHD_TINY - if(!hd_data->flags.no_parport) { - hd_scan_parallel(hd_data); /* after hd_scan_misc*() */ - } -#endif - - hd_scan_sysfs_block(hd_data); - hd_scan_sysfs_scsi(hd_data); - hd_scan_sysfs_usb(hd_data); - hd_scan_sysfs_edd(hd_data); - -#if defined(__PPC__) - hd_scan_adb(hd_data); -#endif - -#ifndef LIBHD_TINY -#if !defined(__sparc__) - hd_scan_braille(hd_data); -#endif - hd_scan_modem(hd_data); /* do it before hd_scan_mouse() */ - hd_scan_mouse(hd_data); -#endif - hd_scan_sbus(hd_data); - - hd_scan_input(hd_data); - -#if !defined(__s390__) && !defined(__s390x__) - hd_scan_kbd(hd_data); -#endif - - /* must be after hd_scan_monitor() */ - hd_scan_fb(hd_data); - - /* keep these at the end of the list */ - hd_scan_net(hd_data); - - hd_scan_pppoe(hd_data); - -#ifndef LIBHD_TINY - hd_scan_wlan(hd_data); -#endif - - for(hd = hd_data->hd; hd; hd = hd->next) hd_add_id(hd_data, hd); - -#ifndef LIBHD_TINY - hd_scan_manual(hd_data); -#endif - - /* add test entries */ - hd_scan_xtra(hd_data); - - /* some final fixup's */ -#if WITH_ISDN - hd_scan_isdn(hd_data); - hd_scan_dsl(hd_data); -#endif - hd_scan_int(hd_data); - - /* and again... */ - for(hd = hd_data->hd; hd; hd = hd->next) hd_add_id(hd_data, hd); - - /* assign parent & child ids */ - for(hd = hd_data->hd; hd; hd = hd->next) { - hd->child_ids = free_str_list(hd->child_ids); - if((hd2 = hd_get_device_by_idx(hd_data, hd->attached_to))) { - free_mem(hd->parent_id); - hd->parent_id = new_str(hd2->unique_id); - } - else if((hd2 = hd_get_device_by_id(hd_data, hd->parent_id))) { - hd->attached_to = hd2->idx; - } - else { - hd->attached_to = 0; - } - } - - for(hd = hd_data->hd; hd; hd = hd->next) { - if((hd2 = hd_get_device_by_idx(hd_data, hd->attached_to))) { - add_str_list(&hd2->child_ids, hd->unique_id); - } - } - - /* assign a hw_class & build a useful model string */ - for(hd = hd_data->hd; hd; hd = hd->next) { - assign_hw_class(hd_data, hd); - - /* create model name _after_ hw_class */ - create_model_name(hd_data, hd); - } - -#ifndef LIBHD_TINY - /* must be _after_ we have valid hw_class entries */ - hd_scan_manual2(hd_data); -#endif - - /* we are done... */ - for(hd = hd_data->hd; hd; hd = hd->next) hd->tag.fixed = 1; - - /* for compatibility */ - for(hd = hd_data->hd; hd; hd = hd->next) { - hd->driver = free_mem(hd->driver); - if(hd->drivers && hd->drivers->str) hd->driver = new_str(hd->drivers->str); - } - - hd_data->module = mod_none; - - if( - hd_data->debug && - !hd_data->flags.internal && - ( - hd_data->kmods || - hd_probe_feature(hd_data, pr_int /* arbitrary; just avoid /proc/modules for -pr_all */) - ) - ) { - sl0 = read_file(PROC_MODULES, 0, 0); - ADD2LOG("----- /proc/modules -----\n"); - for(sl = sl0; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- /proc/modules end -----\n"); - free_str_list(sl0); - } - - update_irq_usage(hd_data); - - if(hd_data->debug && !hd_data->flags.internal) { - irqs = hd_data->used_irqs; - - ADD2LOG(" used irqs:"); - for(i = j = 0; i < 64; i++, irqs >>= 1) { - if((irqs & 1)) { - ADD2LOG("%c%d", j ? ',' : ' ', i); - j = 1; - } - } - ADD2LOG("\n"); - } -} - - -/* - * Note: due to byte order problems decoding the id is really a mess... - * And, we use upper case for hex numbers! - */ -char *isa_id2str(unsigned id) -{ - char *s = new_mem(8); - unsigned u = ((id & 0xff) << 8) + ((id >> 8) & 0xff); - unsigned v = ((id >> 8) & 0xff00) + ((id >> 24) & 0xff); - - s[0] = ((u >> 10) & 0x1f) + 'A' - 1; - s[1] = ((u >> 5) & 0x1f) + 'A' - 1; - s[2] = ( u & 0x1f) + 'A' - 1; - - sprintf(s + 3, "%04X", v); - - return s; -} - -char *eisa_vendor_str(unsigned v) -{ - static char s[4]; - - s[0] = ((v >> 10) & 0x1f) + 'A' - 1; - s[1] = ((v >> 5) & 0x1f) + 'A' - 1; - s[2] = ( v & 0x1f) + 'A' - 1; - s[3] = 0; - - return s; -} - - -/* - * Must _not_ check that s is exactly 3 chars. - */ -unsigned name2eisa_id(char *s) -{ - int i; - unsigned u = 0; - - for(i = 0; i < 3; i++) { - u <<= 5; - if(s[i] < 'A' - 1 || s[i] > 'A' - 1 + 0x1f) return 0; - u += s[i] - 'A' + 1; - } - - return MAKE_ID(TAG_EISA, u); -} - - -/* - * Create a 'canonical' version, i.e. no spaces at start and end. - * - * Note: removes chars >= 0x80 as well (due to (char *))! This - * is currently considered a feature. - */ -char *canon_str(char *s, int len) -{ - char *m2, *m1, *m0; - int i; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, ">%p\n", CALLED_FROM(canon_str, s)); - } -#endif - - if(len < 0) len = 0; /* just to be safe */ - - m0 = new_mem(len + 1); - - for(m1 = m0, i = 0; i < len; i++) { - if(m1 == m0 && s[i] <= ' ') continue; - *m1++ = s[i]; - } - *m1 = 0; - while(m1 > m0 && m1[-1] <= ' ') { - *--m1 = 0; - } - - m2 = new_str(m0); - free_mem(m0); - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, "<%p\n", CALLED_FROM(canon_str, s)); - } -#endif - - return m2; -} - - -/* - * Convert a n-digit hex number to its numerical value. - */ -int hex(char *s, int n) -{ - int i = 0, j; - - while(n--) { - if(sscanf(s++, "%1x", &j) != 1) return -1; - i = (i << 4) + j; - } - - return i; -} - - -/* simple 32 bit fixed point numbers with n decimals */ -int str2float(char *s, int n) -{ - int i = 0; - int dot = 0; - - while(*s) { - if(*s == '.') { - if(dot++) return 0; - } - else if(*s >= '0' && *s <= '9') { - if(dot) { - if(!n) return i; - n--; - } - i *= 10; - i += *s - '0'; - } - else { - return 0; - } - - s++; - } - - while(n--) i *= 10; - - return i; -} - - -/* simple 32 bit fixed point numbers with n decimals */ -char *float2str(int f, int n) -{ - int i = 1, j, m = n; - static char buf[32]; - - while(n--) i *= 10; - - j = f / i; - i = f % i; - - while(i && !(i % 10)) i /= 10, m--; - - if(i) { - sprintf(buf, "%d.%0*d", j, m, i); - } - else { - sprintf(buf, "%d", j); - } - - return buf; -} - - -/* - * find hardware entry with given index - */ -hd_t *hd_get_device_by_idx(hd_data_t *hd_data, unsigned idx) -{ - hd_t *hd; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_get_device_by_idx, hd_data), hd_data); - } -#endif - - if(!idx) return NULL; /* early out: idx is always != 0 */ - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->idx == idx) return hd; - } - - return NULL; -} - - -/* - * find hardware entry with given unique id - */ -hd_t *hd_get_device_by_id(hd_data_t *hd_data, char *id) -{ - hd_t *hd; - - if(!id) return NULL; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->unique_id && !strcmp(hd->unique_id, id)) return hd; - } - - return NULL; -} - - -/* - * Give the actual name of the probing module. - */ -char *mod_name_by_idx(unsigned idx) -{ - unsigned u; - - for(u = 0; u < sizeof pr_modules / sizeof *pr_modules; u++) - if(idx == pr_modules[u].val) return pr_modules[u].name; - - return ""; -} - - -/* - * Print to a string. - * Note: *buf must point to a malloc'd memory area (or be NULL). - * - * Use an offset of -1 or -2 to append the new string. - * - * As this function is quite often used to extend our log messages, there - * is a cache that holds the length of the last string we created. This way - * we speed this up somewhat. Use an offset of -2 to use this feature. - * Note: this only works as long as str_printf() is used *exclusively* to - * extend the string. - */ -void str_printf(char **buf, int offset, char *format, ...) -{ - static char *last_buf = NULL; - static int last_len = 0; - int len, use_cache; - char b[0x10000]; - va_list args; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, ">%p\n", CALLED_FROM(str_printf, buf)); - } -#endif - - use_cache = offset == -2 ? 1 : 0; - - if(*buf) { - if(offset == -1) { - offset = strlen(*buf); - } - else if(offset == -2) { - if(last_buf == *buf && last_len && !(*buf)[last_len]) - offset = last_len; - else - offset = strlen(*buf); - } - } - else { - offset = 0; - } - - va_start(args, format); - vsnprintf(b, sizeof b, format, args); - va_end(args); - - *buf = resize_mem(*buf, (len = offset + strlen(b)) + 1); - strcpy(*buf + offset, b); - - if(use_cache) { - last_buf = *buf; - last_len = len; - } - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, "<%p\n", CALLED_FROM(str_printf, buf)); - } -#endif -} - - -void hexdump(char **buf, int with_ascii, unsigned data_len, unsigned char *data) -{ - unsigned i; - - for(i = 0; i < data_len; i++) { - if(i) - str_printf(buf, -2, " %02x", data[i]); - else - str_printf(buf, -2, "%02x", data[i]); - } - - if(with_ascii) { - str_printf(buf, -2, " \""); - for(i = 0; i < data_len; i++) { - str_printf(buf, -2, "%c", data[i] < ' ' || data[i] >= 0x7f ? '.' : data[i]); - } - str_printf(buf, -2, "\""); - } -} - - -/** \relates s_str_list_t - * Search a string list for a string. - */ -str_list_t *search_str_list(str_list_t *sl, char *str) -{ - if(!str) return NULL; - - for(; sl; sl = sl->next) if(sl->str && !strcmp(sl->str, str)) return sl; - - return NULL; -} - - -/** \relates s_str_list_t - * Add a string to a string list. - * - * The new string (str) will be *copied*! - */ -str_list_t *add_str_list(str_list_t **sl, char *str) -{ -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, ">%p\n", CALLED_FROM(add_str_list, sl)); - } -#endif - - while(*sl) sl = &(*sl)->next; - - *sl = new_mem(sizeof **sl); - (*sl)->str = new_str(str); - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, "<%p\n", CALLED_FROM(add_str_list, sl)); - } -#endif - - return *sl; -} - - -/** \relates s_str_list_t - * Free the memory allocated by a string list. - */ -str_list_t *free_str_list(str_list_t *list) -{ - str_list_t *l; - - for(; list; list = (l = list)->next, free_mem(l)) { - free_mem(list->str); - } - - return NULL; -} - - -/* - * Read a file; return a linked list of lines. - * - * start_line is zero-based; lines == 0 -> all lines - */ -str_list_t *read_file(char *file_name, unsigned start_line, unsigned lines) -{ - FILE *f; - char buf[0x10000]; - int pipe = 0; - str_list_t *sl_start = NULL, *sl_end = NULL, *sl; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, ">%p\n", CALLED_FROM(read_file, file_name)); - } -#endif - - if(*file_name == '|') { - pipe = 1; - file_name++; - if(!(f = popen(file_name, "r"))) { -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, "<%p\n", CALLED_FROM(read_file, file_name)); - } -#endif - return NULL; - } - } - else { - if(!(f = fopen(file_name, "r"))) { -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, "<%p\n", CALLED_FROM(read_file, file_name)); - } -#endif - return NULL; - } - } - - while(fgets(buf, sizeof buf, f)) { - if(start_line) { - start_line--; - continue; - } - sl = new_mem(sizeof *sl); - sl->str = new_str(buf); - if(sl_start) - sl_end->next = sl; - else - sl_start = sl; - sl_end = sl; - - if(lines == 1) break; - lines--; - } - - if(pipe) - pclose(f); - else - fclose(f); - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) fprintf(libhd_log, "<%p\n", CALLED_FROM(read_file, file_name)); - } -#endif - - return sl_start; -} - - -/* - * Read directory, return a list of entries with file type 'type'. - */ -str_list_t *read_dir(char *dir_name, int type) -{ - str_list_t *sl_start = NULL, *sl_end = NULL, *sl; - DIR *dir; - struct dirent *de; - struct stat sbuf; - char *s; - int dir_type; - - if(dir_name && (dir = opendir(dir_name))) { - while((de = readdir(dir))) { - if(!strcmp(de->d_name, ".") || !strcmp(de->d_name, "..")) continue; - dir_type = 0; - - if(type) { - s = NULL; - str_printf(&s, 0, "%s/%s", dir_name, de->d_name); - - if(!lstat(s, &sbuf)) { - if(S_ISDIR(sbuf.st_mode)) { - dir_type = 'd'; - } - else if(S_ISREG(sbuf.st_mode)) { - dir_type = 'r'; - } - else if(S_ISLNK(sbuf.st_mode)) { - dir_type = 'l'; - } - } - - s = free_mem(s); - } - - if(dir_type == type) { - sl = new_mem(sizeof *sl); - sl->str = new_str(de->d_name); - if(sl_start) - sl_end->next = sl; - else - sl_start = sl; - sl_end = sl; - } - } - closedir(dir); - } - - return sl_start; -} - - -char *hd_read_symlink(char *link_name) -{ - static char buf[256]; - int i; - - i = readlink(link_name, buf, sizeof buf); - buf[sizeof buf - 1] = 0; - if(i >= 0 && (unsigned) i < sizeof buf) buf[i] = 0; - if(i < 0) *buf = 0; - - return buf; -} - - -/* - * Log the hardware detection progress. - */ -void progress(hd_data_t *hd_data, unsigned pos, unsigned count, char *msg) -{ - char buf1[32], buf2[32], buf3[128], *fn; - - if(hd_data->shm.ok && hd_data->flags.forked) { - ((hd_data_t *) (hd_data->shm.data))->shm.updated++; - } - - if(!msg) msg = ""; - - sprintf(buf1, "%u", hd_data->module); - sprintf(buf2, ".%u", count); - fn = mod_name_by_idx(hd_data->module); - - sprintf(buf3, "%s.%u%s", *fn ? fn : buf1, pos, count ? buf2 : ""); - - if((hd_data->debug & HD_DEB_PROGRESS)) - ADD2LOG(">> %s: %s\n", buf3, msg); - - if(hd_data->progress) hd_data->progress(buf3, msg); -} - - - -/* - * Returns a probe feature suitable for hd_*probe_feature(). - * If name is not a valid probe feature, 0 is returned. - * - */ -enum probe_feature hd_probe_feature_by_name(char *name) -{ - unsigned u; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_probe_feature_by_name, name), name); - } -#endif - - for(u = 0; u < sizeof pr_flags / sizeof *pr_flags; u++) - if(!strcmp(name, pr_flags[u].name)) return pr_flags[u].val; - - return 0; -} - - -/* - * Coverts a enum probe_feature to a string. - * If it fails, NULL is returned. - */ -char *hd_probe_feature_by_value(enum probe_feature feature) -{ - unsigned u; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%u\n", __FUNCTION__, CALLED_FROM(hd_probe_feature_by_value, feature), feature); - } -#endif - - for(u = 0; u < sizeof pr_flags / sizeof *pr_flags; u++) - if(feature == pr_flags[u].val) return pr_flags[u].name; - - return NULL; -} - - -/* - * Removes all hd_data->hd entries created by the current module from the - * list. The old entries are added to hd_data->old_hd. - */ -void remove_hd_entries(hd_data_t *hd_data) -{ - hd_t *hd; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->module == hd_data->module) { - hd->tag.remove = 1; - } - } - - remove_tagged_hd_entries(hd_data); -} - - -/* - * Removes all hd_data->hd entries that have the remove tag set from the - * list. The old entries are added to hd_data->old_hd. - */ -void remove_tagged_hd_entries(hd_data_t *hd_data) -{ - hd_t *hd, **prev, **h; - - for(hd = *(prev = &hd_data->hd); hd;) { - if(hd->tag.remove) { - /* find end of the old list... */ - h = &hd_data->old_hd; - while(*h) h = &(*h)->next; - *h = hd; /* ...and append the entry */ - - hd = *prev = hd->next; - (*h)->next = NULL; - } - else { - hd = *(prev = &hd->next); - } - } -} - - -int hd_module_is_active(hd_data_t *hd_data, char *mod) -{ - str_list_t *sl, *sl0 = read_kmods(hd_data); - int active = 0; - char *s; -#ifdef __PPC__ - char *s1, *s2; -#endif - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_module_is_active, hd_data), hd_data); - } -#endif - - mod = new_str(mod); - - /* convert '-' to '_' */ - for(s = mod; *s; s++) if(*s == '-') *s = '_'; - - for(sl = sl0; sl; sl = sl->next) { - if(!strcmp(sl->str, mod)) break; - } - - free_str_list(sl0); - active = sl ? 1 : 0; - - if(active) { - free_mem(mod); - - return active; - } - -#ifdef __PPC__ - /* temporary hack for ppc */ - if(!strcmp(mod, "gmac")) { - s1 = "<6>eth"; - s2 = " GMAC "; - } - else if(!strcmp(mod, "mace")) { - s1 = "<6>eth"; - s2 = " MACE "; - } - else if(!strcmp(mod, "bmac")) { - s1 = "<6>eth"; - s2 = " BMAC"; - } - else if(!strcmp(mod, "mac53c94")) { - s1 = "<4>scsi"; - s2 = " 53C94"; - } - else if(!strcmp(mod, "mesh")) { - s1 = "<4>scsi"; - s2 = " MESH"; - } - else if(!strcmp(mod, "swim3")) { - s1 = "<6>fd"; - s2 = " SWIM3 "; - } - else { - s1 = s2 = NULL; - } - - if(s1) { - for(sl = hd_data->klog; sl; sl = sl->next) { - if(strstr(sl->str, s1) == sl->str && strstr(sl->str, s2)) { - active = 1; - break; - } - } - } -#endif - - free_mem(mod); - - return active; -} - - -int hd_has_pcmcia(hd_data_t *hd_data) -{ - hd_t *hd; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(is_pcmcia_ctrl(hd_data, hd)) return 1; - } - - return 0; -} - - -int hd_apm_enabled(hd_data_t *hd_data) -{ - hd_t *hd; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_apm_enabled, hd_data), hd_data); - } -#endif - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_internal && - hd->sub_class.id == sc_int_bios && - hd->detail && - hd->detail->type == hd_detail_bios && - hd->detail->bios.data - ) { - return hd->detail->bios.data->apm_enabled; - } - } - - return 0; -} - - -int hd_usb_support(hd_data_t *hd_data) -{ - hd_t *hd; - hd_res_t *res; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_usb_support, hd_data), hd_data); - } -#endif - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == bc_serial && hd->sub_class.id == sc_ser_usb) { - for(res = hd->res; res; res = res->next) { - if(res->any.type == res_irq) - return hd->prog_if.id == pif_usb_ohci ? 2 : 1; /* 2: ohci, 1: uhci */ - } - } - } - - return 0; -} - - -int hd_smp_support(hd_data_t *hd_data) -{ - int is_smp = 0; - unsigned u; - hd_t *hd, *hd0; -#if defined(__i386__) || defined (__x86_64__) - unsigned cpu_threads = 0; - cpu_info_t *ct; -#endif - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_smp_support, hd_data), hd_data); - } -#endif - - u = hd_data->flags.internal; - hd_data->flags.internal = 1; - hd = hd_list(hd_data, hw_cpu, 0, NULL); - if(!hd) hd = hd_list(hd_data, hw_cpu, 1, NULL); - hd_data->flags.internal = u; - - for(is_smp = 0, hd0 = hd; hd0; hd0 = hd0->next) is_smp++; - if(is_smp == 1) is_smp = 0; - -#if defined(__i386__) || defined (__x86_64__) - if( - hd && - hd->detail && - hd->detail->type == hd_detail_cpu && - (ct = hd->detail->cpu.data) - ) { - cpu_threads = ct->units; - } -#endif - - hd = hd_free_hd_list(hd); - -#if !defined(LIBHD_TINY) && (defined(__i386__) || defined (__x86_64__)) - if(is_smp < 2) { - if(!hd_data->bios_ram.data) { - hd_free_hd_list(hd_list(hd_data, hw_sys, 1, NULL)); - } - is_smp = detect_smp_bios(hd_data); - // at least 2 processors - if(is_smp < 2) is_smp = 0; - if(!is_smp && cpu_threads > 1) is_smp = 2; - } -#endif - -#ifdef __PPC__ - if(is_smp < 2) { - if(!hd_data->devtree) { - hd_free_hd_list(hd_list(hd_data, hw_sys, 1, NULL)); - } - is_smp = detect_smp_prom(hd_data); - if(is_smp < 0) is_smp = 0; - } -#endif - -#if defined(__s390__) || defined(__s390x__) - if(!is_smp) is_smp = 1; -#endif - - return is_smp; -} - - -int hd_color(hd_data_t *hd_data) -{ -#if 0 - hd_t *hd; - prom_info_t *pt; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_internal && hd->sub_class.id == sc_int_prom && - hd->detail && hd->detail->type == hd_detail_prom && - (pt = hd->detail->prom.data) && - pt->has_color - ) { - return pt->color; - } - } -#endif - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_color, hd_data), hd_data); - } -#endif - - if(hd_data->color_code) return hd_data->color_code & 0xffff; - - return -1; -} - - -int hd_mac_color(hd_data_t *hd_data) -{ -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_mac_color, hd_data), hd_data); - } -#endif - - return hd_color(hd_data); -} - - -unsigned hd_display_adapter(hd_data_t *hd_data) -{ - hd_t *hd; - driver_info_t *di; - unsigned disp, disp_sbus, disp_pci, disp_any, disp_di; - unsigned disp_cnt, disp_any_cnt; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_display_adapter, hd_data), hd_data); - } -#endif - - /* if we know exactly where our primary display is, return it */ - if(hd_get_device_by_idx(hd_data, hd_data->display)) return hd_data->display; - - disp = disp_sbus = disp_pci = disp_any = disp_di = 0; - disp_cnt = disp_any_cnt = 0; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == bc_display) { - disp_any_cnt++; - if(!disp_any) disp_any = hd->idx; - if(hd->sub_class.id == sc_dis_vga) { - disp_cnt++; - if(!disp) disp = hd->idx; - if(hd->bus.id == bus_pci && !disp_pci) disp_pci = hd->idx; - if(hd->bus.id == bus_sbus && !disp_sbus) disp_sbus = hd->idx; - } - if(!disp_di) { - if(!(di = hd->driver_info)) { - hddb_add_info(hd_data, hd); - di = hd->driver_info; - } - if(di && di->any.type == di_x11 && di->x11.server) { - disp_di = hd->idx; - } - } - } - } - - /* if there's only one display adapter, return it */ - if(disp_any_cnt == 1) return disp_any; - - /* if there's only one vga compatible adapter, return it */ - if(disp_cnt == 1) return disp; - - /* return 1st (vga compatible) sbus card */ - /* note: the sbus code enters display cards as 'vga compatible' */ - if(disp_sbus) return disp_sbus; - - /* return 1st display adapter that has some x11 info */ - if(disp_di) return disp_di; - - /* return 1st vga compatible pci card */ - if(disp_pci) return disp_pci; - - /* return 1st vga compatible card */ - if(disp) return disp; - - /* return 1st display adapter */ - if(disp_any) return disp_any; - - /* there were none... */ - return 0; -} - - -enum cpu_arch hd_cpu_arch(hd_data_t *hd_data) -{ - hd_t *hd; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_cpu_arch, hd_data), hd_data); - } -#endif - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_internal && - hd->sub_class.id == sc_int_cpu && - hd->detail && - hd->detail->type == hd_detail_cpu && - hd->detail->cpu.data - ) { - return hd->detail->cpu.data->architecture; - } - } - -#ifdef __i386__ - return arch_intel; -#else -#ifdef __alpha__ - return arch_alpha; -#else -#ifdef __PPC__ - return arch_ppc; -#else -#ifdef __sparc__ - return arch_sparc; -#else -#ifdef __s390x__ - return arch_s390x; -#else -#ifdef __s390__ - return arch_s390; -#else -#ifdef __ia64__ - return arch_ia64; -#else -#ifdef __x86_64__ - return arch_x86_64; -#else - return arch_unknown; -#endif -#endif -#endif -#endif -#endif -#endif -#endif -#endif -} - - -enum boot_arch hd_boot_arch(hd_data_t *hd_data) -{ -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_boot_arch, hd_data), hd_data); - } -#endif - - return hd_data->boot; -} - - -int hd_is_uml(hd_data_t *hd_data) -{ - int is_uml = 0; - hd_t *hd; - cpu_info_t *ct; - unsigned u; - unsigned saved_mod = hd_data->module; - unsigned char probe_save[sizeof hd_data->probe]; - - u = hd_data->flags.internal; - hd_data->flags.internal = 1; - hd = hd_list(hd_data, hw_cpu, 0, NULL); - if(!hd) { - /* Do *not* run hd_list(,, 1,) here! */ - memcpy(probe_save, hd_data->probe, sizeof probe_save); - hd_set_probe_feature(hd_data, pr_cpu); - hd_scan_cpu(hd_data); - memcpy(hd_data->probe, probe_save, sizeof hd_data->probe); - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == bc_internal && hd->sub_class.id == sc_int_cpu) break; - } - } - hd_data->flags.internal = u; - - if( - hd && - hd->detail && - hd->detail->type == hd_detail_cpu && - (ct = hd->detail->cpu.data) && - ct->model_name && - !strcmp(ct->model_name, "UML") - ) { - is_uml = 1; - } - - hd = hd_free_hd_list(hd); - - hd_data->module = saved_mod; - - return is_uml; -} - - -int hd_is_sgi_altix(hd_data_t *hd_data) -{ - struct stat sbuf; - - return stat("/proc/sgi_sn", &sbuf) ? 0 : 1; -} - - -int hd_is_iseries(hd_data_t *hd_data) -{ - struct stat sbuf; - - return stat(PROC_ISERIES, &sbuf) ? 0 : 1; -} - - -/* - * makes a (shallow) copy; does some magic fixes - */ -void hd_copy(hd_t *dst, hd_t *src) -{ - hd_t *tmp; -// unsigned u; - - tmp = dst->next; -// u = dst->idx; - - *dst = *src; - src->ref_cnt++; - dst->ref = src; - - dst->next = tmp; -// dst->idx = u; - - /* needed to keep in sync with the real device tree */ - if( - dst->detail && - dst->detail->type == hd_detail_devtree - ) { - dst->detail = NULL; /* ??? was: free_mem(dst->detail); */ - } -} - - -hd_t *hd_list(hd_data_t *hd_data, hd_hw_item_t item, int rescan, hd_t *hd_old) -{ - hd_t *hd, *hd1, *hd_list = NULL; - unsigned char probe_save[sizeof hd_data->probe]; - unsigned fast_save; - -#ifdef LIBHD_MEMCHECK -#ifndef __PPC__ - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\t%u\t%u\t%p\n", __FUNCTION__, CALLED_FROM(hd_list, hd_data), hd_data, item, rescan, hd_old); - } -#endif -#endif - - if(rescan) { - memcpy(probe_save, hd_data->probe, sizeof probe_save); - fast_save = hd_data->flags.fast; - hd_clear_probe_feature(hd_data, pr_all); -#ifdef __powerpc__ - hd_set_probe_feature(hd_data, pr_sys); - hd_scan(hd_data); -#endif - hd_set_probe_feature_hw(hd_data, item); - hd_scan(hd_data); - memcpy(hd_data->probe, probe_save, sizeof hd_data->probe); - hd_data->flags.fast = fast_save; - } - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(!hd_report_this(hd_data, hd)) continue; - - if( - ( - item == hw_manual || hd_is_hw_class(hd, item) - ) -#ifndef LIBHD_TINY -/* with LIBHD_TINY hd->status is not maintained (cf. manual.c) */ - && ( - hd->status.available == status_yes || - hd->status.available == status_unknown || - item == hw_manual || - hd_data->flags.list_all - ) -#endif - ) { -// if(hd->is.softraiddisk) continue; /* don't report them */ - - /* don't report old entries again */ - for(hd1 = hd_old; hd1; hd1 = hd1->next) { - if(!cmp_hd(hd1, hd)) break; - } - if(!hd1) { - hd1 = add_hd_entry2(&hd_list, new_mem(sizeof *hd_list)); - hd_copy(hd1, hd); - } - } - } - - if(item == hw_manual) { - for(hd = hd_list; hd; hd = hd->next) { - hd->status.available = hd->status.available_orig; - } - } - - return hd_list; -} - - -hd_t *hd_list_with_status(hd_data_t *hd_data, hd_hw_item_t item, hd_status_t status) -{ - hd_t *hd, *hd1, *hd_list = NULL; - unsigned char probe_save[sizeof hd_data->probe]; - -#ifdef LIBHD_MEMCHECK -#ifndef __PPC__ - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\t%u\n", __FUNCTION__, CALLED_FROM(hd_list_with_status, hd_data), hd_data, item); - } -#endif -#endif - - memcpy(probe_save, hd_data->probe, sizeof probe_save); - hd_clear_probe_feature(hd_data, pr_all); - hd_set_probe_feature(hd_data, pr_manual); - hd_scan(hd_data); - memcpy(hd_data->probe, probe_save, sizeof hd_data->probe); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd_is_hw_class(hd, item)) { - if( - (status.configured == 0 || status.configured == hd->status.configured) && - (status.available == 0 || status.available == hd->status.available) && - (status.needed == 0 || status.needed == hd->status.needed) && - (status.reconfig == 0 || status.reconfig == hd->status.reconfig) - ) { - hd1 = add_hd_entry2(&hd_list, new_mem(sizeof *hd_list)); - hd_copy(hd1, hd); - } - } - } - - return hd_list; -} - - -/* check if item is in items */ -int has_item(hd_hw_item_t *items, hd_hw_item_t item) -{ - while(*items) if(*items++ == item) return 1; - - return 0; -} - - -/* check if one of items is in hw_class */ -int has_hw_class(hd_t *hd, hd_hw_item_t *items) -{ - while(*items) if(hd_is_hw_class(hd, *items++)) return 1; - - return 0; -} - - -/* - * items must be a 0 terminated list - */ -hd_t *hd_list2(hd_data_t *hd_data, hd_hw_item_t *items, int rescan) -{ - hd_t *hd, *hd1, *hd_list = NULL; - unsigned char probe_save[sizeof hd_data->probe]; - unsigned fast_save; - hd_hw_item_t *item_ptr; - int is_manual; - - if(!items) return NULL; - - is_manual = has_item(items, hw_manual); - - if(rescan) { - memcpy(probe_save, hd_data->probe, sizeof probe_save); - fast_save = hd_data->flags.fast; - hd_clear_probe_feature(hd_data, pr_all); -#ifdef __powerpc__ - hd_set_probe_feature(hd_data, pr_sys); - hd_scan(hd_data); -#endif - for(item_ptr = items; *item_ptr; item_ptr++) { - hd_set_probe_feature_hw(hd_data, *item_ptr); - } - hd_scan(hd_data); - memcpy(hd_data->probe, probe_save, sizeof hd_data->probe); - hd_data->flags.fast = fast_save; - } - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(!hd_report_this(hd_data, hd)) continue; - if( - ( - is_manual || has_hw_class(hd, items) - ) -#ifndef LIBHD_TINY -/* with LIBHD_TINY hd->status is not maintained (cf. manual.c) */ - && ( - hd->status.available == status_yes || - hd->status.available == status_unknown || - is_manual || - hd_data->flags.list_all - ) -#endif - ) { -// if(hd->is.softraiddisk) continue; /* don't report them */ - - /* don't report old entries again */ - hd1 = add_hd_entry2(&hd_list, new_mem(sizeof *hd_list)); - hd_copy(hd1, hd); - } - } - - if(is_manual) { - for(hd = hd_list; hd; hd = hd->next) { - hd->status.available = hd->status.available_orig; - } - } - - return hd_list; -} - - -/* - * items must be a 0 terminated list - */ -hd_t *hd_list_with_status2(hd_data_t *hd_data, hd_hw_item_t *items, hd_status_t status) -{ - hd_t *hd, *hd1, *hd_list = NULL; - unsigned char probe_save[sizeof hd_data->probe]; - - if(!items) return NULL; - - memcpy(probe_save, hd_data->probe, sizeof probe_save); - hd_clear_probe_feature(hd_data, pr_all); - hd_set_probe_feature(hd_data, pr_manual); - hd_scan(hd_data); - memcpy(hd_data->probe, probe_save, sizeof hd_data->probe); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(has_hw_class(hd, items)) { - if( - (status.configured == 0 || status.configured == hd->status.configured) && - (status.available == 0 || status.available == hd->status.available) && - (status.needed == 0 || status.needed == hd->status.needed) && - (status.reconfig == 0 || status.reconfig == hd->status.reconfig) - ) { - hd1 = add_hd_entry2(&hd_list, new_mem(sizeof *hd_list)); - hd_copy(hd1, hd); - } - } - } - - return hd_list; -} - - -hd_t *hd_base_class_list(hd_data_t *hd_data, unsigned base_class) -{ - hd_t *hd, *hd1, *hd_list = NULL; -// hd_t *bridge_hd; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_base_class_list, hd_data), hd_data); - } -#endif - - for(hd = hd_data->hd; hd; hd = hd->next) { - -#if 0 - /* ###### fix later: card bus magic */ - if((bridge_hd = hd_get_device_by_idx(hd_data, hd->attached_to))) { - if( - bridge_hd->base_class.id == bc_bridge && - bridge_hd->sub_class.id == sc_bridge_cardbus - ) continue; - } -#endif - - /* add multimedia/sc_multi_video to display */ - if( - hd->base_class.id == base_class || - ( - base_class == bc_display && - hd->base_class.id == bc_multimedia && - hd->sub_class.id == sc_multi_video - ) - ) { - hd1 = add_hd_entry2(&hd_list, new_mem(sizeof *hd_list)); - hd_copy(hd1, hd); - } - } - - return hd_list; -} - -hd_t *hd_sub_class_list(hd_data_t *hd_data, unsigned base_class, unsigned sub_class) -{ - hd_t *hd, *hd1, *hd_list = NULL; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_sub_class_list, hd_data), hd_data); - } -#endif - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == base_class && hd->sub_class.id == sub_class) { - hd1 = add_hd_entry2(&hd_list, new_mem(sizeof *hd_list)); - hd_copy(hd1, hd); - } - } - - return hd_list; -} - -hd_t *hd_bus_list(hd_data_t *hd_data, unsigned bus) -{ - hd_t *hd, *hd1, *hd_list = NULL; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_bus_list, hd_data), hd_data); - } -#endif - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->bus.id == bus) { - hd1 = add_hd_entry2(&hd_list, new_mem(sizeof *hd_list)); - hd_copy(hd1, hd); - } - } - - return hd_list; -} - -/* Convert libhd bus IDs to hwcfg bus names */ -const char* hd_busid_to_hwcfg(int busid) -{ - const char* const ids1[]={"none","isa","eisa","mc","pci","pcmcia","nubus","cardbus","other"}; - const char* const ids2[]={"ps2","serial","parallel","floppy","scsi","ide","usb","adb","raid","sbus","i2o","vio","ccw","iucv"}; - if(busid <9) - return ids1[busid]; - else if(busid >=0x80 && busid <0x8e) - return ids2[busid-0x80]; - else - return 0; -} - -/* - * Check if the execution of (*func)() takes longer than timeout seconds. - * This is useful to work around long kernel-timeouts as in the floppy - * detection and ps/2 mouse detection. - */ -int hd_timeout(void(*func)(void *), void *arg, int timeout) -{ - int child1, child2; - int status = 0; - - child1 = fork(); - if(child1 == -1) return -1; - - if(child1) { - if(waitpid(child1, &status, 0) == -1) return -1; -// fprintf(stderr, ">child1 status: 0x%x\n", status); - - if(WIFEXITED(status)) { - status = WEXITSTATUS(status); -// fprintf(stderr, ">normal child1 status: 0x%x\n", status); - /* != 0 if we timed out */ - } - else { - status = 0; - } - } - else { - /* fork again */ - -#ifdef LIBHD_MEMCHECK - /* stop logging in child process */ - if(libhd_log) fclose(libhd_log); - libhd_log = NULL; -#endif - - child2 = fork(); - if(child2 == -1) return -1; - - if(child2) { -// fprintf(stderr, ">signal\n"); - signal(SIGALRM, timeout_alarm_handler); - alarm(timeout); - if(waitpid(child2, &status, 0) == -1) return -1; -// fprintf(stderr, ">child2 status: 0x%x\n", status); - _exit(0); - } - else { - (*func)(arg); - _exit(0); - } - } - - return status ? 1 : 0; -} - -void timeout_alarm_handler(int signal) -{ - _exit(63); -} - - -/* - * Return list of loaded modules. Converts '-' to '_'. - */ -str_list_t *read_kmods(hd_data_t *hd_data) -{ - str_list_t *sl, *sl0, *sl1 = NULL; - char *s; - - if(!hd_data->kmods || hd_data->flags.keep_kmods != 2) { - hd_data->kmods = free_str_list(hd_data->kmods); - if(!(sl0 = read_file(PROC_MODULES, 0, 0))) return NULL; - hd_data->kmods = sl0; - if(hd_data->flags.keep_kmods == 1) hd_data->flags.keep_kmods = 2; - } - - for(sl = hd_data->kmods; sl; sl = sl->next) { - s = sl->str; - add_str_list(&sl1, strsep(&s, " \t")); - } - - for(sl = sl1; sl; sl = sl->next) { - for(s = sl->str; *s; s++) if(*s == '-') *s = '_'; - } - - return sl1; -} - - -str_list_t *get_cmdline(hd_data_t *hd_data, char *key) -{ - str_list_t *sl0, *sl1, *cmd = NULL; - char *s, *t, *t0; - int i, l = strlen(key); - - if(!hd_data->cmd_line) { - sl0 = read_file(PROC_CMDLINE, 0, 1); - sl1 = read_file(LIB_CMDLINE, 0, 1); - - if(sl0) { - i = strlen(sl0->str); - if(i && sl0->str[i - 1] == '\n') sl0->str[i - 1] = 0; - hd_data->cmd_line = new_str(sl0->str); - if(hd_data->debug) { - ADD2LOG("----- " PROC_CMDLINE " -----\n"); - ADD2LOG(" %s\n", sl0->str); - ADD2LOG("----- " PROC_CMDLINE " end -----\n"); - } - } - if(sl1) { - i = strlen(sl1->str); - if(i && sl1->str[i - 1] == '\n') sl1->str[i - 1] = 0; - str_printf(&hd_data->cmd_line, -1, " %s", sl1->str); - if(hd_data->debug) { - ADD2LOG("----- " LIB_CMDLINE " -----\n"); - ADD2LOG(" %s\n", sl1->str); - ADD2LOG("----- " LIB_CMDLINE " end -----\n"); - } - } - - free_str_list(sl0); - free_str_list(sl1); - } - - if(!hd_data->cmd_line) return NULL; - - t = t0 = new_str(hd_data->cmd_line); - while((s = strsep(&t, " "))) { - if(!*s) continue; - if(!strncmp(s, key, l) && s[l] == '=') { - add_str_list(&cmd, s + l + 1); - } - } - - free_mem(t0); - - return cmd; -} - - -/* - * Return field 'field' (starting with 0) from the 'SuSE=' - * kernel cmd line parameter. - */ -char *get_cmd_param(hd_data_t *hd_data, int field) -{ - char *s, *t; - str_list_t *cmd; - - if(!(cmd = get_cmdline(hd_data, "SuSE"))) return NULL; - - s = cmd->str; - - t = NULL; - - if(s) { - for(; field; field--) { - if(!(s = strchr(s, ','))) break; - s++; - } - - if(s && (t = strchr(s, ','))) *t = 0; - } - - t = new_str(s); - - free_str_list(cmd); - - return t; -} - - -unsigned get_disk_crc(unsigned char *data, unsigned len) -{ - unsigned i, crc; - - crc = -1; - for(i = 0; i < len; i++) { - crc += data[i]; - crc *= 57; - } - - return crc; -} - -disk_t *add_disk_entry(disk_t **dl, disk_t *new_dl) -{ - while(*dl) dl = &(*dl)->next; - return *dl = new_dl; -} - -disk_t *free_disk_list(disk_t *dl) -{ - disk_t *l; - - for(; dl; dl = (l = dl)->next, free_mem(l)); - - return NULL; -} - -int dev_name_duplicate(disk_t *dl, char *dev_name) -{ - for(; dl; dl = dl->next) { - if(!strcmp(dl->dev_name, dev_name)) return 1; - } - - return 0; -} - -unsigned hd_boot_disk(hd_data_t *hd_data, int *matches) -{ - hd_t *hd; - unsigned crc, hd_idx = 0; - char *s; - int i, j; - disk_t *dl, *dl0 = NULL, *dl1 = NULL; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_boot_disk, hd_data), hd_data); - } -#endif - - if(matches) *matches = 0; - - if(!(s = get_cmd_param(hd_data, 2))) return 0; - - i = strlen(s); - - if(i >= 8) { - crc = hex(s, 8); - } - else { - free_mem(s); - return 0; - } - - s = free_mem(s); - - if((hd_data->debug & HD_DEB_BOOT)) { - ADD2LOG(" boot dev crc 0x%x\n", crc); - } - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk && - hd->block0 - ) { - if(dev_name_duplicate(dl0, hd->unix_dev_name)) continue; - dl = add_disk_entry(&dl0, new_mem(sizeof *dl0)); - dl->dev_name = hd->unix_dev_name; - dl->hd_idx = hd->idx; - dl->crc = get_disk_crc(dl->data = hd->block0, 512); - } - } - - if(!dl0) return 0; - - if((hd_data->debug & HD_DEB_BOOT)) { - for(dl = dl0; dl; dl = dl->next) { - ADD2LOG(" crc %s 0x%08x\n", dl->dev_name, dl->crc); - } - } - - for(i = 0, dl = dl0; dl; dl = dl->next) { - if(crc == dl->crc) { - dl->crc_match = 1; - dl1 = dl; - if(!i++) hd_idx = dl->hd_idx; - } - } - - if(i == 1 && dl1 && (hd_data->debug & HD_DEB_BOOT)) { - ADD2LOG("----- MBR -----\n"); - for(j = 0; j < 512; j += 0x10) { - ADD2LOG(" %03x ", j); - hexdump(&hd_data->log, 1, 0x10, dl1->data + j); - ADD2LOG("\n"); - } - ADD2LOG("----- MBR end -----\n"); - } - - free_disk_list(dl0); - - if(matches) *matches = i; - - hd_data->debug &= ~HD_DEB_BOOT; - - return hd_idx; -} - -void update_irq_usage(hd_data_t *hd_data) -{ - hd_t *hd; - misc_irq_t *mi; - unsigned u, v; - uint64_t irqs = 0; - hd_res_t *res; - - if(hd_data->misc) { - mi = hd_data->misc->irq; - for(u = 0; u < hd_data->misc->irq_len; u++) { - v = mi[u].irq; - irqs |= 1ull << v; - } - } - - for(hd = hd_data->hd; hd; hd = hd->next) { - for(res = hd->res; res; res = res->next) { - if(res->any.type == res_irq) { - irqs |= 1ull << res->irq.base; - } - } - } - - hd_data->used_irqs = irqs; -} - -int run_cmd(hd_data_t *hd_data, char *cmd) -{ - char *xcmd = NULL; - str_list_t *sl, *sl0; - - ADD2LOG("----- exec: \"%s\" -----\n", cmd); - - if(*cmd == '/') { - str_printf(&xcmd, 0, "|%s 2>&1", cmd); - sl0 = read_file(xcmd, 0, 0); - for(sl = sl0; sl; sl = sl->next) ADD2LOG(" %s", sl->str); - sl0 = free_str_list(sl0); - } - - ADD2LOG("----- return code: ? -----\n"); - - free_mem(xcmd); - - return 0; -} - -int probe_module(hd_data_t *hd_data, char *module) -{ - char *cmd = NULL; - int i; - struct stat sbuf; - - if(hd_module_is_active(hd_data, module)) return 0; - - if(stat(PROG_MODPROBE, &sbuf)) return 127; - - str_printf(&cmd, 0, PROG_MODPROBE " %s", module); - - i = run_cmd(hd_data, cmd); - - free_mem(cmd); - - return i; -} - -int load_module_with_params(hd_data_t *hd_data, char *module, char *params) -{ - char *cmd = NULL; - int i; - struct stat sbuf; - - if(hd_module_is_active(hd_data, module)) return 0; - - if(stat(PROG_MODPROBE, &sbuf)) return 127; - - str_printf(&cmd, 0, PROG_MODPROBE " %s %s", module, params ? params : ""); - - i = run_cmd(hd_data, cmd); - - free_mem(cmd); - - return i; -} - -int load_module(hd_data_t *hd_data, char *module) -{ - return load_module_with_params(hd_data, module, NULL); -} - -int unload_module(hd_data_t *hd_data, char *module) -{ - char *cmd = NULL; - int i; - - if(!hd_module_is_active(hd_data, module)) return 0; - - str_printf(&cmd, 0, PROG_RMMOD " %s", module); - - i = run_cmd(hd_data, cmd); - - free_mem(cmd); - - return i; -} - -/* - * Compare two hd entries and return 0 if they are identical. - */ -int cmp_hd(hd_t *hd1, hd_t *hd2) -{ - if(!hd1 || !hd2) return 1; - - if( - hd1->bus.id != hd2->bus.id || - hd1->slot != hd2->slot || - hd1->func != hd2->func || - hd1->base_class.id != hd2->base_class.id || - hd1->sub_class.id != hd2->sub_class.id || - hd1->prog_if.id != hd2->prog_if.id || - hd1->device.id != hd2->device.id || - hd1->vendor.id != hd2->vendor.id || - hd1->sub_vendor.id != hd2->sub_vendor.id || - hd1->revision.id != hd2->revision.id || - hd1->compat_device.id != hd2->compat_device.id || - hd1->compat_vendor.id != hd2->compat_vendor.id || - - hd1->module != hd2->module || - hd1->line != hd2->line - ) { - return 1; - } - - if(hd1->unix_dev_name || hd2->unix_dev_name) { - if(hd1->unix_dev_name && hd2->unix_dev_name) { - if(strcmp(hd1->unix_dev_name, hd2->unix_dev_name)) return 1; - } - else { - return 1; - } - } - - return 0; -} - - -void get_probe_env(hd_data_t *hd_data) -{ - char *s, *t, *env; - str_list_t *cmd = NULL; - int j, k; - char buf[10]; - - env = getenv("hwprobe"); - if(!env) { - cmd = get_cmdline(hd_data, "hwprobe"); - if(cmd) env = cmd->str; - } - s = env = new_str(env); - - free_str_list(cmd); - - if(!env) return; - - hd_data->xtra_hd = free_str_list(hd_data->xtra_hd); - - while((t = strsep(&s, ","))) { - if(*t == '+') { - k = 1; t++; - } - else if(*t == '-') { - k = 0; t++; - } - else { - k = 2; -// ADD2LOG("hwprobe: +/- missing before \"%s\"\n", t); -// return; - } - - if((j = hd_probe_feature_by_name(t))) { - set_probe_feature(hd_data, j, k ? 1 : 0); - } - else if(sscanf(t, "%8[^:]:%8[^:]:%8[^:]", buf, buf, buf) == 3) { - add_str_list(&hd_data->xtra_hd, t - (k == 2 ? 0 : 1)); - } - else { - if(*t) ADD2LOG("hwprobe: what is \"%s\"?\n", t); - return; - } - } - - free_mem(env); -} - -void hd_scan_xtra(hd_data_t *hd_data) -{ - str_list_t *sl; - hd_t *hd, *hd_tmp; - unsigned u0, u1, u2, tag; - int i, err; - char buf0[10], buf1[10], buf2[10], buf3[64], *s, k; - - hd_data->module = mod_xtra; - - remove_hd_entries(hd_data); - - for(sl = hd_data->xtra_hd; sl; sl = sl->next) { - s = sl->str; - err = 0; - switch(*s) { - case '+': k = 1; s++; break; - case '-': k = 0; s++; break; - default: k = 2; - } - if( - (i = sscanf(s, "%8[^:]:%8[^:]:%8[^:]:%60s", buf0, buf1, buf2, buf3)) >= 3 - ) { - if(i < 4) *buf3 = 0; - - u0 = strtoul(buf0, &s, 16); - if(*s) err |= 1; - if(strlen(buf1) == 3) { - u1 = name2eisa_id(buf1); - } - else { - tag = TAG_PCI; - s = buf1; - switch(*s) { - case 'p': tag = TAG_PCI; s++; break; - case 'r': tag = 0; s++; break; - case 's': tag = TAG_SPECIAL; s++; break; - case 'u': tag = TAG_USB; s++; break; - case 'P': tag = TAG_PCMCIA; s++; break; - } - u1 = strtoul(s, &s, 16); - if(*s) err |= 2; - u1 = MAKE_ID(tag, u1); - } - u2 = strtoul(buf2, &s, 16); - if(*s) err |= 4; - u2 = MAKE_ID(ID_TAG(u1), ID_VALUE(u2)); - if((err & 1) && !strcmp(buf0, "*")) { - u0 = -1; - err &= ~1; - } - if((err & 2) && !strcmp(buf1, "*")) { - u1 = 0; - err &= ~2; - } - if((err & 4) && !strcmp(buf2, "*")) { - u2 = 0; - err &= ~4; - } - if(!err) { - if(k) { - if(k == 2) { - /* insert at top */ - hd_tmp = hd_data->hd; - hd_data->hd = NULL; - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->next = hd_tmp; - hd_tmp = NULL; - } - else { - hd = add_hd_entry(hd_data, __LINE__, 0); - } - hd->base_class.id = u0 >> 8; - hd->sub_class.id = u0 & 0xff; - hd->vendor.id = u1; - hd->device.id = u2; - if(ID_TAG(hd->vendor.id) == TAG_PCI) hd->bus.id = bus_pci; - if(ID_TAG(hd->vendor.id) == TAG_USB) hd->bus.id = bus_usb; - if(ID_TAG(hd->vendor.id) == TAG_PCMCIA) { - hd->bus.id = bus_pcmcia; - hd->hotplug = hp_pcmcia; - } - if(*buf3) hd->unix_dev_name = new_str(buf3); - hd->status.available = status_yes; - hd->status.configured = status_new; - hd->status.needed = status_no; - } - else { - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - (u0 == -1u || ( - hd->base_class.id == (u0 >> 8) && - hd->sub_class.id == (u0 & 0xff) - )) && - (u1 == 0 || hd->vendor.id == u1) && - (u2 == 0 || hd->device.id == u2) && - (*buf3 == 0 || ( - hd->unix_dev_name && - !strcmp(hd->unix_dev_name, buf3) - )) - ) { - hd->tag.remove = 1; - } - } - remove_tagged_hd_entries(hd_data); - } - } - } - } -} - -unsigned has_something_attached(hd_data_t *hd_data, hd_t *hd) -{ - hd_t *hd1; - - for(hd1 = hd_data->hd; hd1; hd1 = hd1->next) { - if(hd1->attached_to == hd->idx) return hd1->idx; - } - - return 0; -} - - -/* ##### FIX: replace with a real crc later ##### */ -void crc64(uint64_t *id, void *p, int len) -{ - unsigned char uc; - - for(; len; len--, p++) { - uc = *(unsigned char *) p; - *id += uc + ((uc + 57) << 27); - *id *= 73; - *id *= 65521; - } -} - -char *numid2str(uint64_t id, int len) -{ - static char buf[32]; - -#ifdef NUMERIC_UNIQUE_ID - /* numeric */ - - if(len < (sizeof id << 3)) id &= ~(-1LL << len); - sprintf(buf, "%0*"PRIx64, len >> 2, id); - -#else - /* base64 like */ - - int i; - unsigned char u; - - memset(buf, 0, sizeof buf); - for(i = 0; len > 0 && i < (int) sizeof buf - 1; i++, len -= 6, id >>= 6) { - u = id & 0x3f; - if(u < 10) { - u += '0'; /* 0..9 */ - } - else if(u < 10 + 26) { - u += 'A' - 10; /* A..Z */ - } - else if(u < 10 + 26 + 26) { - u += 'a' - 10 - 26; /* a..z */ - } - else if(u == 63) { - u = '+'; - } - else { - u = '_'; - } - buf[i] = u; - } - -#endif - - return buf; -} - -/* - * calculate unique ids - */ -#define INT_CRC(a, b) crc64(&a, &hd->b, sizeof hd->b); -#define STR_CRC(a, b) if(hd->b) crc64(&a, hd->b, strlen(hd->b) + 1); - - -// old method -void hd_add_old_id(hd_t *hd) -{ - uint64_t id0 = 0, id1 = 0; - - if(hd->unique_id) return; - - INT_CRC(id0, bus.id); - INT_CRC(id0, slot); - INT_CRC(id0, func); - INT_CRC(id0, base_class.id); - INT_CRC(id0, sub_class.id); - INT_CRC(id0, prog_if.id); - STR_CRC(id0, unix_dev_name); - STR_CRC(id0, rom_id); - - INT_CRC(id1, base_class.id); - INT_CRC(id1, sub_class.id); - INT_CRC(id1, prog_if.id); - INT_CRC(id1, device.id); - INT_CRC(id1, vendor.id); - INT_CRC(id1, sub_device.id); - INT_CRC(id1, sub_vendor.id); - INT_CRC(id1, revision.id); - INT_CRC(id1, compat_device.id); - INT_CRC(id1, compat_vendor.id); - STR_CRC(id1, device.name); - STR_CRC(id1, vendor.name); - STR_CRC(id1, sub_device.name); - STR_CRC(id1, sub_vendor.name); - STR_CRC(id1, revision.name); - STR_CRC(id1, serial); - - id0 += (id0 >> 32); - str_printf(&hd->unique_id, 0, "%s", numid2str(id0, 24)); - str_printf(&hd->unique_id, -1, ".%s", numid2str(id1, 64)); -} - -void hd_add_id(hd_data_t *hd_data, hd_t *hd) -{ - uint64_t id0 = 0, id1 = 0; - - if(hd->unique_id) return; - - hd_add_old_id(hd); - hd->old_unique_id = hd->unique_id; - hd->unique_id = NULL; - - INT_CRC(id1, base_class.id); - INT_CRC(id1, sub_class.id); - INT_CRC(id1, prog_if.id); - INT_CRC(id1, device.id); - INT_CRC(id1, vendor.id); - INT_CRC(id1, sub_device.id); - INT_CRC(id1, sub_vendor.id); - INT_CRC(id1, revision.id); - if( - hd->detail && - hd->detail->type == hd_detail_ccw && - hd->detail->ccw.data - ) INT_CRC(id1, detail->ccw.data->cu_model); - INT_CRC(id1, compat_device.id); - INT_CRC(id1, compat_vendor.id); - // make sure we get the same id even if, say, the pci name list changes - if(!hd->device.id) STR_CRC(id1, device.name); - if(!hd->vendor.id) STR_CRC(id1, vendor.name); - if(!hd->sub_device.name) STR_CRC(id1, sub_device.name); - if(!hd->sub_vendor.name) STR_CRC(id1, sub_vendor.name); - if(!hd->revision.name) STR_CRC(id1, revision.name); - STR_CRC(id1, serial); - - hd->unique_id1 = new_str(numid2str(id1, 64)); - - INT_CRC(id0, bus.id); - - if( - (hd->bus.id == bus_usb || - hd->bus.id == bus_ccw) && - hd->sysfs_bus_id - ) { - STR_CRC(id0, sysfs_bus_id); - } - else if( - hd->bus.id != bus_usb && - hd->bus.id != bus_pci && - hd->sysfs_id - ) { - STR_CRC(id0, sysfs_id); - } - else if(hd->unix_dev_name) { - STR_CRC(id0, unix_dev_name); - } - else { - INT_CRC(id0, slot); - INT_CRC(id0, func); - } - - STR_CRC(id0, rom_id); - - id0 += (id0 >> 32); - - str_printf(&hd->unique_id, 0, "%s.%s", numid2str(id0, 24), hd->unique_id1); -} -#undef INT_CRC -#undef STR_CRC - - -devtree_t *free_devtree(hd_data_t *hd_data) -{ - hd_t *hd; - devtree_t *dt, *next; - - /* - * first, remove all references in the current device tree - * (refs in hd_old can remain) - */ - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->detail && hd->detail->type == hd_detail_devtree) { - hd->detail = free_mem(hd->detail); - } - } - - for(dt = hd_data->devtree; dt; dt = next) { - next = dt->next; - - free_mem(dt->path); - free_mem(dt->filename); - free_mem(dt->name); - free_mem(dt->model); - free_mem(dt->device_type); - free_mem(dt->compatible); - free_mem(dt->edid); - - free_mem(dt); - } - - return hd_data->devtree = NULL; -} - - -void test_read_block0_open(void *arg) -{ - open((char *) arg, O_RDONLY); -} - -unsigned char *read_block0(hd_data_t *hd_data, char *dev, int *timeout) -{ - int fd, len, buf_size = 512, k, sel; - unsigned char *buf = NULL; - struct timeval to; - fd_set set, set0; - - if(hd_timeout(test_read_block0_open, dev, *timeout) > 0) { - ADD2LOG(" read_block0: open(%s) timed out\n", dev); - *timeout = -1; - fd = -2; - } - else { - fd = open(dev, O_RDONLY); - if(fd < 0) ADD2LOG(" read_block0: open(%s) failed\n", dev); - } - if(fd >= 0) { - buf = new_mem(buf_size); - len = k = 0; - - FD_ZERO(&set0); - FD_SET(fd, &set0); - - to.tv_sec = *timeout; to.tv_usec = 0; - for(;;) { - set = set0; - if((sel = select(fd + 1, &set, NULL, NULL, &to)) > 0) { - if((k = read(fd, buf + len, buf_size - len)) > 0) len += k; - ADD2LOG(" read_block0: %d bytes (%ds, %dus)\n", k, (int) to.tv_sec, (int) to.tv_usec); - if(k <= 0 || buf_size == len) break; - } - if(sel == 0) { - *timeout = -2; break; - } - } - - if(k < 0) { - ADD2LOG(" read_block0: read error(%s, %d, %d): errno %d\n", dev, len, buf_size - len, errno); - buf = free_mem(buf); - } - close(fd); - } - - return buf; -} - - -void get_kernel_version(hd_data_t *hd_data) -{ - unsigned u1, u2; - str_list_t *sl; - - if(hd_data->kernel_version) return; - - hd_data->kernel_version = KERNEL_24; - - sl = read_file(PROC_VERSION, 0, 1); - - if(!sl || !sl->str) return; - - if(sscanf(sl->str, "Linux version %u.%u.", &u1, &u2) == 2) { - if(hd_data->debug) { - ADD2LOG("kernel version is %u.%u\n", u1, u2); - } - u1 = (u1 << 16) + (u2 << 8); - - if(u1 <= KERNEL_22) { - hd_data->kernel_version = KERNEL_22; - } - else if(u1 <= KERNEL_24) { - hd_data->kernel_version = KERNEL_24; - } - else if(u1 <= KERNEL_26) { - hd_data->kernel_version = KERNEL_26; - } - } - - free_str_list(sl); -} - - -char *vend_id2str(unsigned vend) -{ - static char buf[32]; - char *s; - - *(s = buf) = 0; - - if(ID_TAG(vend) == TAG_EISA) { - strcpy(s, eisa_vendor_str(vend)); - } - else { - if(ID_TAG(vend) == TAG_USB) *s++ = 'u', *s = 0; - if(ID_TAG(vend) == TAG_SPECIAL) *s++ = 's', *s = 0; - if(ID_TAG(vend) == TAG_PCMCIA) *s++ = 'P', *s = 0; - sprintf(s, "%04x", ID_VALUE(vend)); - } - - return buf; -} - - -int is_modem(hd_data_t *hd_data, hd_t *hd) -{ - if( - hd->base_class.id == bc_modem || - ( - hd->base_class.id == bc_comm && - hd->sub_class.id == sc_com_modem - ) - ) return 1; - - return 0; -} - - -int is_audio(hd_data_t *hd_data, hd_t *hd) -{ - /* ISA-PnP sound cards: just one entry per card */ - if( - hd->bus.id == bus_isa && - hd->is.isapnp && - hd->func - ) return 0; - - if( - hd->base_class.id == bc_multimedia && - ( - hd->sub_class.id == sc_multi_audio || - hd->sub_class.id == 3 - ) - ) return 1; - - return 0; -} - - -void assign_hw_class(hd_data_t *hd_data, hd_t *hd) -{ - int sc; /* compare sub_class too */ - unsigned base_class, sub_class; - hd_hw_item_t item; - int (*test_func)(hd_data_t *, hd_t *); - - if(!hd) return; - - // ###### FIXME: maybe just return here? - if(!hd->hw_class) { /* skip if we've already done it */ - for(item = 1; item < hw_all; item++) { - - test_func = NULL; - - sc = 0; - sub_class = 0; - - base_class = -1; - switch(item) { - case hw_cdrom: - base_class = bc_storage_device; - sub_class = sc_sdev_cdrom; - sc = 1; - break; - - case hw_floppy: - base_class = bc_storage_device; - sub_class = sc_sdev_floppy; - sc = 1; - break; - - case hw_disk: - base_class = bc_storage_device; - sub_class = sc_sdev_disk; - sc = 1; - break; - - case hw_network: - base_class = bc_network_interface; - break; - - case hw_display: - base_class = bc_display; - break; - - case hw_monitor: - base_class = bc_monitor; - break; - - case hw_mouse: - base_class = bc_mouse; - break; - - case hw_joystick: - base_class = bc_joystick; - break; - - case hw_keyboard: - base_class = bc_keyboard; - break; - - case hw_camera: - base_class = bc_camera; - break; - - case hw_framebuffer: - base_class = bc_framebuffer; - break; - - case hw_chipcard: - base_class = bc_chipcard; - break; - - case hw_sound: - test_func = is_audio; - break; - - case hw_isdn: - base_class = bc_isdn; - break; - - case hw_dsl: - base_class = bc_dsl; - break; - - case hw_modem: - test_func = is_modem; - break; - - case hw_storage_ctrl: - base_class = bc_storage; - break; - - case hw_network_ctrl: - base_class = bc_network; - break; - - case hw_printer: - base_class = bc_printer; - break; - - case hw_tv: - base_class = bc_tv; - break; - - case hw_dvb: - base_class = bc_dvb; - break; - - case hw_scanner: - base_class = bc_scanner; - break; - - case hw_braille: - base_class = bc_braille; - break; - - case hw_sys: - base_class = bc_internal; - sub_class = sc_int_sys; - sc = 1; - break; - - case hw_cpu: - base_class = bc_internal; - sub_class = sc_int_cpu; - sc = 1; - break; - - case hw_bios: - base_class = bc_internal; - sub_class = sc_int_bios; - sc = 1; - break; - - case hw_usb_ctrl: - base_class = bc_serial; - sub_class = sc_ser_usb; - sc = 1; - break; - - case hw_bridge: - base_class = bc_bridge; - break; - - case hw_hub: - base_class = bc_hub; - break; - - case hw_memory: - base_class = bc_internal; - sub_class = sc_int_main_mem; - sc = 1; - break; - - case hw_ieee1394_ctrl: - base_class = bc_serial; - sub_class = sc_ser_fire; - sc = 1; - break; - - case hw_pcmcia_ctrl: - test_func = is_pcmcia_ctrl; - break; - - case hw_pppoe: - base_class = bc_network_interface; - break; - - case hw_partition: - base_class = bc_partition; - break; - - case hw_bluetooth: - base_class = bc_bluetooth; - break; - - case hw_wlan: - case hw_block: - case hw_tape: - case hw_vbe: - break; - - case hw_unknown: - case hw_all: - case hw_manual: /* special */ - - /* bus types */ - case hw_usb: - case hw_pci: - case hw_isapnp: - case hw_scsi: - case hw_ide: - - case hw_pcmcia: /* special */ - - case hw_ieee1394: /* not handled */ - case hw_hotplug: /* not handled */ - case hw_hotplug_ctrl: /* not handled */ - case hw_zip: /* not handled */ - case hw_redasd: - break; - } - - if(test_func) { - if(test_func(hd_data, hd)) { - hd->hw_class = item; - break; - } - } - else if( - ( - hd->base_class.id == base_class && - (sc == 0 || hd->sub_class.id == sub_class) - ) - || - ( /* list other display adapters, too */ - base_class == bc_display && - hd->base_class.id == bc_multimedia && - hd->sub_class.id == sc_multi_video - ) - || - ( /* make i2o storage controllers */ - item == hw_storage_ctrl && - hd->base_class.id == bc_i2o - ) - || - ( /* add fibre channel to storage ctrl list */ - item == hw_storage_ctrl && - hd->base_class.id == bc_serial && - hd->sub_class.id == sc_ser_fiber - ) - ) { - hd->hw_class = item; - break; - } - } - - if(!hd->hw_class) hd->hw_class = hw_unknown; - } - - hd_set_hw_class(hd, hd->hw_class); - - if(hd->bus.id == bus_usb) { - hd_set_hw_class(hd, hw_usb); - } - else if(hd->bus.id == bus_pci) { - hd_set_hw_class(hd, hw_pci); - } - else if(hd->bus.id == bus_scsi) { - hd_set_hw_class(hd, hw_scsi); - } - else if(hd->bus.id == bus_ide) { - hd_set_hw_class(hd, hw_ide); - } - else if(hd->bus.id == bus_isa && hd->is.isapnp) { - hd_set_hw_class(hd, hw_isapnp); - } - - if(hd->hw_class == hw_network && hd->is.pppoe) { - hd_set_hw_class(hd, hw_pppoe); - } - - if(hd->usb_guid) { - hd_set_hw_class(hd, hw_usb); // ###### maybe only if(hd->bus.id == bus_scsi)? - } - - if(hd->hotplug == hp_pcmcia || hd->hotplug == hp_cardbus) { - hd_set_hw_class(hd, hw_pcmcia); - } - - if(hd->is.wlan) { - hd_set_hw_class(hd, hw_wlan); - } - - if(hd_is_hw_class(hd, hw_bios)) { - hd_set_hw_class(hd, hw_vbe); - } - - if( - hd->base_class.id == bc_storage_device || - hd->base_class.id == bc_partition - ) { - hd_set_hw_class(hd, hw_block); - } - - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_tape - ) { - hd_set_hw_class(hd, hw_tape); - } - - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk - ) { - hd_set_hw_class(hd, hw_redasd); - } -} - - -void short_vendor(char *vendor) -{ - static char *remove[] = { - ".", ",", "-", "&", " inc", "corporation", " corp", " system", - " systems", "technology", "technologies", "multimedia", "communications", - "computer", " ltd", "(formerly ncr)", " group", " labs", "research", - "equipment", " ag", "personal", " canada", "data", "products", - " america", " co", " of", "solutions", " as", "publishing", "(old)", - " usa", " gmbh", "electronic", "components", "(matsushita)", " ab", - " pte", " north", " japan", "limited", "microcomputer", " kg", - "incorporated", "semiconductor", "sem", "graphics" - }; - int i, j; - int len, len1, len2; - - if(!vendor) return; - - len2 = strlen(vendor); - - if(!len2) return; - - do { - len = len2; - for(i = 0; (unsigned) i < sizeof remove / sizeof *remove; i++) { - len1 = strlen(remove[i]); - if(len > len1 && !strcasecmp(vendor + len - len1, remove[i])) { - vendor[j = len - len1] = 0; - for(j--; j >= 0; vendor[j--] = 0) { - if(!isspace(vendor[j])) break; - } - } - } - len2 = strlen(vendor); - } while(len2 != len); - -} - - -void create_model_name(hd_data_t *hd_data, hd_t *hd) -{ - char *vend, *dev; - char *compat, *dev_class, *hw_class; - char *part1, *part2; - cpu_info_t *ct; - - /* early out */ - if(!hd || hd->model) return; - - part1 = part2 = NULL; - - vend = dev = compat = dev_class = hw_class = NULL; - - if( - hd->hw_class == hw_cpu && - hd->detail && - hd->detail->type == hd_detail_cpu && - (ct = hd->detail->cpu.data) && - ct->model_name - ) { - /* cpu entry */ - - part1 = new_str(ct->model_name); - if(ct->clock) str_printf(&part1, -1, ", %u MHz", ct->clock); - } - else { - /* normal entry */ - - vend = new_str(hd->sub_vendor.name); - - dev = new_str(hd->sub_device.name); - - if(!vend) vend = new_str(hd->vendor.name); - - if(!dev) dev = new_str(hd->device.name); - - if(dev) { - if(vend) { - part1 = vend; part2 = dev; - } - else { - part1 = dev; - } - } - - if(!part1 && !part2) { - compat = new_str(hd->compat_device.name); - - dev_class = new_str(hd->sub_class.name ?: hd->base_class.name); - - hw_class = new_str(hd_hw_item_name(hd->hw_class)); - - if(vend) { - if(compat) { - part1 = vend; part2 = compat; - } - else if(dev_class) { - part1 = vend; part2 = dev_class; - } - } - else { - if( - compat && - dev_class && - hd->base_class.id != bc_internal /* avoid things like 'Notebook *System*' */ - ) { - part1 = compat; part2 = dev_class; - } - else if(compat) { - part1 = compat; - } - else if(dev_class) { - part1 = dev_class; - if(hw_class && !strchr(part1, ' ') && strchr(hw_class, ' ')) { - part2 = hw_class; - } - } - } - } - } - - if(part1 && part2) { - short_vendor(part1); - } - - if(part1 && !strcasecmp(part1, "unknown")) { - part1 = part2; - part2 = NULL; - } - - if(part1 && part2) { - /* maybe the vendor name is already part of the device name... */ - if(strstr(part2, part1) || !strcasecmp(part1, part2)) { - part1 = part2; - part2 = NULL; - } - } - - if(!part1 && !part2 && hw_class) { - str_printf(&part1, 0, "unknown %s", hw_class); - if(strchr(hw_class, ' ')) { - str_printf(&part1, -1, " hardware"); - } - } - - str_printf(&hd->model, 0, "%s%s%s", part1, part2 ? " " : "", part2 ? part2 : ""); - - free_mem(vend); - free_mem(dev); - free_mem(compat); - free_mem(dev_class); - free_mem(hw_class); -} - - -#ifndef LIBHD_TINY -int hd_change_status(const char *id, hd_status_t status, const char *config_string) -{ - hd_data_t *hd_data; - hd_manual_t *entry; - int i; - - hd_data = new_mem(sizeof *hd_data); - - entry = hd_manual_read_entry(hd_data, (char *) id); - - if(!entry || status.invalid) return 1; - - if(status.configured) entry->status.configured = status.configured; - if(status.available) entry->status.available = status.available; - if(status.needed) entry->status.needed = status.needed; - entry->status.invalid = status.invalid; - - if(config_string) { - free_mem(entry->config_string); - entry->config_string = new_str(config_string); - } - - i = hd_manual_write_entry(hd_data, entry); - - hd_free_manual(entry); - - hd_free_hd_data(hd_data); - - free_mem(hd_data); - - return i; -} - -#endif /* !defined(LIBHD_TINY) */ - - -int hd_getdisksize(hd_data_t *hd_data, char *dev, int fd, hd_res_t **geo, hd_res_t **size) -{ - int status=0; - hd_res_t *res; - struct hd_geometry geo_s; -#ifdef HDIO_GETGEO_BIG - struct hd_big_geometry big_geo_s; -#endif - unsigned long secs32; - uint64_t secs, secs0; - unsigned sec_size; - int close_fd = 0; - int got_big = 0; - - *geo = *size = NULL; - - ADD2LOG(" dev = %s, fd = %d\n", dev, fd); - - if(fd < 0) { - if(!dev) return 0; - fd = open(dev, O_RDONLY | O_NONBLOCK); - close_fd = 1; - if(fd < 0) return 0; - } - - ADD2LOG(" open ok, fd = %d\n", fd); - - secs0 = 0; - res = NULL; - -#ifdef HDIO_GETGEO_BIG - if(!ioctl(fd, HDIO_GETGEO_BIG, &big_geo_s)) { - if(dev) ADD2LOG("%s: ioctl(big geo) ok\n", dev); - res = add_res_entry(geo, new_mem(sizeof *res)); - res->disk_geo.type = res_disk_geo; - res->disk_geo.cyls = big_geo_s.cylinders; - res->disk_geo.heads = big_geo_s.heads; - res->disk_geo.sectors = big_geo_s.sectors; - res->disk_geo.geotype = geo_logical; - secs0 = (uint64_t) res->disk_geo.cyls * res->disk_geo.heads * res->disk_geo.sectors; - got_big = 1; - } - else { - ADD2LOG(" big geo failed: %s\n", strerror(errno)); -#else - { -#endif - if(!ioctl(fd, HDIO_GETGEO, &geo_s)) { - if(dev) ADD2LOG("%s: ioctl(geo) ok\n", dev); - res = add_res_entry(geo, new_mem(sizeof *res)); - res->disk_geo.type = res_disk_geo; - res->disk_geo.cyls = geo_s.cylinders; - res->disk_geo.heads = geo_s.heads; - res->disk_geo.sectors = geo_s.sectors; - res->disk_geo.geotype = geo_logical; - secs0 = (uint64_t) res->disk_geo.cyls * res->disk_geo.heads * res->disk_geo.sectors; - } - else { - ADD2LOG(" geo failed: %s\n", strerror(errno)); - } - } - - /* ##### maybe always BLKSZGET or always 0x200? */ - if(!ioctl(fd, BLKSSZGET, &sec_size)) { - if(dev) ADD2LOG("%s: ioctl(block size) ok\n", dev); - if(!sec_size) sec_size = 0x200; - } - else { - sec_size = 0x200; - } - - secs = 0; - -#if defined(__s390__) || defined(__s390x__) - if(res && res->disk_geo.sectors == 0) - { /* This seems to be an unformatted DASD -> fake the formatted geometry */ - res->disk_geo.sectors=12; - sec_size=4096; - secs = (uint64_t) res->disk_geo.cyls * res->disk_geo.heads * res->disk_geo.sectors; - status=1; - } - else - { -#endif - if(!ioctl(fd, BLKGETSIZE64, &secs)) { - if(dev) ADD2LOG("%s: ioctl(disk size) ok\n", dev); - secs /= sec_size; - } - else if(!ioctl(fd, BLKGETSIZE, &secs32)) { - if(dev) ADD2LOG("%s: ioctl(disk size32) ok\n", dev); - secs = secs32; - } - else { - secs = secs0; - } -#if defined(__s390__) || defined(__s390x__) - } -#endif - - if(!got_big && secs0 && res) { - /* fix cylinder value */ - res->disk_geo.cyls = secs / (res->disk_geo.heads * res->disk_geo.sectors); - } - - if(secs) { - res = add_res_entry(size, new_mem(sizeof *res)); - res->size.type = res_size; - res->size.unit = size_unit_sectors; - res->size.val1 = secs; - res->size.val2 = sec_size; - } - - // ADD2LOG(" geo = %p, size = %p\n", *geo, *size); - - if(close_fd) close(fd); - - return status; -} - - -str_list_t *hd_split(char del, char *str) -{ - char *t, *s; - str_list_t *sl = NULL; - - if(!str) return NULL; - - for(s = str = new_str(str); (t = strchr(s, del)); s = t + 1) { - *t = 0; - add_str_list(&sl, s); - } - add_str_list(&sl, s); - - free_mem(str); - - return sl; -} - - -char *hd_join(char *del, str_list_t *str) -{ - char *s; - str_list_t *str0; - int len = 0, del_len = 0; - - if(del) del_len = strlen(del); - - for(str0 = str; str0; str0 = str0->next) { - if(str0->str) len += strlen(str0->str); - if(str0->next) len += del_len; - } - - if(!len) return NULL; - - len++; - - s = new_mem(len); - - for(; str; str = str->next) { - if(str->str) strcat(s, str->str); - if(str->next && del) strcat(s, del); - } - - return s; -} - - -/* - * cf. pcmcia-cs-*:cardmgr/pcic_probe.c - */ -int is_pcmcia_ctrl(hd_data_t *hd_data, hd_t *hd) -{ - int i; - static unsigned ids[][2] = { - { 0x1013, 0x1100 }, - { 0x1013, 0x1110 }, - { 0x10b3, 0xb106 }, - { 0x1180, 0x0465 }, - { 0x1180, 0x0466 }, - { 0x1180, 0x0475 }, - { 0x1180, 0x0476 }, - { 0x1180, 0x0478 }, - { 0x104c, 0xac12 }, - { 0x104c, 0xac13 }, - { 0x104c, 0xac15 }, - { 0x104c, 0xac1a }, - { 0x104c, 0xac1e }, - { 0x104c, 0xac17 }, - { 0x104c, 0xac19 }, - { 0x104c, 0xac1c }, - { 0x104c, 0xac16 }, - { 0x104c, 0xac1d }, - { 0x104c, 0xac1f }, - { 0x104c, 0xac50 }, - { 0x104c, 0xac51 }, - { 0x104c, 0xac1b }, - { 0x104c, 0xac52 }, - { 0x104c, 0xac41 }, - { 0x104c, 0xac40 }, - { 0x104c, 0xac42 }, - { 0x1217, 0x6729 }, - { 0x1217, 0x673a }, - { 0x1217, 0x6832 }, - { 0x1217, 0x6836 }, - { 0x1217, 0x6872 }, - { 0x1217, 0x6925 }, - { 0x1217, 0x6933 }, - { 0x1217, 0x6972 }, - { 0x1179, 0x0603 }, - { 0x1179, 0x060a }, - { 0x1179, 0x060f }, - { 0x1179, 0x0617 }, - { 0x119b, 0x1221 }, - { 0x8086, 0x1221 } - }; - - if(!hd) return 0; - - if( - hd->base_class.id == bc_bridge && - (hd->sub_class.id == sc_bridge_pcmcia || hd->sub_class.id == sc_bridge_cardbus) - ) return 1; - - /* just in case... */ - if(hd->bus.id == bus_pci) { - for(i = 0; (unsigned) i < sizeof ids / sizeof *ids; i++) { - if( - ID_VALUE(hd->vendor.id) == ids[i][0] && - ID_VALUE(hd->device.id) == ids[i][1] - ) return 1; - } - } - - return 0; -} - -void hd_set_hw_class(hd_t *hd, hd_hw_item_t hw_class) -{ - unsigned ofs, bit; - - ofs = (unsigned) hw_class >> 3; - bit = (unsigned) hw_class & 7; - - if(ofs < sizeof hd->hw_class_list / sizeof *hd->hw_class_list) { - hd->hw_class_list[ofs] |= 1 << bit; - } -} - - -int hd_is_hw_class(hd_t *hd, hd_hw_item_t hw_class) -{ - unsigned ofs, bit; - - if(hw_class == hw_all) return 1; - - ofs = (unsigned) hw_class >> 3; - bit = (unsigned) hw_class & 7; - - if(ofs < sizeof hd->hw_class_list / sizeof *hd->hw_class_list) { - return hd->hw_class_list[ofs] & (1 << bit) ? 1 : 0; - } - - return 0; -} - - -/* - * Start subprocess for dangerous things. - * - * Stop it after total_timeout seconds or if nothing happens for - * timeout seconds. - */ -void hd_fork(hd_data_t *hd_data, int timeout, int total_timeout) -{ - void (*old_sigchld_handler)(int); - struct timespec wait_time; - int i, j, sleep_intr = 1; - hd_data_t *hd_data_shm; - time_t stop_time; - int updated, rem_time; - sigset_t new_set, old_set; - - if(hd_data->flags.forked) return; - - if(hd_data->flags.nofork) { - hd_data->flags.forked = 1; - return; - } - - hd_data_shm = hd_data->shm.data; - - stop_time = time(NULL) + total_timeout; - rem_time = total_timeout; - - child_id = child = 0; - - sigemptyset(&new_set); - sigaddset(&new_set, SIGCHLD); - sigprocmask(SIG_BLOCK, &new_set, &old_set); - - old_sigchld_handler = signal(SIGCHLD, sigchld_handler); - - wait_time.tv_sec = timeout; - wait_time.tv_nsec = 0; - - updated = hd_data_shm->shm.updated; - - child = fork(); - - sigprocmask(SIG_SETMASK, &old_set, NULL); - - if(child != -1) { - if(child) { - ADD2LOG( - "****** started child process %d (%ds/%ds) ******\n", - (int) child, timeout, total_timeout - ); - - while(child_id != child && sleep_intr) { - sleep_intr = nanosleep(&wait_time, &wait_time); -// fprintf(stderr, "woke up %d\n", sleep_intr); - rem_time = stop_time - time(NULL); - if(updated != hd_data_shm->shm.updated && rem_time >= 0) { - /* reset time if there was some progress and we've got some time left */ - rem_time++; - wait_time.tv_sec = rem_time > timeout ? timeout : rem_time; - wait_time.tv_nsec = 0; - - sleep_intr = 1; - } - updated = hd_data_shm->shm.updated; - } - - if(child_id != child) { - ADD2LOG("****** killed child process %d (%ds) ******\n", (int) child, rem_time); - kill(child, SIGKILL); - for(i = 10; i && !waitpid(child, NULL, WNOHANG); i--) { - wait_time.tv_sec = 0; - wait_time.tv_nsec = 10*1000000; - nanosleep(&wait_time, NULL); - } - } - - i = hd_data->log ? strlen(hd_data->log) : 0; - - if(hd_data_shm->log) { - j = strlen(hd_data_shm->log); - hd_data->log = resize_mem(hd_data->log, i + j + 1); - memcpy(hd_data->log + i, hd_data_shm->log, j + 1); - } - - ADD2LOG("****** stopped child process %d (%ds) ******\n", (int) child, rem_time); - } - else { -#ifdef LIBHD_MEMCHECK - /* stop logging in child process */ - if(libhd_log) fclose(libhd_log); - libhd_log = NULL; -#endif - hd_data->log = free_mem(hd_data->log); - - hd_data->flags.forked = 1; - } - } - - signal(SIGCHLD, old_sigchld_handler); -} - - -/* - * Stop subprocess. - */ -void hd_fork_done(hd_data_t *hd_data) -{ - int len; - void *p; - hd_data_t *hd_data_shm; - - if(!hd_data->flags.forked || hd_data->flags.nofork) return; - - hd_data_shm = hd_data->shm.data; - - if(hd_data->log) { - len = strlen(hd_data->log) + 1; - p = hd_shm_add(hd_data, hd_data->log, len); - hd_data_shm->log = p; - } - - _exit(0); -} - - -/* - * SIGCHLD handler while we're waiting for our child. - */ -void sigchld_handler(int num) -{ - pid_t p = waitpid(child, NULL, WNOHANG); - - if(p && p == child) child_id = p; -} - - -/* - * Get a sufficiently large shm segment. - */ -void hd_shm_init(hd_data_t *hd_data) -{ - void *p; - - if(hd_data->shm.ok || hd_data->flags.nofork) return; - - memset(&hd_data->shm, 0, sizeof hd_data->shm); - - hd_data->shm.size = 256*1024; - - hd_data->shm.id = shmget(IPC_PRIVATE, hd_data->shm.size, IPC_CREAT | 0600); - - if(hd_data->shm.id == -1) { - ADD2LOG("shm: shmget failed (errno %d)\n", errno); - return; - } - - p = shmat(hd_data->shm.id, NULL, 0); - - if(p == (void *) -1) { - ADD2LOG("shm: shmat for segment %d failed (errno %d)\n", hd_data->shm.id, errno); - } - - shmctl(hd_data->shm.id, IPC_RMID, NULL); - - if(p == (void *) -1) return; - - hd_data->shm.data = p; - - ADD2LOG("shm: attached segment %d at %p\n", hd_data->shm.id, hd_data->shm.data); - - hd_data->shm.ok = 1; - - hd_shm_clean(hd_data); -} - - -/* - * Reset shm usage, remove references to shm area. - */ -void hd_shm_clean(hd_data_t *hd_data) -{ - hd_data_t *hd_data_shm; - - if(!hd_data->shm.ok) return; - - if(hd_is_shm_ptr(hd_data, hd_data->ser_mouse)) hd_data->ser_mouse = NULL; - if(hd_is_shm_ptr(hd_data, hd_data->ser_modem)) hd_data->ser_modem = NULL; - - - hd_data->shm.used = sizeof *hd_data; - hd_data->shm.updated = 0; - - memcpy(hd_data_shm = hd_data->shm.data, hd_data, sizeof *hd_data); - - hd_data_shm->log = NULL; -} - - -/* - * Release shm segment. - */ -void hd_shm_done(hd_data_t *hd_data) -{ - if(!hd_data->shm.ok) return; - - shmdt(hd_data->shm.data); - - hd_data->shm.ok = 0; -} - - -/* - * Copy into shm area. If ptr is NULL return a shm area of size len. - */ -void *hd_shm_add(hd_data_t *hd_data, void *ptr, unsigned len) -{ - if(!hd_data->shm.ok || !len) return NULL; - - hd_data = hd_data->shm.data; - - if(hd_data->shm.size - hd_data->shm.used < len) return NULL; - - if(ptr) { - ptr = memcpy(hd_data->shm.data + hd_data->shm.used, ptr, len); - } - else { - ptr = memset(hd_data->shm.data + hd_data->shm.used, 0, len); - } - - hd_data->shm.used += len; - - return ptr; -} - - -/* - * Check if ptr points to a valid shm address. - */ -int hd_is_shm_ptr(hd_data_t *hd_data, void *ptr) -{ - if(!hd_data->shm.ok || !ptr) return 0; - - hd_data = hd_data->shm.data; - - if( - ptr < hd_data->shm.data || - ptr >= hd_data->shm.data + hd_data->shm.used - ) return 0; - - return 1; -} - - -char *hd_shm_add_str(hd_data_t *hd_data, char *str) -{ - return hd_shm_add(hd_data, str, str ? strlen(str) + 1 : 0); -} - - -str_list_t *hd_shm_add_str_list(hd_data_t *hd_data, str_list_t *sl) -{ - str_list_t *sl0 = NULL, **sl_shm; - - for(sl_shm = &sl0; sl; sl = sl->next, sl_shm = &(*sl_shm)->next) { - *sl_shm = hd_shm_add(hd_data, NULL, sizeof **sl_shm); - (*sl_shm)->str = hd_shm_add_str(hd_data, sl->str); - } - - return sl0; -} - - -void hd_move_to_shm(hd_data_t *hd_data) -{ - hd_data_t *hd_data_shm; - ser_device_t *ser, **ser_shm; - struct { - ser_device_t **src, **dst; - } ser_dev[2]; - unsigned u; - - if(!hd_data->shm.ok) return; - - hd_data_shm = hd_data->shm.data; - - ser_dev[0].src = &hd_data->ser_mouse; - ser_dev[0].dst = &hd_data_shm->ser_mouse; - ser_dev[1].src = &hd_data->ser_modem; - ser_dev[1].dst = &hd_data_shm->ser_modem; - - for(u = 0; u < sizeof ser_dev / sizeof *ser_dev; u++) { - if(*ser_dev[u].src) { - /* copy serial mouse data */ - for( - ser = *ser_dev[u].src, ser_shm = ser_dev[u].dst; - ser; - ser = ser->next, ser_shm = &(*ser_shm)->next - ) { - *ser_shm = hd_shm_add(hd_data, ser, sizeof *ser); - } - - for(ser = *ser_dev[u].dst; ser; ser = ser->next) { - ser->dev_name = hd_shm_add_str(hd_data, ser->dev_name); - ser->serial = hd_shm_add_str(hd_data, ser->serial); - ser->class_name = hd_shm_add_str(hd_data, ser->class_name); - ser->dev_id = hd_shm_add_str(hd_data, ser->dev_id); - ser->user_name = hd_shm_add_str(hd_data, ser->user_name); - ser->vend = hd_shm_add_str(hd_data, ser->vend); - ser->init_string1 = hd_shm_add_str(hd_data, ser->init_string1); - ser->init_string2 = hd_shm_add_str(hd_data, ser->init_string2); - ser->pppd_option = hd_shm_add_str(hd_data, ser->pppd_option); - - ser->at_resp = hd_shm_add_str_list(hd_data, ser->at_resp); - } - } - } - -} - - -hd_udevinfo_t *hd_free_udevinfo(hd_udevinfo_t *ui) -{ - hd_udevinfo_t *next; - - for(; ui; ui = next) { - next = ui->next; - - free_mem(ui->sysfs); - free_mem(ui->name); - free_str_list(ui->links); - - free_mem(ui); - } - - return NULL; -} - - -void read_udevinfo(hd_data_t *hd_data) -{ - str_list_t *sl, *udevinfo, *sl0, *sl1, *dir_list; - hd_udevinfo_t **uip, *ui; - char *s, buf[256]; - int l; - - udevinfo = NULL; - - if((dir_list = read_dir("/dev/.udevdb", 'r'))) { - s = NULL; - - for(sl = dir_list; sl; sl = sl->next) { - str_printf(&s, 0, "/dev/.udevdb/%s", sl->str); - sl0 = read_file(s, 0, 0); - if(sl0) { - sl1 = udevinfo; - udevinfo = sl0; - while(sl0->next) sl0 = sl0->next; - sl0->next = sl1; - } - } - - s = free_mem(s); - free_str_list(dir_list); - } - else { - udevinfo = read_file("| " PROG_UDEVINFO " -d 2>/dev/null", 0, 0); - } - - ADD2LOG("----- udevinfo -----\n"); - for(sl = udevinfo; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- udevinfo end -----\n"); - - hd_data->udevinfo = hd_free_udevinfo(hd_data->udevinfo); - - uip = &hd_data->udevinfo; - - for(ui = NULL, sl = udevinfo; sl; sl = sl->next) { - if(sscanf(sl->str, "P: %255s", buf) == 1) { - ui = *uip = new_mem(sizeof **uip); - uip = &(*uip)->next; - ui->sysfs = new_str(buf); - - continue; - } - - if(sscanf(sl->str, "T: %255s", buf) == 1) { - ui->type = *buf; - - continue; - } - - if(sscanf(sl->str, "N: %255s", buf) == 1) { - free_mem(ui->name); - ui->name = new_str(buf); - - continue; - } - - if(!strncmp(sl->str, "S:", 2)) { - s = sl->str + 2; - while(*s == ' ') s++; - l = strlen(s); - while(l > 0 && isspace(s[l-1])) s[--l] = 0; - if(*s) { - sl0 = hd_split(' ', s); - for(sl1 = sl0; sl1; sl1 = sl1->next) { - add_str_list(&ui->links, sl1->str); - } - free_str_list(sl0); - } - - continue; - } - } - - for(ui = hd_data->udevinfo; ui; ui = ui->next) { - ADD2LOG("%s\n", ui->sysfs); - if(ui->name) ADD2LOG(" name: %s\n", ui->name); - if(ui->links) { - s = hd_join(", ", ui->links); - ADD2LOG(" links: %s\n", s); - free_mem(s); - } - } - - free_str_list(udevinfo); -} - - -/* - * Return libhd version. - */ -char *hd_version() -{ - return HD_VERSION_STRING; -} - - -hd_t *hd_find_sysfs_id(hd_data_t *hd_data, char *id) -{ - hd_t *hd; - - if(id && *id) { - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->sysfs_id && !strcmp(hd->sysfs_id, id)) return hd; - } - } - - return NULL; -} - - -hd_sysfsdrv_t *hd_free_sysfsdrv(hd_sysfsdrv_t *sf) -{ - hd_sysfsdrv_t *next; - - for(; sf; sf = next) { - next = sf->next; - - free_mem(sf->driver); - free_mem(sf->device); - - free_mem(sf); - } - - return NULL; -} - - -void hd_sysfs_driver_list(hd_data_t *hd_data) -{ - char *bus; - hd_sysfsdrv_t **sfp, *sf; - str_list_t *sl, *sl0; - uint64_t id = 0; - - struct sysfs_bus *sf_bus; - struct sysfs_driver *sf_drv; - struct sysfs_device *sf_dev; - - struct dlist *sf_subsys; - struct dlist *sf_drv_list; - struct dlist *sf_dev_list; - - - for(sl = sl0 = read_file(PROC_MODULES, 0, 0); sl; sl = sl->next) { - crc64(&id, sl->str, strlen(sl->str) + 1); - } - free_str_list(sl0); - - if(id != hd_data->sysfsdrv_id) { - hd_data->sysfsdrv = hd_free_sysfsdrv(hd_data->sysfsdrv); - } - - if(hd_data->sysfsdrv) return; - - hd_data->sysfsdrv_id = id; - - sfp = &hd_data->sysfsdrv; - - ADD2LOG("----- sysfs driver list (id 0x%016"PRIx64") -----\n", id); - - sf_subsys = sysfs_open_subsystem_list("bus"); - - if(sf_subsys) dlist_for_each_data(sf_subsys, bus, char) { - sf_bus = sysfs_open_bus(bus); - - if(sf_bus) { - sf_drv_list = sysfs_get_bus_drivers(sf_bus); - if(sf_drv_list) dlist_for_each_data(sf_drv_list, sf_drv, struct sysfs_driver) { - sf_dev_list = sysfs_get_driver_devices(sf_drv); - if(sf_dev_list) dlist_for_each_data(sf_dev_list, sf_dev, struct sysfs_device) { - sf = *sfp = new_mem(sizeof **sfp); - sfp = &(*sfp)->next; - sf->driver = new_str(sf_drv->name); - sf->device = new_str(hd_sysfs_id(sf_dev->path)); - ADD2LOG("%16s: %s\n", sf->driver, sf->device); - } - } - - sysfs_close_bus(sf_bus); - } - } - - sysfs_close_list(sf_subsys); - - ADD2LOG("----- sysfs driver list end -----\n"); -} - - -int hd_report_this(hd_data_t *hd_data, hd_t *hd) -{ - if(!hd_data->only) return 1; - - if(search_str_list(hd_data->only, hd->sysfs_id)) return 1; - - return search_str_list(hd_data->only, hd->unix_dev_name) ? 1 : 0; -} - - -str_list_t *hd_module_list(hd_data_t *hd_data, unsigned id) -{ - hd_t *hd; - str_list_t *drivers = NULL, *sl; - driver_info_t *di; - - hd = new_mem(sizeof *hd); - hd->tag.freeit = 1; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0xf000); - hd->device.id = MAKE_ID(TAG_SPECIAL, id); - - hddb_add_info(hd_data, hd); - - for(di = hd->driver_info; di; di = di->next) { - if(di->any.type == di_module && di->module.modprobe) { - for(sl = di->module.names; sl; sl = sl->next) { - add_str_list(&drivers, sl->str); - } - } - } - - hd_free_hd_list(hd); - - return drivers; -} - - -/* - * Read using mmap(). - */ -int hd_read_mmap(hd_data_t *hd_data, char *name, unsigned char *buf, off_t start, unsigned size) -{ - off_t map_start, xofs; - int psize = getpagesize(), fd; - unsigned map_size; - void *p; - struct stat sbuf; - - if(!size || !name) return 0; - - memset(buf, 0, size); - - map_start = start & -psize; - xofs = start - map_start; - - map_size = (xofs + size + psize - 1) & -psize; - - fd = open(name, O_RDONLY); - - if(fd == -1) return 0; - - if(!fstat(fd, &sbuf) && S_ISREG(sbuf.st_mode)) { - if(sbuf.st_size < start + size) { - if(sbuf.st_size > start) { - size = sbuf.st_size - start; - } - else { - size = 0; - } - } - } - - if(!size) { - close(fd); - return 0; - } - - p = mmap(NULL, map_size, PROT_READ, MAP_PRIVATE, fd, map_start); - - if(p == MAP_FAILED) { - if(hd_data) ADD2LOG( - "%s[0x%x, %u]: mmap(, %u,,,, 0x%x) failed: %s\n", - name, (unsigned) start, size, map_size, (unsigned) map_start, strerror(errno) - ); - close(fd); - return 0; - } - if(hd_data) ADD2LOG( - "%s[0x%x, %u]: mmap(, %u,,,, 0x%x) ok\n", - name, (unsigned) start, size, map_size, (unsigned) map_start - ); - - memcpy(buf, p + xofs, size); - - munmap(p, map_size); - - close(fd); - - return 1; -} - - diff --git a/src/hwinfo/src/hd/hd.h b/src/hwinfo/src/hd/hd.h deleted file mode 100644 index 2e61cce2ba..0000000000 --- a/src/hwinfo/src/hd/hd.h +++ /dev/null @@ -1,2488 +0,0 @@ -#ifndef _HD_H -#define _HD_H - -#ifdef __cplusplus -extern "C" { -#endif - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * - * libhd data structures - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#define HD_VERSION 10 - -/* - * debug flags - */ -#define HD_DEB_SHOW_LOG (1 << 0) -#define HD_DEB_PROGRESS (1 << 1) -#define HD_DEB_CREATION (1 << 2) -#define HD_DEB_DRIVER_INFO (1 << 3) -#define HD_DEB_PCI (1 << 4) -#define HD_DEB_ISAPNP (1 << 5) -#define HD_DEB_CDROM (1 << 6) -#define HD_DEB_NET (1 << 7) -#define HD_DEB_FLOPPY (1 << 8) -#define HD_DEB_MISC (1 << 9) -#define HD_DEB_SERIAL (1 << 10) -#define HD_DEB_MONITOR (1 << 11) -#define HD_DEB_CPU (1 << 12) -#define HD_DEB_BIOS (1 << 13) -#define HD_DEB_MOUSE (1 << 14) -#define HD_DEB_IDE (1 << 15) -#define HD_DEB_SCSI (1 << 16) -#define HD_DEB_USB (1 << 17) -#define HD_DEB_ADB (1 << 18) -#define HD_DEB_MODEM (1 << 19) -#define HD_DEB_PARALLEL (1 << 20) -#define HD_DEB_ISA (1 << 21) -#define HD_DEB_BOOT (1 << 22) -#define HD_DEB_HDDB (1 << 23) - -#include -#include -#include -#include - -/* - * libhd's directory - */ -#define HARDWARE_DIR "/var/lib/hardware" -#define HARDWARE_UNIQUE_KEYS HARDWARE_DIR "/unique-keys" - -/** - * \defgroup idmacros Id macros - * Macros to handle device and vendor ids. - * - * Example: to check if an id is a pci id and get its value, - * do something like this: - * \code - * if(ID_TAG(hd->dev) == TAG_PCI) { - * pci_id = ID_VALUE(hd->dev) - * } - * \endcode - *@{ - */ - -#define TAG_PCI 1 /**< PCI ids. */ -#define TAG_EISA 2 /**< EISA ids (monitors, ISA-PnP, modems, mice etc). */ -#define TAG_USB 3 /**< USB ids. */ -#define TAG_SPECIAL 4 /**< Internally used ids. */ -#define TAG_PCMCIA 5 /**< PCMCIA ids. */ - -/** - * Get the real id value. - */ -#define ID_VALUE(id) ((id) & 0xffff) - -/** - * Get the tag value. - */ -#define ID_TAG(id) (((id) >> 16) & 0xf) - -/** - * Combine tag and id value. - */ -#define MAKE_ID(tag, id_val) ((tag << 16) | (id_val)) - -/*@}*/ - -/* - * flags to control the probing. - */ -typedef enum probe_feature { - pr_memory = 1, pr_pci, pr_isapnp, pr_net, pr_floppy, pr_misc, - pr_misc_serial, pr_misc_par, pr_misc_floppy, pr_serial, pr_cpu, pr_bios, - pr_monitor, pr_mouse, pr_scsi, pr_usb, pr_usb_mods, pr_adb, pr_modem, - pr_modem_usb, pr_parallel, pr_parallel_lp, pr_parallel_zip, pr_isa, - pr_isa_isdn, pr_isdn, pr_kbd, pr_prom, pr_sbus, pr_int, pr_braille, - pr_braille_alva, pr_braille_fhp, pr_braille_ht, pr_ignx11, pr_sys, - pr_bios_vbe, pr_isapnp_old, pr_isapnp_new, pr_isapnp_mod, pr_braille_baum, - pr_manual, pr_fb, pr_veth, pr_pppoe, pr_scan, pr_pcmcia, pr_fork, - pr_parallel_imm, pr_s390, pr_cpuemu, pr_sysfs, pr_s390disks, pr_udev, - pr_block, pr_block_cdrom, pr_block_part, pr_edd, pr_edd_mod, pr_bios_ddc, - pr_bios_fb, pr_bios_mode, pr_input, pr_block_mods, pr_bios_vesa, - pr_cpuemu_debug, pr_scsi_noserial, pr_wlan, - pr_max, pr_lxrc, pr_dsl, pr_default, pr_all /* pr_all must be last */ -} hd_probe_feature_t; - -/* - * list types for hd_list() - * - * if you want to modify this: cf. manual.c::hw_items[] - * - * Note: hw_tv _must_ be < hw_display! - */ -typedef enum hw_item { - hw_sys = 1, hw_cpu, hw_keyboard, hw_braille, hw_mouse, hw_joystick, - hw_printer, hw_scanner, hw_chipcard, hw_monitor, hw_tv, hw_display, - hw_framebuffer, hw_camera, hw_sound, hw_storage_ctrl, hw_network_ctrl, - hw_isdn, hw_modem, hw_network, hw_disk, hw_partition, hw_cdrom, hw_floppy, - hw_manual, hw_usb_ctrl, hw_usb, hw_bios, hw_pci, hw_isapnp, hw_bridge, - hw_hub, hw_scsi, hw_ide, hw_memory, hw_dvb, hw_pcmcia, hw_pcmcia_ctrl, - hw_ieee1394, hw_ieee1394_ctrl, hw_hotplug, hw_hotplug_ctrl, hw_zip, hw_pppoe, - hw_wlan, hw_redasd, hw_dsl, hw_block, hw_tape, hw_vbe, hw_bluetooth, - /* append new entries here */ - hw_unknown, hw_all /* hw_all must be last */ -} hd_hw_item_t; - -/* - * device base classes and bus types - * - */ - -/* base class values (superset of PCI classes) */ -typedef enum base_classes { - /* these *must* match standard PCI class numbers */ - bc_none, bc_storage, bc_network, bc_display, bc_multimedia, - bc_memory, bc_bridge, bc_comm, bc_system, bc_input, bc_docking, - bc_processor, bc_serial, bc_wireless, bc_i2o, bc_other = 0xff, - - // add our own classes here (starting at 0x100 as PCI values are 8 bit) - bc_monitor = 0x100, bc_internal, bc_modem, bc_isdn, bc_ps2, bc_mouse, - bc_storage_device, bc_network_interface, bc_keyboard, bc_printer, - bc_hub, bc_braille, bc_scanner, bc_joystick, bc_chipcard, bc_camera, - bc_framebuffer, bc_dvb, bc_tv, bc_partition, bc_dsl, bc_bluetooth -} hd_base_classes_t; - -/* subclass values of bc_monitor */ -typedef enum sc_monitor { - sc_mon_other, sc_mon_crt, sc_mon_lcd -} hd_sc_monitor_t; - -/* subclass values of bc_storage */ -typedef enum sc_storage { - sc_sto_scsi, sc_sto_ide, sc_sto_floppy, sc_sto_ipi, sc_sto_raid, - sc_sto_other = 0x80 -} hd_sc_storage_t; - -/* subclass values of bc_display */ -typedef enum sc_display { - sc_dis_vga, sc_dis_xga, sc_dis_other = 0x80 -} hd_sc_display_t; - -/* subclass values of bc_framebuffer */ -typedef enum sc_framebuffer { - sc_fb_vesa = 1 -} hd_sc_framebuffer_t; - -/* subclass values of bc_bridge */ -typedef enum sc_bridge { - sc_bridge_host, sc_bridge_isa, sc_bridge_eisa, sc_bridge_mc, - sc_bridge_pci, sc_bridge_pcmcia, sc_bridge_nubus, sc_bridge_cardbus, - sc_bridge_other = 0x80 -} hd_sc_bridge_t; - -/* subclass values of bc_comm */ -typedef enum sc_comm { - sc_com_ser, sc_com_par, sc_com_multi, sc_com_modem, sc_com_other = 0x80 -} hd_sc_comm_t; - -/* subclass values of bc_system */ -typedef enum sc_system { - sc_sys_pic, sc_sys_dma, sc_sys_timer, sc_sys_rtc, sc_sys_other = 0x80 -} hd_sc_system_t; - -/* subclass values of bc_input */ -typedef enum sc_input { - sc_inp_keyb, sc_inp_digit, sc_inp_mouse, sc_inp_other = 0x80 -} hd_sc_input_t; - -/* subclass values of bc_serial */ -typedef enum sc_serial { - sc_ser_fire, sc_ser_access, sc_ser_ssa, sc_ser_usb, sc_ser_fiber, - sc_ser_smbus, sc_ser_other = 0x80 -} hd_sc_serial_t; - -/* internal sub class values (bc_internal) */ -typedef enum sc_internal { - sc_int_none, sc_int_isapnp_if, sc_int_main_mem, sc_int_cpu, sc_int_fpu, - sc_int_bios, sc_int_prom, sc_int_sys -} hd_sc_internal_t; - -/* subclass values of bc_mouse */ -typedef enum sc_mouse { - sc_mou_ps2, sc_mou_ser, sc_mou_bus, sc_mou_usb, sc_mou_sun, - sc_mou_other = 0x80 -} hd_sc_mouse_t; - -/* subclass values of bc_storage_device */ -typedef enum sc_std { - sc_sdev_disk, sc_sdev_tape, sc_sdev_cdrom, sc_sdev_floppy, sc_sdev_scanner, - sc_sdev_other = 0x80 -} hd_sc_std_t; - -/* subclass values of bc_network_interface */ -typedef enum sc_net_if { - sc_nif_loopback, sc_nif_ethernet, sc_nif_tokenring, sc_nif_fddi, - sc_nif_ctc, sc_nif_iucv, sc_nif_hsi, sc_nif_qeth, - sc_nif_escon, sc_nif_myrinet, sc_nif_wlan, sc_nif_xp, - sc_nif_usb, sc_nif_other = 0x80, sc_nif_sit -} hd_sc_net_if_t; - -/* subclass values of bc_multimedia */ -typedef enum sc_multimedia { - sc_multi_video, sc_multi_audio, sc_multi_other -} hd_sc_multimedia_t; - -/* subclass values of bc_keyboard */ -typedef enum sc_keyboard { - sc_keyboard_kbd, sc_keyboard_console -} hd_sc_keyboard_t; - -/* subclass values of bc_hub */ -typedef enum sc_hub { - sc_hub_other, sc_hub_usb -} hd_sc_hub_t; - -/* subclass values of bc_camera */ -typedef enum sc_camera { - sc_camera_webcam, sc_camera_digital -} hd_sc_camera_t; - -/* subclass values of bc_modem */ -typedef enum sc_modem { - sc_mod_at, sc_mod_win1, sc_mod_win2, sc_mod_win3, sc_mod_win4 -} hd_sc_modem_t; - -/* subclass values of bc_dsl */ -typedef enum sc_dsl { - sc_dsl_unknown, sc_dsl_pppoe, sc_dsl_capi, sc_dsl_capiisdn -} hd_sc_dsl_t; - -/* prog_if's of sc_ser_usb */ -typedef enum pif_usb_e { - pif_usb_uhci = 0, pif_usb_ohci = 0x10, pif_usb_ehci = 0x20, - pif_usb_other = 0x80, pif_usb_device = 0xfe -} hd_pif_usb_t; - -/* CD-ROM prog_if values */ -typedef enum pif_cdrom { - pif_cdrom, pif_cdr, pif_cdrw, pif_dvd, pif_dvdr, pif_dvdram -} hd_pif_cdrom_t ; - -/* S/390 disk prog_if values */ -typedef enum pif_s390disk { - pif_scsi, pif_dasd, pif_dasd_fba -} hd_pif_s390disk_t; - -/* bus type values similar to PCI bridge subclasses */ -typedef enum bus_types { - bus_none, bus_isa, bus_eisa, bus_mc, bus_pci, bus_pcmcia, bus_nubus, - bus_cardbus, bus_other, - - /* outside the range of the PCI values */ - bus_ps2 = 0x80, bus_serial, bus_parallel, bus_floppy, bus_scsi, bus_ide, bus_usb, - bus_adb, bus_raid, bus_sbus, bus_i2o, bus_vio, bus_ccw, bus_iucv -} hd_bus_types_t; - -/** - * Hardware status. - * The status is stored in /var/lib/hardware/unique-keys/ and used - * to detect if the hardware is new and has to be configured by some - * hardware %config tool. - */ -typedef struct { - /** - * Status fields are invalid. - */ - unsigned invalid:1; - /** - * Hardware should be reconfigured. - * Either \ref hd_status_t::status_yes or \ref hd_status_t::status_no. - * A hardware must be reconfigured if it is in state - * \ref hd_status_t::available == \ref hd_status_t::status_no and - * \ref hd_status_t::needed == \ref hd_status_t::status_yes. - * In other words, if a hardware that was - * needed to run the system is gone. - */ - unsigned reconfig:3; - - /** - * Hardware %config status. - * Set to \ref hd_status_t::status_yes if the hardware has been configured, otherwise - * \ref hd_status_t::status_no. - */ - unsigned configured:3; - - /** - * Hardware availability. - * Set to \ref hd_status_t::status_yes if the hardware has been detected or - * \ref hd_status_t::status_no if the hardware has not been found. You can set - * it to \ref hd_status_t::status_unknown to indicate that this hardware cannot - * be automatically detected (say, ISA cards). - * \note You can simulate all kinds of hardware on your system by - * creating entries in /var/lib/hardware/unique-keys/ that have - * \ref hd_status_t::available set to \ref hd_status_t::status_unknown. - */ - unsigned available:3; - - /** - * Hardware is needed. - * Set to \ref hd_status_t::status_yes if this hardware is really necessary to run - * your computer. The effect will be that some hardware %config dialog - * is run if the hardware item is not found. - * Typical examples are graphics cards and mice. - */ - unsigned needed:3; - - /** - * (Internal) original value of \ref available; - * This is used to keep track of the original value of the \ref hd_status_t::available - * state as it was stored in /var/lib/hardware/unique-keys/. (\ref hd_status_t::available - * is automatically updated during the detection process.) - */ - unsigned available_orig:3; - - /** - * Hardware is active. - */ - unsigned active:3; -} hd_status_t; - -/* hardware config status values */ -typedef enum { - status_no = 1, status_yes, status_unknown, status_new -} hd_status_value_t; - -/** - * Various types of hotplug devices. - */ -typedef enum { - hp_none, /**< Not a hotpluggable %device. */ - hp_pcmcia, /**< PCMCIA %device. */ - hp_cardbus, /**< Cardbus %device. */ - hp_pci, /**< PCI hotplug %device. */ - hp_usb, /**< USB %device. */ - hp_ieee1394 /**< IEEE 1394 (FireWire) %device */ -} hd_hotplug_t; - - -/** - * Holds id/name pairs. - * Used for bus, class, vendor, %device and such. - */ -typedef struct { - unsigned id; /**< Numeric id. */ - char *name; /**< Name (if any) that corresponds to \ref hd_id_t::id. */ -} hd_id_t; - -/** - * String list type. - * Used whenever we create a list of strings (e.g. file read). - */ -typedef struct s_str_list_t { - struct s_str_list_t *next; /**< Link to next member. */ - char *str; /**< Some string data. */ -} str_list_t; - - -typedef struct { - unsigned char bitmap[16]; /* large enough for all uses */ - unsigned bits; /* real bitmap length in bits */ - unsigned not_empty:1; /* at least 1 bit is set */ - str_list_t *str; /* interpreted bitmask */ -} hd_bitmap_t; - - -/* - * for memory areas - */ -typedef struct { - unsigned start, size; /* base address & size */ - unsigned char *data; /* actual data */ -} memory_range_t; - - -/* - * smp info according to Intel smp spec (ia32) - */ -typedef struct { - unsigned ok:1; /* data are valid */ - unsigned rev; /* MP spec revision */ - unsigned mpfp; /* MP Floating Pointer struct */ - unsigned mpconfig_ok:1; /* MP config table valid */ - unsigned mpconfig; /* MP config table */ - unsigned mpconfig_size; /* dto, size */ - unsigned char feature[5]; /* MP feature info */ - char oem_id[9]; /* oem id */ - char prod_id[13]; /* product id */ - unsigned cpus, cpus_en; /* number of cpus & ennabled cpus */ -} smp_info_t; - - -/* - * vesa bios extensions info - */ -typedef struct vbe_mode_info_s { - unsigned number; /* mode number */ - unsigned attributes; /* mode attributes */ - unsigned width, height; /* mode size */ - unsigned bytes_p_line; /* line length */ - unsigned pixel_size; /* bits per pixel */ - unsigned fb_start; /* frame buffer start address (if any) */ - unsigned win_A_start; /* window A start address */ - unsigned win_A_attr; /* window A attributes */ - unsigned win_B_start; /* window B start address */ - unsigned win_B_attr; /* window B attributes */ - unsigned win_size; /* window size in bytes */ - unsigned win_gran; /* window granularity in bytes */ - unsigned pixel_clock; /* maximum pixel clock */ -} vbe_mode_info_t; - - -typedef struct { - unsigned ok:1; /* data are valid */ - unsigned version; /* vbe version */ - unsigned oem_version; /* oem version info */ - unsigned memory; /* in bytes */ - unsigned fb_start; /* != 0 if framebuffer is supported */ - char *oem_name; /* oem name */ - char *vendor_name; /* vendor name */ - char *product_name; /* product name */ - char *product_revision; /* product revision */ - unsigned modes; /* number of supported video modes */ - vbe_mode_info_t *mode; /* video mode list */ - unsigned current_mode; /* current video mode */ - unsigned char ddc[0x80]; /* ddc monitor info */ -} vbe_info_t; - - -/* - * Compaq Controller Order EV (CQHORD) definition - */ -typedef struct { - unsigned id; - unsigned char slot; - unsigned char bus; - unsigned char devfn; - unsigned char misc; -} cpq_ctlorder_t; - - -typedef struct { - unsigned ok:1; /* data are valid */ - unsigned entry; /* entry point */ - unsigned compaq:1; /* is compaq system */ - cpq_ctlorder_t cpq_ctrl[32]; /* 32 == MAX_CONTROLLERS */ -} bios32_info_t; - - -/* - * smbios entries - */ -typedef enum { - sm_biosinfo, sm_sysinfo, sm_boardinfo, sm_chassis, - sm_processor, sm_memctrl, sm_memmodule, sm_cache, - sm_connect, sm_slot, sm_onboard, sm_oem, - sm_config, sm_lang, sm_group, sm_eventlog, - sm_memarray, sm_memdevice, sm_memerror, sm_memarraymap, - sm_memdevicemap, sm_mouse, sm_battery, sm_reset, - sm_secure, sm_power, sm_voltage, sm_cool, - sm_temperature, sm_current, sm_outofband, sm_bis, - sm_boot, sm_mem64error, sm_mandev, sm_mandevcomp, - sm_mdtd, sm_inactive = 126, sm_end = 127 -} hd_smbios_type_t; - - -/* common part of all smbios_* types */ -typedef struct { - union u_hd_smbios_t *next; /* link to next entry */ - hd_smbios_type_t type; /* BIOS info type */ - int data_len; /* formatted section length */ - unsigned char *data; /* formatted section */ - str_list_t *strings; /* strings taken from the unformed section */ - int handle; /* handle, unique 16 bit number */ -} smbios_any_t; - - -/* BIOS related information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - char *vendor; /* vendor name */ - char *version; /* version (free form) */ - char *date; /* date mm/dd/yyyy (old: yy) */ - hd_bitmap_t feature; /* BIOS characteristics */ - unsigned start; /* start address */ - unsigned rom_size; /* ROM size (in bytes) */ -} smbios_biosinfo_t; - - -/* overall system related information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - char *manuf; /* manufacturer */ - char *product; /* product name */ - char *version; /* version */ - char *serial; /* serial number */ - unsigned char uuid[16]; /* universal unique id; all 0x00: undef, all 0xff: undef but settable */ - hd_id_t wake_up; /* wake-up type */ -} smbios_sysinfo_t; - - -/* motherboard related information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - char *manuf; /* manufacturer */ - char *product; /* product name */ - char *version; /* version */ - char *serial; /* serial number */ - char *asset; /* asset tag */ - hd_id_t board_type; /* board type */ - hd_bitmap_t feature; /* board features */ - char *location; /* location in chassis */ - int chassis; /* handle of chassis */ - int objects_len; /* number of contained objects */ - int *objects; /* array of object handles */ -} smbios_boardinfo_t; - - -/* chassis information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - char *manuf; /* manufacturer */ - char *version; /* version */ - char *serial; /* serial number */ - char *asset; /* asset tag */ - hd_id_t ch_type; /* chassis type */ - unsigned lock; /* 1: lock present, 0: not present or unknown */ - hd_id_t bootup; /* bootup state */ - hd_id_t power; /* power supply state (at last boot) */ - hd_id_t thermal; /* thermal state (at last boot) */ - hd_id_t security; /* security state (at last boot) */ - unsigned oem; /* OEM-specific information */ -} smbios_chassis_t; - - -/* processor information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - char *socket; /* socket */ - hd_id_t upgrade; /* socket type */ - char *manuf; /* manufacturer */ - char *version; /* version */ - char *serial; /* serial number */ - char *asset; /* asset tag */ - char *part; /* part number */ - hd_id_t pr_type; /* processor type */ - hd_id_t family; /* processor family */ - uint64_t cpu_id; /* processor id */ - unsigned voltage; /* in 0.1 V */ - unsigned ext_clock; /* MHz */ - unsigned max_speed; /* MHz */ - unsigned current_speed; /* MHz */ - unsigned sock_status; /* socket status (1: populated, 0: empty */ - hd_id_t cpu_status; /* cpu status */ - int l1_cache; /* handle of L1 cache */ - int l2_cache; /* handle of L2 cache */ - int l3_cache; /* handle of L3 cache */ -} smbios_processor_t; - - -/* cache information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - char *socket; /* socket designation */ - unsigned max_size; /* max cache size in kbytes */ - unsigned current_size; /* current size in kbytes */ - unsigned speed; /* cache speed in nanoseconds */ - hd_id_t mode; /* operational mode */ - unsigned state; /* 0/1: disabled/enabled */ - hd_id_t location; /* cache location */ - unsigned socketed; /* 0/1: not socketed/socketed */ - unsigned level; /* cache level (0 = L1, 1 = L2, ...) */ - hd_id_t ecc; /* error correction type */ - hd_id_t cache_type; /* logical cache type */ - hd_id_t assoc; /* cache associativity */ - hd_bitmap_t supp_sram; /* supported SRAM types */ - hd_bitmap_t sram; /* current SRAM type */ -} smbios_cache_t; - - -/* port connector information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - hd_id_t port_type; /* port type */ - char *i_des; /* internal reference designator */ - hd_id_t i_type; /* internal connector type */ - char *x_des; /* external reference designator */ - hd_id_t x_type; /* external connector type */ -} smbios_connect_t; - - -/* system slot information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - char *desig; /* slot designation */ - hd_id_t slot_type; /* slot type */ - hd_id_t bus_width; /* data bus width */ - hd_id_t usage; /* current usage */ - hd_id_t length; /* slot length */ - unsigned id; /* slot id */ - hd_bitmap_t feature; /* slot characteristics */ -} smbios_slot_t; - - -/* on board devices information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - unsigned dev_len; /* device list length */ - struct { - char *name; /* device name */ - hd_id_t type; /* device type */ - unsigned status; /* 0: disabled, 1: enabled */ - } *dev; /* device list */ -} smbios_onboard_t; - - -/* OEM information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - str_list_t *oem_strings; /* OEM strings */ -} smbios_oem_t; - - -/* system config options */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - str_list_t *options; /* system config options */ -} smbios_config_t; - - -/* language information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; /* list of languages */ - int handle; - char *current; /* current language */ -} smbios_lang_t; - - -/* group associations */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - char *name; /* group name */ - int items_len; /* number of items in this group */ - int *item_handles; /* array of item handles */ -} smbios_group_t; - - -/* physical memory array (consists of several memory devices) */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - hd_id_t location; /* memory device location */ - hd_id_t use; /* memory usage */ - hd_id_t ecc; /* ECC types */ - unsigned max_size; /* maximum memory size in kB */ - int error_handle; /* points to error info record; 0xfffe: not supported, 0xffff: no error */ - unsigned slots; /* slots or sockets for this device */ -} smbios_memarray_t; - - -/* memory device */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - char *location; /* device location */ - char *bank; /* bank location */ - char *manuf; /* manufacturer */ - char *serial; /* serial number */ - char *asset; /* asset tag */ - char *part; /* part number */ - int array_handle; /* memory array this device belongs to */ - int error_handle; /* points to error info record; 0xfffe: not supported, 0xffff: no error */ - unsigned width; /* data width in bits */ - unsigned eccbits; /* ecc bits */ - unsigned size; /* kB */ - hd_id_t form; /* form factor */ - unsigned set; /* 0: does not belong to a set; 1-0xfe: set number; 0xff: unknown */ - hd_id_t mem_type; /* memory type */ - hd_bitmap_t type_detail; /* memory type details */ - unsigned speed; /* in MHz */ -} smbios_memdevice_t; - - -/* 32-bit memory error information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - hd_id_t err_type; /* error type memory */ - hd_id_t granularity; /* memory array or memory partition */ - hd_id_t operation; /* mem operation causing the error */ - unsigned syndrome; /* vendor-specific ECC syndrome; 0: unknown */ - unsigned array_addr; /* fault address rel. to mem array; 0x80000000: unknown */ - unsigned device_addr; /* fault address rel to mem device; 0x80000000: unknown */ - unsigned range; /* range, within which the error can be determined; 0x80000000: unknown */ -} smbios_memerror_t; - - -/* memory array mapped address */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - int array_handle; /* memory array this mapping belongs to */ - uint64_t start_addr; /* memory range start address */ - uint64_t end_addr; /* end address */ - unsigned part_width; /* number of memory devices */ -} smbios_memarraymap_t; - - -/* memory device mapped address */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - int memdevice_handle; /* memory device handle */ - int arraymap_handle; /* memory array mapping handle */ - uint64_t start_addr; /* memory range start address */ - uint64_t end_addr; /* end address */ - unsigned row_pos; /* position of the referenced memory device in a row of the address partition */ - unsigned interleave_pos; /* dto, in an interleave */ - unsigned interleave_depth; /* number of consecutive rows */ -} smbios_memdevicemap_t; - - -/* pointing device (aka 'mouse') information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - hd_id_t mtype; /* mouse type */ - hd_id_t interface; /* interface type */ - unsigned buttons; /* number of buttons */ -} smbios_mouse_t; - - -/* hardware security */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - hd_id_t power; /* power-on password status */ - hd_id_t keyboard; /* keyboard password status */ - hd_id_t admin; /* admin password status */ - hd_id_t reset; /* front panel reset status */ -} smbios_secure_t; - - -/* system power controls */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - unsigned month; /* next scheduled power-on month */ - unsigned day; /* dto, day */ - unsigned hour; /* dto, hour */ - unsigned minute; /* dto, minute */ - unsigned second; /* dto, second */ -} smbios_power_t; - - -/* 64-bit memory error information */ -typedef struct { - union u_hd_smbios_t *next; - hd_smbios_type_t type; - int data_len; - unsigned char *data; - str_list_t *strings; - int handle; - hd_id_t err_type; /* error type memory */ - hd_id_t granularity; /* memory array or memory partition */ - hd_id_t operation; /* mem operation causing the error */ - unsigned syndrome; /* vendor-specific ECC syndrome; 0: unknown */ - uint64_t array_addr; /* fault address rel. to mem array; 0x80000000: unknown */ - uint64_t device_addr; /* fault address rel to mem device; 0x80000000: unknown */ - unsigned range; /* range, within which the error can be determined; 0x80000000: unknown */ -} smbios_mem64error_t; - - -typedef union u_hd_smbios_t { - union u_hd_smbios_t *next; - smbios_any_t any; - smbios_biosinfo_t biosinfo; - smbios_sysinfo_t sysinfo; - smbios_boardinfo_t boardinfo; - smbios_chassis_t chassis; - smbios_processor_t processor; - smbios_cache_t cache; - smbios_connect_t connect; - smbios_slot_t slot; - smbios_onboard_t onboard; - smbios_oem_t oem; - smbios_config_t config; - smbios_lang_t lang; - smbios_group_t group; - smbios_memarray_t memarray; - smbios_memdevice_t memdevice; - smbios_memerror_t memerror; - smbios_memarraymap_t memarraymap; - smbios_memdevicemap_t memdevicemap; - smbios_mouse_t mouse; - smbios_secure_t secure; - smbios_power_t power; - smbios_mem64error_t mem64error; -} hd_smbios_t; - - -/* - * udev database info - */ -typedef struct s_udevinfo_t { - struct s_udevinfo_t *next; - char *sysfs; - char *name; - str_list_t *links; - int type; -} hd_udevinfo_t; - - -/* - * sysfs driver info - */ -typedef struct s_sysfsdrv_t { - struct s_sysfsdrv_t *next; - char *driver; - char *device; -} hd_sysfsdrv_t; - - -/* - * device number; type is either 0 or 'b' or 'c'. - * - * range: number of nodes - */ -typedef struct { - int type; - unsigned major, minor, range; -} hd_dev_num_t; - - -/* - * structure holding the (raw) PCI data - */ -typedef struct s_pci_t { - struct s_pci_t *next; /* linked list */ - unsigned data_len; /* the actual length of the data field */ - unsigned data_ext_len; /* max. accessed config byte; see code */ - unsigned char data[256]; /* the PCI data */ - char *log; /* log messages */ - unsigned flags, /* various info, see enum pci_flags */ - cmd, /* PCI_COMMAND */ - hdr_type, /* PCI_HEADER_TYPE */ - secondary_bus; /* > 0 for PCI & CB bridges */ - unsigned bus, /* PCI bus #, *nothing* to do with hw_t.bus */ - slot, func; /* slot & function */ - unsigned base_class, sub_class, prog_if; /* PCI device classes */ - unsigned dev, vend, sub_dev, sub_vend, rev; /* vendor & device ids */ - unsigned irq; /* used irq, if any */ - uint64_t base_addr[7]; /* I/O or memory base */ - uint64_t base_len[7]; /* I/O or memory ranges */ - unsigned addr_flags[7]; /* I/O or memory address flags */ - uint64_t rom_base_addr; /* memory base for card ROM */ - uint64_t rom_base_len; /* memory range for card ROM */ - char *sysfs_id; /* sysfs path */ - char *sysfs_bus_id; /* sysfs bus id */ -} pci_t; - -/* - * pci related flags cf. (pci_t).flags - */ -typedef enum pci_flags { - pci_flag_ok, pci_flag_pm, pci_flag_agp -} hd_pci_flags_t; - - -/* - * raw USB data - */ -typedef struct usb_s { - struct usb_s *next; - unsigned hd_idx; - unsigned hd_base_idx; - /* see Linux USB docs */ - str_list_t *c, *d, *e, *i, *p, *s, *t; - struct usb_s *cloned; - int bus, dev_nr, lev, parent, port, count, conns, used_conns, ifdescr; - unsigned speed; - unsigned vendor, device, rev; - char *manufact, *product, *serial; - char *driver; - memory_range_t raw_descr; - int d_cls, d_sub, d_prot; - int i_alt, i_cls, i_sub, i_prot; - unsigned country; -} usb_t; - -/* - *structures to hold the (raw) ISA-PnP data - */ -typedef struct { - int len; - int type; - unsigned char *data; -} isapnp_res_t; - -typedef struct { - int csn; - int log_devs; - unsigned char *serial; - unsigned char *card_regs; - unsigned char (*ldev_regs)[0xd0]; - int res_len; - unsigned broken:1; /* mark a broken card */ - isapnp_res_t *res; -} isapnp_card_t; - -typedef struct { - int read_port; - int cards; - isapnp_card_t *card; -} isapnp_t; - -typedef struct { - isapnp_card_t *card; - int dev; - unsigned flags; /* cf. enum isapnp_flags */ - unsigned ref:1; /* internally used flag */ -} isapnp_dev_t; - -/* - * ISA-PnP related flags; cf. (isapnp_dev_t).flags - */ -typedef enum isapnp_flags { - isapnp_flag_act -} hd_isapnp_flags_t; - - -/* - * raw SCSI data - */ -typedef struct scsi_s { - struct scsi_s *next; - unsigned deleted:1; - unsigned generic:1; - unsigned fake:1; - char *dev_name; - char *guessed_dev_name; - int generic_dev; - unsigned host, channel, id, lun; - char *vendor, *model, *rev, *type_str, *serial; - int type; - unsigned inode_low; - char *proc_dir, *driver; - unsigned unique; - char *info; - unsigned lgeo_c, lgeo_h, lgeo_s; - unsigned pgeo_c, pgeo_h, pgeo_s; - uint64_t size; - unsigned sec_size; - unsigned cache; - str_list_t *host_info; - char *usb_guid; - unsigned pci_info; - unsigned pci_bus; - unsigned pci_slot; - unsigned pci_func; - uint64_t wwpn; - uint64_t fcp_lun; - char *controller_id; -} scsi_t; - - -/* - * PROM tree on PPC - */ -typedef struct devtree_s { - struct devtree_s *next; - struct devtree_s *parent; - unsigned idx; - char *path, *filename; - unsigned pci:1; - char *name, *model, *device_type, *compatible; - int class_code; /* class : sub_class : prog-if */ - int vendor_id, device_id, subvendor_id, subdevice_id; - int revision_id, interrupt; - unsigned char *edid; /* 128 bytes */ -} devtree_t; - -/* - * Device/CU model numbers for S/390 - */ -typedef struct ccw_s { - unsigned char lcss; - unsigned char cu_model; - unsigned char dev_model; -} ccw_t; - -/* - * special CDROM entry - */ -typedef struct cdrom_info_s { - struct cdrom_info_s *next; - char *name; - unsigned speed; - unsigned cdr:1, cdrw:1, dvd:1, dvdr:1, dvdram:1; - unsigned cdrom:1; /* cdrom in drive */ - struct { - unsigned ok:1; - char *volume, *publisher, *preparer, *application, *creation_date; - } iso9660; - struct { - unsigned ok:1; - unsigned platform; - char *id_string; - unsigned bootable:1; - unsigned media_type; /* boot emulation type */ - unsigned load_address; - unsigned load_count; /* sectors to load */ - unsigned start; /* start sector */ - unsigned catalog; /* boot catalog start */ - struct { - unsigned c, h, s; - unsigned size; - } geo; - char *label; - } el_torito; - -} cdrom_info_t; - -// note: obsolete, will be removed -typedef struct { - unsigned char block0[512]; -} floppy_info_t; - -/* - * bios data (ix86) - */ -typedef struct { - unsigned apm_supported:1; - unsigned apm_enabled:1; - unsigned apm_ver, apm_subver; - unsigned apm_bios_flags; - - unsigned vbe_ver; - unsigned vbe_video_mem; - - unsigned ser_port0, ser_port1, ser_port2, ser_port3; - unsigned par_port0, par_port1, par_port2; - - /* The id is still in big endian format! */ - unsigned is_pnp_bios:1; - unsigned pnp_id; - unsigned lba_support:1; - - unsigned low_mem_size; - smp_info_t smp; - vbe_info_t vbe; - - unsigned smbios_ver; - - struct { - unsigned width; - unsigned height; - char *vendor; - char *name; - } lcd; - - struct { - char *vendor; - char *type; - unsigned bus; - unsigned compat_vend; - unsigned compat_dev; - } mouse; - - struct { - unsigned ok:1; - unsigned scroll_lock:1; - unsigned num_lock:1; - unsigned caps_lock:1; - } led; - - bios32_info_t bios32; - -} bios_info_t; - - -/* - * prom data (ppc, sparc) - */ -typedef struct { - unsigned has_color:1; - unsigned color; -} prom_info_t; - - -/* - * general system data - */ -typedef struct { - char *system_type; - char *generation; - char *vendor; - char *model; - char *serial; - char *lang; -} sys_info_t; - - -/* - * monitor (DDC) data - */ -typedef struct { - unsigned manu_year; - unsigned min_vsync, max_vsync; /* vsync range */ - unsigned min_hsync, max_hsync; /* hsync range */ - char *vendor; - char *name; - char *serial; -} monitor_info_t; - - -typedef enum cpu_arch { - arch_unknown = 0, - arch_intel, - arch_alpha, - arch_sparc, arch_sparc64, - arch_ppc, arch_ppc64, - arch_68k, - arch_ia64, - arch_s390, arch_s390x, - arch_arm, - arch_mips, - arch_x86_64 -} hd_cpu_arch_t; - -// ###### drop boot_arch at all? -typedef enum boot_arch { - boot_unknown = 0, - boot_lilo, boot_milo, boot_aboot, boot_silo, boot_ppc, boot_elilo, boot_s390, - boot_mips, boot_grub -} hd_boot_arch_t; - -/* special cpu entry */ -typedef struct { - enum cpu_arch architecture; - unsigned family; /* axp: cpu variation */ - unsigned model; /* axp: cpu revision */ - unsigned stepping; - unsigned cache; - unsigned clock; - unsigned units; /* >1 "hyperthreading" */ - char *vend_name; /* axp: system type */ - char *model_name; /* axp: cpu model */ - char *platform; /* x86: NULL */ - str_list_t *features; /* x86: flags */ -} cpu_info_t; - - -/* - * enhanced disk data (cf. edd.c) - */ -typedef struct { - uint64_t sectors; - struct { - unsigned cyls, heads, sectors; - } edd; - struct { - unsigned cyls, heads, sectors; - } legacy; - unsigned ext_fixed_disk:1; - unsigned ext_lock_eject:1; - unsigned ext_edd:1; - unsigned ext_64bit:1; - unsigned assigned:1; - char *sysfs_id; - unsigned hd_idx; -} edd_info_t; - - -/* - * database info - */ -typedef struct { - unsigned data_len, data_max; - unsigned *data; - unsigned names_len, names_max; - char *names; -} hddb_data_t; - -typedef uint32_t hddb_entry_mask_t; - -typedef struct hddb_list_s { - hddb_entry_mask_t key_mask; - hddb_entry_mask_t value_mask; - unsigned key; - unsigned value; -} hddb_list_t; - -typedef struct { - unsigned list_len, list_max; - hddb_list_t *list; - unsigned ids_len, ids_max; - unsigned *ids; - unsigned strings_len, strings_max; - char *strings; -} hddb2_data_t; - -/* - * pci module info - */ -typedef struct { - char *module; - unsigned vendor; - unsigned device; - unsigned subvendor; - unsigned subdevice; - unsigned pciclass; - unsigned classmask; -} hddb_pci_t; - - -/* - * resource types - */ -typedef enum resource_types { - res_any, res_phys_mem, res_mem, res_io, res_irq, res_dma, res_monitor, - res_size, res_disk_geo, res_cache, res_baud, res_init_strings, res_pppd_option, - res_framebuffer, res_hwaddr, res_link, res_wlan -} hd_resource_types_t; - - -/* - * size units (cf. (res_size_t).unit) - */ -typedef enum size_units { - size_unit_cm, size_unit_cinch, size_unit_byte, size_unit_sectors, - size_unit_kbyte, size_unit_mbyte, size_unit_gbyte -} hd_size_units_t; - -/* - * access types for I/O and memory resources - */ -typedef enum access_flags { - acc_unknown, acc_ro, acc_wo, acc_rw /* unknown, read only, write only, read/write */ -} hd_access_flags_t; - - -typedef enum yes_no_flag { - flag_unknown, flag_no, flag_yes /* unknown, no, yes */ -} hd_yes_no_flag_t; - - -typedef enum geo_types { - geo_physical = 0, geo_logical, geo_bios_edd, geo_bios_legacy -} hd_geo_types_t; - - -/* - * definitions for the various resource types - */ -typedef struct { - union u_hd_res_t *next; - enum resource_types type; -} res_any_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - uint64_t base, range; - unsigned - enabled:1, /* 0: disabled, 1 enabled */ - access:2, /* enum access_flags */ - prefetch:2; /* enum yes_no_flag */ -} res_mem_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - uint64_t range; -} res_phys_mem_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - uint64_t base, range; - unsigned - enabled:1, /* 0: disabled, 1 enabled */ - access:2; /* enum access_flags */ -} res_io_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - unsigned base; - unsigned triggered; /* # of interrupts */ - unsigned enabled:1; /* 0: disabled, 1 enabled */ -} res_irq_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - unsigned base; - unsigned enabled:1; /* 0: disabled, 1 enabled */ -} res_dma_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - enum size_units unit; - uint64_t val1, val2; /* to allow for 2D values */ -} res_size_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - unsigned speed; - unsigned bits, stopbits; - char parity; /* n, e, o, s, m */ - char handshake; /* -, h, s */ -} res_baud_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - unsigned size; /* in kbyte */ -} res_cache_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - unsigned cyls, heads, sectors; - uint64_t size; - enum geo_types geotype; /* 0-3: physical/logical/bios edd/bios legacy */ -} res_disk_geo_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - unsigned width, height; /* in pixel */ - unsigned vfreq; /* in Hz */ - unsigned interlaced:1; /* 0/1 */ -} res_monitor_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - char *init1; - char *init2; -} res_init_strings_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - char *option; -} res_pppd_option_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - unsigned width, height; /* in pixel */ - unsigned bytes_p_line; /* line length in bytes (do not confuse with 'width') */ - unsigned colorbits; /* 4, 8, 15, 16, 24, 32 */ - unsigned mode; /* mode number for kernel */ -} res_framebuffer_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - char *addr; -} res_hwaddr_t; - -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - unsigned state:1; /* network link state: 0 - not connected, 1 - connected */ -} res_link_t; - -/* wlan capabilities */ -typedef struct { - union u_hd_res_t *next; - enum resource_types type; - str_list_t *channels; - str_list_t *frequencies; /* in GHz units */ - str_list_t *bitrates; /* in Mbps units */ - str_list_t *auth_modes; /* open, sharedkey, wpa-psk, wpa-eap, wpa-leap */ - str_list_t *enc_modes; /* WEP40, WEP104, WEP128, WEP232, TKIP, CCMP */ -} res_wlan_t; - -typedef union u_hd_res_t { - union u_hd_res_t *next; - res_any_t any; - res_io_t io; - res_mem_t mem; - res_phys_mem_t phys_mem; - res_irq_t irq; - res_dma_t dma; - res_size_t size; - res_cache_t cache; - res_baud_t baud; - res_disk_geo_t disk_geo; - res_monitor_t monitor; - res_init_strings_t init_strings; - res_pppd_option_t pppd_option; - res_framebuffer_t framebuffer; - res_hwaddr_t hwaddr; - res_link_t link; - res_wlan_t wlan; -} hd_res_t; - - -/* - * data gathered by the misc module; basically resources from /proc - */ -typedef struct { - uint64_t addr, size; - char *dev; - unsigned tag; -} misc_io_t; - -typedef struct { - unsigned channel; - char *dev; - unsigned tag; -} misc_dma_t; - -typedef struct { - unsigned irq, events; - int devs; - char **dev; - unsigned tag; -} misc_irq_t; - -typedef struct { - unsigned io_len, dma_len, irq_len; - misc_io_t *io; - misc_dma_t *dma; - misc_irq_t *irq; - str_list_t *proc_io, *proc_dma, *proc_irq; -} misc_t; - -typedef struct s_serial_t { - struct s_serial_t *next; - char *name; - char *device; - unsigned line, port, irq, baud; -} serial_t; - -typedef struct s_ser_device_t { - struct s_ser_device_t *next; - unsigned hd_idx; - char *dev_name; - str_list_t *at_resp; - int fd; - struct termios tio; - unsigned max_baud, cur_baud; - unsigned is_mouse:1; - unsigned is_modem:1; - unsigned do_io:1; - unsigned char buf[0x1000]; - int buf_len; - int garbage, non_pnp, pnp; - unsigned char pnp_id[8]; - char *serial, *class_name, *dev_id, *user_name, *vend, *init_string1, *init_string2, *pppd_option; - unsigned pnp_rev; - unsigned bits; -} ser_device_t; - -/* - * Notes on isdn_parm_t: - * - def_value is only relevant of alt_values != 0 - * - def_value should be a value out of alt_value[] - * - see libihw docu for the meaning of name,type,flags,def_value - */ -typedef struct isdn_parm_s { - struct isdn_parm_s *next; - char *name; /* parameter name */ - unsigned valid:1; /* 1: entry is valid, 0: some inconsistencies */ - unsigned conflict:1; /* 1: ressource conflict (eg. no free irq) */ - uint64_t value; /* value of the parameter */ - unsigned type; /* CDBISDN type (P_...) */ - unsigned flags; /* CDBISDN flags (P_...) */ - unsigned def_value; /* default value */ - int alt_values; /* length of alt_value[] */ - unsigned *alt_value; /* possible values */ -} isdn_parm_t; - -/* device driver info types */ -typedef enum driver_info_type { - di_any, di_display, di_module, di_mouse, di_x11, di_isdn, di_kbd, di_dsl -} hd_driver_info_t; - -/* unspecific info */ -typedef struct { - union driver_info_u *next; - enum driver_info_type type; /* driver info type */ - str_list_t *hddb0, *hddb1; /* the actual driver database entries */ -} driver_info_any_t; - -/* display (monitor) info */ -typedef struct { - union driver_info_u *next; - enum driver_info_type type; /* driver info type */ - str_list_t *hddb0, *hddb1; /* the actual driver database entries */ - unsigned width, height; /* max. useful display geometry */ - unsigned min_vsync, max_vsync; /* vsync range */ - unsigned min_hsync, max_hsync; /* hsync range */ - unsigned bandwidth; /* max. pixel clock */ -} driver_info_display_t; - -/* module info */ -typedef struct { - union driver_info_u *next; - enum driver_info_type type; /* driver info type */ - str_list_t *hddb0, *hddb1; /* the actual driver database entries */ - unsigned active:1; /* if module is currently active */ - unsigned modprobe:1; /* modprobe or insmod */ - str_list_t *names; /* (ordered) list of module names */ - str_list_t *mod_args; /* list of module args (corresponds to the module name list) */ - char *conf; /* conf.modules entry, if any (e.g. for sb.o) */ -} driver_info_module_t; - -/* mouse protocol info */ -typedef struct { - union driver_info_u *next; - enum driver_info_type type; /* driver info type */ - str_list_t *hddb0, *hddb1; /* the actual driver database entries */ - char *xf86; /* the XF86 protocol name */ - char *gpm; /* dto, gpm */ - int buttons; /* number of buttons, -1 --> unknown */ - int wheels; /* dto, wheels */ -} driver_info_mouse_t; - -/* X11 server info */ -typedef struct { - union driver_info_u *next; - enum driver_info_type type; /* driver info type */ - str_list_t *hddb0, *hddb1; /* the actual driver database entries */ - char *server; /* the server/module name */ - char *xf86_ver; /* XFree86 version (3 or 4) */ - unsigned x3d:1; /* has 3D support */ - struct { - unsigned all:5; /* the next 5 entries combined */ - unsigned c8:1, c15:1, c16:1, c24:1, c32:1; - } colors; /* supported color depths */ - unsigned dacspeed; /* max. ramdac clock */ - str_list_t *extensions; /* additional X extensions to load ('Module' section) */ - str_list_t *options; /* special server options */ - str_list_t *raw; /* extra info to add to XF86Config */ - char *script; /* 3d script to run */ -} driver_info_x11_t; - -/* isdn info */ -typedef struct { - union driver_info_u *next; - enum driver_info_type type; /* driver info type */ - str_list_t *hddb0, *hddb1; /* the actual driver database entries */ - int i4l_type, i4l_subtype; /* I4L types */ - char *i4l_name; /* I4L card name */ - isdn_parm_t *params; /* isdn parameters */ -} driver_info_isdn_t; - -/* dsl info */ -typedef struct { - union driver_info_u *next; - enum driver_info_type type; /* driver info type */ - str_list_t *hddb0, *hddb1; /* the actual driver database entries */ - char *mode; /* DSL driver types */ - char *name; /* DSL driver name */ -} driver_info_dsl_t; - -/* keyboard info */ -typedef struct { - union driver_info_u *next; - enum driver_info_type type; /* driver info type */ - str_list_t *hddb0, *hddb1; /* the actual driver database entries */ - char *XkbRules; /* XF86Config entries */ - char *XkbModel; - char *XkbLayout; - char *keymap; /* console keymap */ -} driver_info_kbd_t; - -/* - * holds device driver info - */ -typedef union driver_info_u { - union driver_info_u *next; - driver_info_any_t any; - driver_info_module_t module; - driver_info_mouse_t mouse; - driver_info_x11_t x11; - driver_info_display_t display; - driver_info_isdn_t isdn; - driver_info_dsl_t dsl; - driver_info_kbd_t kbd; -} driver_info_t; - - -/* - * Some hardware doesn't fit into the hd_t scheme or there is info we - * gathered during the scan process but that no-one really cares about. Such - * stuff is stored in hd_detail_t. - */ -typedef enum hd_detail_type { - hd_detail_pci, hd_detail_usb, hd_detail_isapnp, hd_detail_cdrom, - hd_detail_floppy, hd_detail_bios, hd_detail_cpu, hd_detail_prom, - hd_detail_monitor, hd_detail_sys, hd_detail_scsi, hd_detail_devtree, - hd_detail_ccw -} hd_detail_type_t; - -typedef struct { - enum hd_detail_type type; - pci_t *data; -} hd_detail_pci_t; - -typedef struct { - enum hd_detail_type type; - usb_t *data; -} hd_detail_usb_t; - -typedef struct { - enum hd_detail_type type; - isapnp_dev_t *data; -} hd_detail_isapnp_t; - -typedef struct { - enum hd_detail_type type; - cdrom_info_t *data; -} hd_detail_cdrom_t; - -typedef struct { - enum hd_detail_type type; - floppy_info_t *data; -} hd_detail_floppy_t; - -typedef struct { - enum hd_detail_type type; - bios_info_t *data; -} hd_detail_bios_t; - -typedef struct { - enum hd_detail_type type; - cpu_info_t *data; -} hd_detail_cpu_t; - -typedef struct { - enum hd_detail_type type; - prom_info_t *data; -} hd_detail_prom_t; - -typedef struct { - enum hd_detail_type type; - monitor_info_t *data; -} hd_detail_monitor_t; - -typedef struct { - enum hd_detail_type type; - sys_info_t *data; -} hd_detail_sys_t; - -typedef struct { - enum hd_detail_type type; - scsi_t *data; -} hd_detail_scsi_t; - -typedef struct { - enum hd_detail_type type; - devtree_t *data; -} hd_detail_devtree_t; - -typedef struct { - enum hd_detail_type type; - ccw_t *data; -} hd_detail_ccw_t; - -typedef union { - enum hd_detail_type type; - hd_detail_pci_t pci; - hd_detail_usb_t usb; - hd_detail_isapnp_t isapnp; - hd_detail_cdrom_t cdrom; - hd_detail_floppy_t floppy; - hd_detail_bios_t bios; - hd_detail_cpu_t cpu; - hd_detail_prom_t prom; - hd_detail_monitor_t monitor; - hd_detail_sys_t sys; - hd_detail_scsi_t scsi; - hd_detail_devtree_t devtree; - hd_detail_ccw_t ccw; -} hd_detail_t; - - -/* info about manually configured hardware (in /var/lib/hardware/) */ -typedef struct hd_manual_s { - struct hd_manual_s *next; - - char *unique_id; - char *parent_id; - char *child_ids; - unsigned hw_class; - char *model; - - hd_status_t status; - char *config_string; - - /* More or less free-form key, value pairs. - * key should not contain '=', however. - */ - str_list_t *key; - str_list_t *value; -} hd_manual_t; - - -/** - * Individual hardware item. - * Every hardware component gets an \ref hd_t entry. A list of all hardware - * items is in \ref hd_data_t::hd. - */ -typedef struct s_hd_t { - struct s_hd_t *next; /**< Link to next hardware item. */ - /** - * Unique index, starting at 1. - * Use \ref hd_get_device_by_idx() to look up an hardware entry by index. And don't - * free the result! - */ - unsigned idx; - - /** - * Hardware appears to be broken in some way. - * This was used to indicate broken framebuffer support of some graphics cards. - * Currently unused. - */ - unsigned broken:1; - - /** - * Bus type (id and name). - */ - hd_id_t bus; - - /** - * Slot and bus number. - * Bits 0-7: slot number, 8-31 bus number. - */ - unsigned slot; - - /** - * (PCI) function. - */ - unsigned func; - - /** - * Base class (id and name). - */ - hd_id_t base_class; - - /** - * Sub class (id and name). - */ - hd_id_t sub_class; - - /** - * (PCI) programming interface (id and name). - */ - hd_id_t prog_if; - - /** - * Vendor id and name. - * Id is actually a combination of some tag to differentiate the - * various id types and the real id. Use the \ref ID_VALUE macro to - * get e.g. the real PCI id value for a PCI %device. - */ - hd_id_t vendor; - - /** - * Device id and name. - * Id is actually a combination of some tag to differentiate the - * various id types and the real id. Use the \ref ID_VALUE macro to - * get e.g. the real PCI id value for a PCI %device. - * \note If you're looking or something printable, you might want to use \ref hd_t::model - * instead. - */ - hd_id_t device; - - /** - * Subvendor id and name. - * Id is actually a combination of some tag to differentiate the - * various id types and the real id. Use the \ref ID_VALUE macro to - * get e.g. the real PCI id value for a PCI %device. - */ - hd_id_t sub_vendor; - - /** - * Subdevice id and name. - * Id is actually a combination of some tag to differentiate the - * various id types and the real id. Use the \ref ID_VALUE macro to - * get e.g. the real PCI id value for a PCI %device. - */ - hd_id_t sub_device; - - /** - * Revision id or string. - * If revision is numerical (e.g. PCI) \ref hd_id_t::id is used. - * If revision is some char data (e.g. disk drives) it is stored in \ref hd_id_t::name. - */ - hd_id_t revision; - - /** - * Serial id. - */ - char *serial; - - /** - * Vendor id and name of some compatible hardware. - * Used mainly for ISA-PnP devices. - */ - hd_id_t compat_vendor; - - /** - * Device id and name of some compatible hardware. - * Used mainly for ISA-PnP devices. - */ - hd_id_t compat_device; - - /** - * Hardware class. - * Not to confuse with \ref base_class! - */ - hd_hw_item_t hw_class; - - /** - * Hardware class list. - * A device may belong to more than one hardware class. - */ - unsigned char hw_class_list[(hw_all + 7) / 8]; /**< (Internal) bitmask of hw classes. */ - - /** - * Model name. - * This is a combination of vendor and %device names. Some heuristics is used - * to make it more presentable. Use this instead of \ref hd_t::vendor and - * \ref hd_t::device. - */ - char *model; - - /** - * Device this hardware is attached to. - * Link to some 'parent' %device. Use \ref hd_get_device_by_idx() to get - * the corresponding hardware entry. - */ - unsigned attached_to; - - /** - * sysfs entry for this hardware, if any. - */ - char *sysfs_id; - - /** - * sysfs bus id for this hardware, if any. - */ - char *sysfs_bus_id; - - /** - * sysfs device link. - */ - char *sysfs_device_link; - - /** - * Special %device file. - * Device file name to access this hardware. Normally something below /dev. - * For network interfaces this is the interface name. - */ - char *unix_dev_name; - - /** - * Device type & number according to sysfs. - */ - hd_dev_num_t unix_dev_num; - - /** - * List of %device names. - * Device file names to access this hardware. Normally something below /dev. - * They should be all equivalent. The preferred name however is - * \ref hd_t::unix_dev_name. - */ - str_list_t *unix_dev_names; - - /** - * Special %device file. - * Device file name to access this hardware. Most hardware only has one - * %device name stored in \ref hd_t::unix_dev_name. But in some cases - * there's an alternative name. - */ - char *unix_dev_name2; - - /** - * Device type & number according to sysfs. - */ - hd_dev_num_t unix_dev_num2; - - /** - * BIOS/PROM id. - * Where appropriate, this is a special BIOS/PROM id (e.g. "0x80" for - * the first harddisk on Intel-PCs). - * CHPID for s390. - */ - char *rom_id; - - /** - * Unique id for this hardware. - * A unique string identifying this hardware. The string consists - * of two parts separated by a dot ("."). The part before the dot - * describes the location (where the hardware is attached in the system). - * The part after the dot identifies the hardware itself. The string - * must not contain slashes ("/") because we're going to create files - * with this id as name. Apart from this there are no restrictions on - * the form of this string. - */ - char *unique_id; - - /* List of ids. */ - str_list_t *unique_ids; - - /** - * (Internal) Probing module that created this entry. - */ - unsigned module; - - /** - * (Internal) Source code line where this entry was created. - */ - unsigned line; - - /** - * (Internal) Counter, used in combination with \ref hd_t::module and \ref hd_t::line. - */ - unsigned count; - - /** - * Device resources. - */ - hd_res_t *res; - - /** - * Special info associated with this hardware. - * \note This is going to change! - */ - hd_detail_t *detail; - - /** - * (Internal) Unspecific text info. - * It is used to track IDE interfaces and assign them to the correct - * IDE controllers. - */ - str_list_t *extra_info; - - /** - * Hardware status (if available). - * The status is stored in files below /var/lib/hardware/unique-keys/. Every - * hardware item gets a file there with its unique id as file name. - */ - hd_status_t status; - - /** - * Some %config info. - * Every hardware item may get some string assigned. This string is stored - * in files below /var/lib/hardware/unique-keys/. There is no meaning - * associated with this string. - */ - char *config_string; - - /** - * Hotplug controller for this %device. - * It indicates what kind of hotplug %device (if any) this is. - */ - hd_hotplug_t hotplug; - - /** - * Slot the hotplug device is connected to (e.g. PCMCIA socket). - * \note \ref hotplug_slot counts 1-based (0: no information available). - */ - unsigned hotplug_slot; - - struct is_s { - unsigned agp:1; /* AGP device */ - unsigned isapnp:1; /* ISA-PnP device */ - unsigned notready:1; /* block devices: no medium, other: device not configured */ - unsigned manual:1; /* undetectable, manually configured hardware */ - unsigned softraiddisk:1; /* disk belongs to some soft raid array */ - unsigned zip:1; /* zip floppy */ - unsigned cdr:1; /* CD-R */ - unsigned cdrw:1; /* CD-RW */ - unsigned dvd:1; /* DVD */ - unsigned dvdr:1; /* DVD-R */ - unsigned dvdram:1; /* DVD-RAM */ - unsigned pppoe:1; /* PPPOE modem connected */ - unsigned wlan:1; /* WLAN card */ - } is; - - struct tag_s { /* this struct is for internal purposes only */ - unsigned remove:1; /* schedule for removal */ - unsigned freeit:1; /* for internal memory management */ - unsigned fixed:1; /* fixed, do no longer modify this entry */ - unsigned ser_skip:1; /* if serial line, don't scan for devices */ - unsigned ser_device:2; /* if != 0: info about attached serial device; see serial.c */ - } tag; - - /** - * (Internal) First 512 bytes of block devices. - * To check accessibility of block devices we read the first block. The data - * is used to identify the boot %device. - */ - unsigned char *block0; - - /** - * Currently active driver. - */ - char *driver; - - /** - * List of currently active drivers. - */ - str_list_t *drivers; - - /** - * Old \ref unique_id for compatibility. - * The calculation of unique ids has changed in libhd v3.17. Basically - * we no longer use the vendor/%device names if there are vendor/%device - * ids. (Otherwise a simple %device name database update would change the id, - * which is really not what you want.) - */ - char *old_unique_id; - - /** - * \ref unique_id of parent (\ref attached_to). - * \note Please do not use it for now. - * - */ - char *parent_id; - - /** - * \ref unique_ids of children (\ref parent_id). - * \note Please do not use it for now. - * - */ - str_list_t *child_ids; - - /** - * (Internal) location independent \ref unique_id part. - * The speed up some internal searches, we store it here separately. - */ - char *unique_id1; - - /** - * USB Global Unique Identifier. - * Available for USB devices. This may even be set if \ref hd_t::bus is not - * \ref bus_usb (e.g. USB storage devices will have \ref hd_t::bus set to - * \ref bus_scsi due to SCSI emulation). - */ - char *usb_guid; - - driver_info_t *driver_info; /* device driver info */ - - str_list_t *requires; /* packages/programs required for this hardware */ - - /* - * These are used internally for memory management. - * Do not even _think_ of modifying these! - */ - unsigned ref_cnt; /**< (Internal) memory reference count. */ - struct s_hd_t *ref; /**< (Internal) if set, this is only a reference. */ -} hd_t; - - -/** - * Holds all data accumulated during hardware probing. - */ -typedef struct { - /** - * Current hardware list. - * The list of all currently probed hardware. This is not identical with - * the result of \ref hd_list(). (But a superset of it.) - */ - hd_t *hd; - - /** - * A progress indicator. - * If this callback function is not NULL, it is called at various points and can - * be used to give some user feedback what we are actually doing. - * If the debug flag HD_DEB_PROGRESS is set, progress messages are logged. - * \param pos Indicates where we are. - * \param msg Indicates what we are going to do. - */ - void (*progress)(char *pos, char *msg); - - /** Log messages. - * All messages logged during hardware probing accumulate here. - */ - char *log; - - /** Debug flags. - * Although there exist some debug flag defines this scheme is currently - * not followed consistently. It is guaranteed however that -1 will give - * the most log messages and 0 the least. - */ - unsigned debug; - - /** - * Special flags. - * Influence hardware probing in some strange ways with these. You normally - * do not want to use them. - */ - struct flag_struct { - unsigned internal:1; /**< \ref hd_scan() has been called internally. */ - unsigned dformat:2; /**< Alternative output format. */ - unsigned no_parport:1; /**< Don't do parport probing: parport modules (used to) crash pmacs. */ - unsigned iseries:1; /**< Set if we are on an iSeries machine. */ - unsigned list_all:1; /**< Return even devices with status 'not available'. */ - unsigned fast:1; /**< Don't check tricky hardware. */ - unsigned list_md:1; /**< Report md & lvm devices from /proc/partitions */ - unsigned nofork:1; /**< don't run potentially hanging code in a subprocess */ - unsigned nosysfs:1; /**< don't ask sysfs */ - unsigned forked:1; /**< we're running in a subprocess */ - unsigned cpuemu:1; /**< use CPU emulation to run BIOS code (i386 only) */ - unsigned udev:1; /**< return first udev symlink as device name */ - unsigned edd_used:1; /**< internal: edd info has been used */ - unsigned keep_kmods:2; /**< internal: don't reread kmods */ - } flags; - - - /** Concentrate on these devices. - * List of sysfs ids for devices to look for. - */ - str_list_t *only; - - /* - * The following entries should *not* be accessed outside of libhd! - */ - unsigned char probe[(pr_all + 7) / 8]; /**< (Internal) bitmask of probing features. */ - unsigned char probe_set[(pr_all + 7) / 8]; /**< (Iternal) bitmask of probing features that will always be set. */ - unsigned char probe_clr[(pr_all + 7) / 8]; /**< (Internal) bitmask of probing features that will always be reset. */ - unsigned last_idx; /**< (Internal) index of the last hd entry generated */ - unsigned module; /**< (Internal) the current probing module we are in */ - enum boot_arch boot; /**< (Internal) boot method */ - hd_t *old_hd; /**< (Internal) old (outdated) entries (if you scan more than once) */ - pci_t *pci; /**< (Internal) raw PCI data */ - isapnp_t *isapnp; /**< (Internal) raw ISA-PnP data */ - cdrom_info_t *cdrom; /**< (Internal) CDROM devs from PROC_CDROM_INFO */ - str_list_t *net; /**< (Internal) list of network interfaces */ - str_list_t *floppy; /**< (Internal) contents of PROC_NVRAM, used by the floppy module */ - misc_t *misc; /**< (Internal) data gathered in the misc module */ - serial_t *serial; /**< (Internal) /proc's serial info */ - scsi_t *scsi; /**< (Internal) raw SCSI data */ - ser_device_t *ser_mouse; /**< (Internal) info about serial mice */ - ser_device_t *ser_modem; /**< (Internal) info about serial modems */ - str_list_t *cpu; /**< (Internal) /proc/cpuinfo */ - str_list_t *klog; /**< (Internal) kernel log */ - str_list_t *proc_usb; /**< (Internal) /proc/bus/usb info */ - usb_t *usb; /**< (Internal) usb info */ - hddb_pci_t *hddb_pci_hm; /**< (Internal) pci module info */ - hddb_pci_t *hddb_pci; /**< (Internal) pci module info */ - hddb2_data_t *hddb2[2]; /**< (Internal) hardware database */ - str_list_t *kmods; /**< (Internal) list of active kernel modules */ - uint64_t used_irqs; /**< (Internal) irq usage */ - uint64_t assigned_irqs; /**< (Internal) irqs automatically assigned by libhd (for driver info) */ - memory_range_t bios_rom; /**< (Internal) BIOS 0xc0000 - 0xfffff */ - memory_range_t bios_ram; /**< (Internal) BIOS 0x00400 - 0x004ff */ - memory_range_t bios_ebda; /**< (Internal) EBDA */ - unsigned display; /**< (Internal) hd_idx of the active (vga) display */ - unsigned color_code; /**< (Internal) color, if any */ - char *cmd_line; /**< (Internal) kernel command line */ - str_list_t *xtra_hd; /**< (Internal) fake hd entries (for testing) */ - devtree_t *devtree; /**< (Internal) prom device tree on ppc */ - unsigned kernel_version; /**< (Internal) kernel version */ - int in_vmware; /**< (Internal) running in vmware */ - hd_manual_t *manual; /**< (Internal) hardware config info */ - str_list_t *disks; /**< (Internal) disks according to /proc/partitions */ - str_list_t *partitions; /**< (Internal) dto, partitions */ - str_list_t *cdroms; /**< (Internal) cdroms according to PROC_CDROM_INFO */ - hd_smbios_t *smbios; /**< (Internal) smbios data */ - struct { - unsigned ok:1; - unsigned size; - unsigned used; - void *data; - int id; - int updated; - } shm; /**< (Internal) our shm segment */ - unsigned pci_config_type; /**< (Internal) PCI config type (1 or 2), 0: unknown */ - hd_udevinfo_t *udevinfo; /**< (Internal) udev info */ - hd_sysfsdrv_t *sysfsdrv; /**< (Internal) sysfs driver info */ - uint64_t sysfsdrv_id; /**< (Internal) sysfs driver info id */ - str_list_t *scanner_db; /**< (Internal) list of scanner modules */ - edd_info_t edd[0x80]; /**< (Internal) enhanced disk drive data */ -} hd_data_t; - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * - * libhd interface functions - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -/* implemented in hd.c */ - -/* the actual hardware scan */ -void hd_scan(hd_data_t *hd_data); - -//! Free all data. -hd_data_t *hd_free_hd_data(hd_data_t *hd_data); - -//! Free hardware items returned by e.g. \ref hd_list(). -hd_t *hd_free_hd_list(hd_t *hd); - -void hd_set_probe_feature(hd_data_t *hd_data, enum probe_feature feature); -void hd_clear_probe_feature(hd_data_t *hd_data, enum probe_feature feature); -int hd_probe_feature(hd_data_t *hd_data, enum probe_feature feature); -void hd_set_probe_feature_hw(hd_data_t *hd_data, hd_hw_item_t item); - -enum probe_feature hd_probe_feature_by_name(char *name); -char *hd_probe_feature_by_value(enum probe_feature feature); - -int hd_module_is_active(hd_data_t *hd_data, char *mod); - -hd_t *hd_base_class_list(hd_data_t *hd_data, unsigned base_class); -hd_t *hd_sub_class_list(hd_data_t *hd_data, unsigned base_class, unsigned sub_class); -hd_t *hd_bus_list(hd_data_t *hd_data, unsigned bus); -const char* hd_busid_to_hwcfg(int busid); -hd_t *hd_list(hd_data_t *hd_data, hd_hw_item_t item, int rescan, hd_t *hd_old); -hd_t *hd_list_with_status(hd_data_t *hd_data, hd_hw_item_t item, hd_status_t status); -hd_t *hd_list2(hd_data_t *hd_data, hd_hw_item_t *items, int rescan); -hd_t *hd_list_with_status2(hd_data_t *hd_data, hd_hw_item_t *items, hd_status_t status); - -int hd_has_pcmcia(hd_data_t *hd_data); -// will be gone soon -// int hd_apm_enabled(hd_data_t *hd_data); -int hd_usb_support(hd_data_t *hd_data); -int hd_smp_support(hd_data_t *hd_data); -int hd_mac_color(hd_data_t *hd_data); -int hd_color(hd_data_t *hd_data); -int hd_is_uml(hd_data_t *hd_data); -unsigned hd_display_adapter(hd_data_t *hd_data); -unsigned hd_boot_disk(hd_data_t *hd_data, int *matches); -enum cpu_arch hd_cpu_arch(hd_data_t *hd_data); -enum boot_arch hd_boot_arch(hd_data_t *hd_data); - -hd_t *hd_get_device_by_idx(hd_data_t *hd_data, unsigned idx); - -void hd_set_hw_class(hd_t *hd, hd_hw_item_t hw_class); -int hd_is_hw_class(hd_t *hd, hd_hw_item_t hw_class); - -int hd_is_sgi_altix(hd_data_t *hd_data); - -char *hd_version(void); - -/* implemented in hddb.c */ - -str_list_t *get_hddb_packages(hd_data_t *hd_data); -void hddb_add_info(hd_data_t *hd_data, hd_t *hd); - -void hddb_dump_raw(hddb2_data_t *hddb, FILE *f); -void hddb_dump(hddb2_data_t *hddb, FILE *f); - -/* implemented in hdp.c */ - -void hd_dump_entry(hd_data_t *hd_data, hd_t *hd, FILE *f); - - -/* implemented in cdrom.c */ - -cdrom_info_t *hd_read_cdrom_info(hd_data_t *hd_data, hd_t *hd); - -/* implemented in manual.c */ -hd_manual_t *hd_manual_read_entry(hd_data_t *hd_data, const char *id); -int hd_manual_write_entry(hd_data_t *hd_data, hd_manual_t *entry); -hd_manual_t *hd_free_manual(hd_manual_t *manual); -hd_t *hd_read_config(hd_data_t *hd_data, const char *id); -int hd_write_config(hd_data_t *hd_data, hd_t *hd); -char *hd_hw_item_name(hd_hw_item_t item); -char *hd_status_value_name(hd_status_value_t status); -int hd_change_status(const char *id, hd_status_t status, const char *config_string); -int hd_read_mmap(hd_data_t *hd_data, char *name, unsigned char *buf, off_t start, unsigned size); - - -/* - * - - - - - CDB ISDN interface - - - - - - */ - - -/* (C) 2003 kkeil@suse.de */ - -#define CDBISDN_VERSION 0x0101 - -#ifndef PCI_ANY_ID -#define PCI_ANY_ID 0xffff -#endif - -#define CDBISDN_P_NONE 0x0 -#define CDBISDN_P_IRQ 0x1 -#define CDBISDN_P_MEM 0x2 -#define CDBISDN_P_IO 0x3 - -/* vendor info */ -typedef struct { - char *name; - char *shortname; - int vnr; - int refcnt; -} cdb_isdn_vendor; - -typedef struct { - int handle; /* internal identifier idx in database */ - int vhandle; /* internal identifier to vendor database */ - char *name; /* cardname */ - char *lname; /* vendor short name + cardname */ - char *Class; /* CLASS of the card */ - char *bus; /* bus type */ - int revision; /* revision used with USB */ - int vendor; /* Vendor ID for ISAPNP and PCI cards */ - int device; /* Device ID for ISAPNP and PCI cards */ - int subvendor; /* Subvendor ID for PCI cards */ - /* A value of 0xffff is ANY_ID */ - int subdevice; /* Subdevice ID for PCI cards */ - /* A value of 0xffff is ANY_ID */ - unsigned int features; /* feature flags */ - int line_cnt; /* count of ISDN ports */ - int vario_cnt; /* count of driver varios */ - int vario; /* referenz to driver vario record */ -} cdb_isdn_card; - -typedef struct { - int handle; /* idx in database */ - int next_vario; /* link to alternate vario */ - int drvid; /* unique id of the driver vario */ - int typ; /* Type to identify the driver */ - int subtyp; /* Subtype of the driver type */ - int smp; /* SMP supported ? */ - char *mod_name; /* name of the driver module */ - char *para_str; /* optional parameter string */ - char *mod_preload; /* optional modules to preload */ - char *cfg_prog; /* optional cfg prog */ - char *firmware; /* optional firmware to load */ - char *description; /* optional description */ - char *need_pkg; /* list of packages needed for function */ - char *info; /* optional additional info */ - char *protocol; /* supported D-channel protocols */ - char *interface; /* supported API interfaces */ - char *io; /* possible IO ports with legacy ISA cards */ - char *irq; /* possible interrupts with legacy ISA cards */ - char *membase; /* possible membase with legacy ISA cards */ - char *features; /* optional features*/ - int card_ref; /* reference to a card */ - char *name; /* driver name */ -} cdb_isdn_vario; - - -extern cdb_isdn_vendor *hd_cdbisdn_get_vendor(int); -extern cdb_isdn_card *hd_cdbisdn_get_card(int); -extern cdb_isdn_vario *hd_cdbisdn_get_vario_from_type(int, int); -extern cdb_isdn_card *hd_cdbisdn_get_card_from_type(int, int); -extern cdb_isdn_card *hd_cdbisdn_get_card_from_id(int, int, int, int); -extern cdb_isdn_vario *hd_cdbisdn_get_vario(int); -extern int hd_cdbisdn_get_version(void); -extern int hd_cdbisdn_get_db_version(void); -extern char *hd_cdbisdn_get_db_date(void); - -/* CDB ISDN interface end */ - -#ifdef __cplusplus -} -#endif - -#endif /* _HD_H */ diff --git a/src/hwinfo/src/hd/hd_int.h b/src/hwinfo/src/hd/hd_int.h deleted file mode 100644 index 36958642cd..0000000000 --- a/src/hwinfo/src/hd/hd_int.h +++ /dev/null @@ -1,236 +0,0 @@ -#include -#include - -#define PROC_CMDLINE "/proc/cmdline" -#define PROC_PCI_DEVICES "/proc/bus/pci/devices" -#define PROC_PCI_BUS "/proc/bus/pci" -#define PROC_CPUINFO "/proc/cpuinfo" -#define PROC_IOPORTS "/proc/ioports" -#define PROC_DMA "/proc/dma" -#define PROC_INTERRUPTS "/proc/interrupts" -#define PROC_NVRAM_22 "/proc/driver/nvram" -#define PROC_NVRAM_24 "/proc/nvram" -#define PROC_IDE "/proc/ide" -#define PROC_SCSI "/proc/scsi" -#define PROC_CDROM_INFO "/proc/sys/dev/cdrom/info" -#define PROC_NET_IF_INFO "/proc/net/dev" -#define PROC_MODULES "/proc/modules" -#define PROC_DRIVER_SERIAL "/proc/tty/driver/serial" -#define PROC_DRIVER_MACSERIAL "/proc/tty/driver/macserial" -#define PROC_PARPORT_22 "/proc/parport/" /* Final '/' is essential! */ -#define PROC_PARPORT_24 "/proc/sys/dev/parport/parport" -#define PROC_KCORE "/proc/kcore" -// #define PROC_USB_DEVICES "/proc/bus/usb/devices" -#define PROC_USB_DEVICES "/proc/bus/usb/devices_please-use-sysfs-instead" -#define PROC_PROM "/proc/device-tree" -#define PROC_MEMINFO "/proc/meminfo" -#define PROC_VERSION "/proc/version" -#define PROC_ISAPNP "/proc/isapnp" -#define PROC_ISERIES "/proc/iSeries" -#define PROC_ISERIES_VETH "/proc/iSeries/veth" -#define PROC_PARTITIONS "/proc/partitions" -#define PROC_APM "/proc/apm" - -#define DEV_NVRAM "/dev/nvram" -#define DEV_PSAUX "/dev/psaux" -#define DEV_ADBMOUSE "/dev/adbmouse" -#define DEV_MEM "/dev/mem" -#define DEV_KBD "/dev/kbd" -#define DEV_CONSOLE "/dev/console" -#define DEV_OPENPROM "/dev/openprom" -#define DEV_SUNMOUSE "/dev/sunmouse" -#define DEV_MICE "/dev/input/mice" -#define DEV_FB "/dev/fb" -#define DEV_FB0 "/dev/fb0" - -#define PROG_MODPROBE "/sbin/modprobe" -#define PROG_RMMOD "/sbin/rmmod" -#define PROG_CARDCTL "/sbin/cardctl" -#define PROG_UDEVINFO "/usr/bin/udevinfo" - -#define KLOG_BOOT "/var/log/boot.msg" -#define ISAPNP_CONF "/etc/isapnp.conf" - -#define ID_LIST HARDWARE_DIR "/hd.ids" -#define LIB_CMDLINE HARDWARE_DIR "/cmdline" - -#define KERNEL_22 0x020200 -#define KERNEL_24 0x020400 -#define KERNEL_26 0x020600 - -#if defined(__s390__) || defined(__s390x__) || defined(__alpha__) || defined(LIBHD_TINY) -#define WITH_ISDN 0 -#else -#define WITH_ISDN 1 -#endif - -#define PROGRESS(a, b, c) progress(hd_data, a, b, c) -#define ADD2LOG(a...) str_printf(&hd_data->log, -2, a) - -#undef LIBHD_MEMCHECK - -#if defined(__i386__) || defined(__PPC__) -/* - * f: function we are in - * a: first argument - */ - -#ifdef __i386__ -#define CALLED_FROM(f, a) ((void *) ((unsigned *) &a)[-1] - 5) -#endif - -#ifdef __PPC__ -/* (1-arg funcs only) #define CALLED_FROM(f, a) ((void *) *((unsigned *) ((void *) &a - ((short *) f)[1] - 4)) - 4) */ -static inline void *getr1() { void *p; asm("mr %0,1" : "=r" (p) :); return p; } -#define CALLED_FROM(f, a) ((void *) ((unsigned *) (getr1() - ((short *) f)[1]))[1] - 4) -#endif -#else -#undef LIBHD_MEMCHECK -#endif - -#ifdef LIBHD_MEMCHECK -FILE *libhd_log; -#endif - - -/* - * define to make (hd_t).unique_id a hex string, otherwise it is a - * base64-like string - */ -#undef NUMERIC_UNIQUE_ID - -/* - * Internal probing module numbers. Use mod_name_by_idx() outside of libhd. - */ -enum mod_idx { - mod_none, mod_memory, mod_pci, mod_isapnp, mod_pnpdump, mod_net, - mod_floppy, mod_misc, mod_bios, mod_cpu, mod_monitor, mod_mouse, mod_scsi, - mod_serial, mod_usb, mod_adb, mod_modem, mod_parallel, mod_isa, mod_isdn, - mod_kbd, mod_prom, mod_sbus, mod_int, mod_braille, mod_xtra, mod_sys, - mod_manual, mod_fb, mod_veth, mod_pppoe, mod_pcmcia, mod_s390, - mod_sysfs, mod_dsl, mod_block, mod_edd, mod_input, mod_wlan -}; - -void *new_mem(size_t size); -void *resize_mem(void *, size_t); -void *add_mem(void *, size_t, size_t); -char *new_str(const char *); -void *free_mem(void *); -int have_common_res(hd_res_t *res1, hd_res_t *res2); -void join_res_io(hd_res_t **res1, hd_res_t *res2); -void join_res_irq(hd_res_t **res1, hd_res_t *res2); -void join_res_dma(hd_res_t **res1, hd_res_t *res2); -hd_res_t *free_res_list(hd_res_t *res); -hd_res_t *add_res_entry(hd_res_t **res, hd_res_t *new_res); -hd_t *add_hd_entry(hd_data_t *hd_data, unsigned line, unsigned count); -misc_t *free_misc(misc_t *m); -scsi_t *free_scsi(scsi_t *scsi, int free_all); -hd_detail_t *free_hd_detail(hd_detail_t *d); -devtree_t *free_devtree(hd_data_t *hd_data); -void hd_add_id(hd_data_t *hd_data, hd_t *hd); - -char *isa_id2str(unsigned); -char *eisa_vendor_str(unsigned); -unsigned name2eisa_id(char *); -char *canon_str(char *, int); - -int hex(char *string, int digits); - -void str_printf(char **buf, int offset, char *format, ...) __attribute__ ((format (printf, 3, 4))); -void hexdump(char **buf, int with_ascii, unsigned data_len, unsigned char *data); -str_list_t *search_str_list(str_list_t *sl, char *str); -str_list_t *add_str_list(str_list_t **sl, char *str); -str_list_t *free_str_list(str_list_t *list); -str_list_t *read_file(char *file_name, unsigned start_line, unsigned lines); -str_list_t *read_dir(char *dir_name, int type); -char *hd_read_symlink(char *link_name); -void progress(hd_data_t *hd_data, unsigned pos, unsigned count, char *msg); - -void remove_hd_entries(hd_data_t *hd_data); -void remove_tagged_hd_entries(hd_data_t *hd_data); - -driver_info_t *free_driver_info(driver_info_t *di); - -int str2float(char *s, int n); -char *float2str(int i, int n); - -/* return the file name of a module */ -char *mod_name_by_idx(unsigned idx); - -int hd_timeout(void(*func)(void *), void *arg, int timeout); - -str_list_t *read_kmods(hd_data_t *hd_data); -char *get_cmd_param(hd_data_t *hd_data, int field); - -#ifdef __i386__ -/* smp/smp.c */ -int detectSMP(void); -#endif - -void update_irq_usage(hd_data_t *hd_data); -int run_cmd(hd_data_t *hd_data, char *cmd); -int load_module_with_params(hd_data_t *hd_data, char *module, char *params); -int load_module(hd_data_t *hd_data, char *module); -int unload_module(hd_data_t *hd_data, char *module); -int probe_module(hd_data_t *hd_data, char *module); - -int cmp_hd(hd_t *hd1, hd_t *hd2); -unsigned has_something_attached(hd_data_t *hd_data, hd_t *hd); - -str_list_t *get_cmdline(hd_data_t *hd_data, char *key); - -int detect_smp_bios(hd_data_t *hd_data); -int detect_smp_prom(hd_data_t *hd_data); - -unsigned char *read_block0(hd_data_t *hd_data, char *dev, int *timeout); - -void hd_copy(hd_t *dst, hd_t *src); - -/* parameter for gather_resources(,,, which) */ -#define W_IO (1 << 0) -#define W_DMA (1 << 1) -#define W_IRQ (1 << 2) - -void gather_resources(misc_t *m, hd_res_t **r, char *name, unsigned which); - -char *vend_id2str(unsigned vend); - -int hd_getdisksize(hd_data_t *hd_data, char *dev, int fd, hd_res_t **geo, hd_res_t **size); - -str_list_t *hd_split(char del, char *str); -char *hd_join(char *del, str_list_t *str); - -int is_pnpinfo(ser_device_t *mi, int ofs); - -int is_pcmcia_ctrl(hd_data_t *hd_data, hd_t *hd); - -void hd_fork(hd_data_t *hd_data, int timeout, int total_timeout); -void hd_fork_done(hd_data_t *hd_data); -void hd_shm_init(hd_data_t *hd_data); -void hd_shm_clean(hd_data_t *hd_data); -void hd_shm_done(hd_data_t *hd_data); -void *hd_shm_add(hd_data_t *hd_data, void *ptr, unsigned len); -int hd_is_shm_ptr(hd_data_t *hd_data, void *ptr); -void hd_move_to_shm(hd_data_t *hd_data); - -void read_udevinfo(hd_data_t *hd_data); - -hd_t *hd_find_sysfs_id(hd_data_t *hd_data, char *id); -int hd_attr_uint(struct sysfs_attribute *attr, uint64_t *u, int base); -char *hd_attr_str(struct sysfs_attribute *attr); -str_list_t *hd_attr_list(struct sysfs_attribute *attr); -char *hd_sysfs_id(char *path); -char *hd_sysfs_name2_dev(char *str); -char *hd_sysfs_dev2_name(char *str); -void hd_sysfs_driver_list(hd_data_t *hd_data); -char *hd_sysfs_find_driver(hd_data_t *hd_data, char *sysfs_id, int exact); -int hd_report_this(hd_data_t *hd_data, hd_t *hd); -str_list_t *hd_module_list(hd_data_t *hd_data, unsigned id); - -int hd_is_iseries(hd_data_t *hd_data); - - -#ifdef __cplusplus -} -#endif - diff --git a/src/hwinfo/src/hd/hddb.c b/src/hwinfo/src/hd/hddb.c deleted file mode 100644 index 691ecbe6d9..0000000000 --- a/src/hwinfo/src/hd/hddb.c +++ /dev/null @@ -1,2748 +0,0 @@ -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "hddb.h" -#include "isdn.h" -#include "hddb_int.h" - -extern hddb2_data_t hddb_internal; - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -// #define HDDB_TRACE -// #define HDDB_TEST -// #define HDDB_EXTERNAL_ONLY - -static char *hid_tag_names[] = { "", "pci ", "eisa ", "usb ", "special ", "pcmcia " }; -// just experimenting... -static char *hid_tag_names2[] = { "", "pci ", "eisa ", "usb ", "int ", "pcmcia " }; - -typedef enum { - pref_empty, pref_new, pref_and, pref_or, pref_add -} prefix_t; - -typedef struct line_s { - prefix_t prefix; - hddb_entry_t key; - char *value; -} line_t; - -typedef struct { - int len; - unsigned val[32]; /* arbitrary (approx. max. number of modules/xf86 config lines) */ -} tmp_entry_t; - -/* except for driver, all strings are static and _must not_ be freed */ -typedef struct { - hddb_entry_mask_t key; - hddb_entry_mask_t value; - hddb_entry_mask_t value_mask[he_nomask]; - hd_id_t bus; - hd_id_t base_class; - hd_id_t sub_class; - hd_id_t prog_if; - hd_id_t vendor; - hd_id_t device; - hd_id_t sub_vendor; - hd_id_t sub_device; - hd_id_t revision; - hd_id_t cu_model; - char *serial; - str_list_t *driver; - char *requires; -} hddb_search_t; - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -static void hddb_init_pci(hd_data_t *hd_data); -static hddb_pci_t *parse_pcimap(str_list_t *file); -static driver_info_t *hd_pcidb(hd_data_t *hd_data, hddb_pci_t *pci_db, hd_t *hd, driver_info_t *drv_info); -static void hddb_init_external(hd_data_t *hd_data); - -static line_t *parse_line(char *str); -static unsigned store_string(hddb2_data_t *x, char *str); -static unsigned store_list(hddb2_data_t *x, hddb_list_t *list); -static unsigned store_value(hddb2_data_t *x, unsigned val); -static unsigned store_entry(hddb2_data_t *x, tmp_entry_t *te); -static void clear_entry(tmp_entry_t *te); -static void add_value(tmp_entry_t *te, hddb_entry_t idx, unsigned val); -static hddb_entry_mask_t add_entry(hddb2_data_t *hddb2, tmp_entry_t *te, hddb_entry_t idx, char *str); -static int compare_ids(hddb2_data_t *hddb, hddb_search_t *hs, hddb_entry_mask_t mask, unsigned key); -static void complete_ids(hddb2_data_t *hddb, hddb_search_t *hs, hddb_entry_mask_t key_mask, hddb_entry_mask_t mask, unsigned val_idx); -static int hddb_search(hd_data_t *hd_data, hddb_search_t *hs, int max_recursions); -#ifdef HDDB_TEST -static void test_db(hd_data_t *hd_data); -#endif -static driver_info_t *hddb_to_device_driver(hd_data_t *hd_data, hddb_search_t *hs); -static driver_info_t *kbd_driver(hd_data_t *hd_data, hd_t *hd); -static driver_info_t *monitor_driver(hd_data_t *hd_data, hd_t *hd); - -#if WITH_ISDN -/* static int chk_free_biosmem(hd_data_t *hd_data, unsigned addr, unsigned len); */ -/* static isdn_parm_t *new_isdn_parm(isdn_parm_t **ip); */ -static driver_info_t *isdn_driver(hd_data_t *hd_data, hd_t *hd, cdb_isdn_card *cic); -static driver_info_t *dsl_driver(hd_data_t *hd_data, hd_t *hd, cdb_isdn_card *cic); -#endif - -static hd_res_t *get_res(hd_t *h, enum resource_types t, unsigned index); -static driver_info_t *reorder_x11(driver_info_t *di0, char *info); -static void expand_driver_info(hd_data_t *hd_data, hd_t *hd); -static char *module_cmd(hd_t *hd, char *cmd); - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -void hddb_init_pci(hd_data_t *hd_data) -{ - str_list_t *sl = NULL; - char *s = NULL, *r; - struct utsname ubuf; - - if(!hd_data->hddb_pci) { - if(!uname(&ubuf)) { - r = getenv("LIBHD_KERNELVERSION"); - if(!r || !*r) r = ubuf.release; - str_printf(&s, 0, "/lib/modules/%s/modules.pcimap", r); - sl = read_file(s, 0, 0); - s = free_mem(s); - } - - hd_data->hddb_pci = parse_pcimap(sl); - - sl = free_str_list(sl); - } - - if(!hd_data->hddb_pci_hm) { - sl = read_file("/etc/hotplug/pci.handmap", 0, 0); - hd_data->hddb_pci_hm = parse_pcimap(sl); - sl = free_str_list(sl); - } -} - - -hddb_pci_t *parse_pcimap(str_list_t *file) -{ - str_list_t *sl; - unsigned len; - hddb_pci_t *pci, *p; - char buf[64]; - unsigned u0, u1, u2, u3, u4, u5; - - for(len = 1, sl = file; sl; sl = sl->next) len++; - - pci = new_mem(len * sizeof *pci); - - for(p = pci, sl = file; sl; sl = sl->next) { - if(sscanf(sl->str, "%63s %x %x %x %x %x %x", buf, &u0, &u1, &u2, &u3, &u4, &u5) == 7) { - p->module = new_str(buf); - p->vendor = u0; - p->device = u1; - p->subvendor = u2; - p->subdevice = u3; - p->pciclass = u4; - p->classmask = u5; - - p++; - } - } - -#if 0 - fprintf(stderr, "--- pcimap ---\n"); - for(p = pci; p->module; p++) { - fprintf(stderr, "%s, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", - p->module, p->vendor, p->device, p->subvendor, p->subdevice, - p->pciclass, p->classmask - ); - } -#endif - - return pci; -} - - -driver_info_t *hd_pcidb(hd_data_t *hd_data, hddb_pci_t *pci_db, hd_t *hd, driver_info_t *drv_info) -{ - unsigned vendor, device, subvendor, subdevice, pciclass; - driver_info_t **di = NULL, *di2; - pci_t *pci; - char *mod_list[16 /* arbitrary */]; - int mod_prio[sizeof mod_list / sizeof *mod_list]; - int i, prio, mod_list_len; - - if(!pci_db) return drv_info; - - if(ID_TAG(hd->vendor.id) != TAG_PCI) return drv_info; - - /* don't add module info if driver info of some other type exists */ - for(di = &drv_info; *di; di = &(*di)->next) { - if((*di)->any.type != di_module) return drv_info; - } - - vendor = ID_VALUE(hd->vendor.id); - device = ID_VALUE(hd->device.id); - subvendor = ID_VALUE(hd->sub_vendor.id); - subdevice = ID_VALUE(hd->sub_device.id); - pciclass = (hd->base_class.id << 16) + ((hd->sub_class.id & 0xff) << 8) + (hd->prog_if.id & 0xff); - - if( - hd->detail && - hd->detail->type == hd_detail_pci && - (pci = hd->detail->pci.data) - ) { - pciclass = (pci->base_class << 16) + ((pci->sub_class & 0xff) << 8) + (pci->prog_if & 0xff); - } - - for(mod_list_len = 0; pci_db->module; pci_db++) { - if( - (pci_db->vendor == 0xffffffff || pci_db->vendor == vendor) && - (pci_db->device == 0xffffffff || pci_db->device == device) && - (pci_db->subvendor == 0xffffffff || pci_db->subvendor == subvendor) && - (pci_db->subdevice == 0xffffffff || pci_db->subdevice == subdevice) && - !((pci_db->pciclass ^ pciclass) & pci_db->classmask) - ) { - for(di2 = drv_info; di2; di2 = di2->next) { - if( - di2->any.type == di_module && - di2->any.hddb0 && - di2->any.hddb0->str && - !strcmp(di2->any.hddb0->str, pci_db->module) - ) break; - } - - if(di2) continue; - - prio = 0; - if(pci_db->vendor == vendor) prio = 1; - if(pci_db->device == device) prio = 2; - if(pci_db->subvendor == subvendor) prio = 3; - if(pci_db->subdevice == subdevice) prio = 4; - - mod_prio[mod_list_len] = prio; - mod_list[mod_list_len++] = pci_db->module; - - if(mod_list_len >= sizeof mod_list / sizeof *mod_list) break; - } - } - - for(prio = 4; prio >= 0; prio--) { - for(i = 0; i < mod_list_len; i++) { - if(mod_prio[i] == prio) { - *di = new_mem(sizeof **di); - (*di)->any.type = di_module; - (*di)->module.modprobe = 1; - add_str_list(&(*di)->any.hddb0, mod_list[i]); - di = &(*di)->next; - } - } - } - - return drv_info; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -void hddb_init(hd_data_t *hd_data) -{ - hddb_init_pci(hd_data); - hddb_init_external(hd_data); - -#ifndef HDDB_EXTERNAL_ONLY - hd_data->hddb2[1] = &hddb_internal; -#endif - -#ifdef HDDB_TEST - test_db(hd_data); -#endif -} - - -void hddb_init_external(hd_data_t *hd_data) -{ - str_list_t *sl, *sl0; - line_t *l; - unsigned l_start, l_end /* end points _past_ last element */; - unsigned u, ent, l_nr = 1; - tmp_entry_t tmp_entry[he_nomask /* _must_ be he_nomask! */]; - hddb_entry_mask_t entry_mask = 0; - int state; - hddb_list_t dbl = {}; - hddb2_data_t *hddb2; - - if(hd_data->hddb2[0]) return; - - hddb2 = hd_data->hddb2[0] = new_mem(sizeof *hd_data->hddb2[0]); - - sl0 = read_file(ID_LIST, 0, 0); - - l_start = l_end = 0; - state = 0; - - for(sl = sl0; sl; sl = sl->next, l_nr++) { - l = parse_line(sl->str); - if(!l) { - ADD2LOG("hd.ids line %d: invalid line\n", l_nr); - state = 4; - break; - }; - if(l->prefix == pref_empty) continue; - switch(l->prefix) { - case pref_new: - if((state == 2 && !entry_mask) || state == 1) { - ADD2LOG("hd.ids line %d: new item not allowed\n", l_nr); - state = 4; - break; - } - if(state == 2 && entry_mask) { - ent = store_entry(hddb2, tmp_entry); - if(ent == -1u) { - ADD2LOG("hd.ids line %d: internal hddb oops 1\n", l_nr); - state = 4; - break; - } - if(l_end && l_end > l_start) { - for(u = l_start; u < l_end; u++) { - hddb2->list[u].value_mask = entry_mask; - hddb2->list[u].value = ent; - } - } - } - entry_mask = 0; - clear_entry(tmp_entry); - state = 1; - l_start = store_list(hddb2, &dbl); - l_end = l_start + 1; - break; - - case pref_and: - if(state != 1) { - ADD2LOG("hd.ids line %d: must start item first\n", l_nr); - state = 4; - break; - } - break; - - case pref_or: - if(state != 1 || !entry_mask || l_end <= l_start || l_end < 1) { - ADD2LOG("hd.ids line %d: must start item first\n", l_nr); - state = 4; - break; - } - ent = store_entry(hddb2, tmp_entry); - if(ent == -1u) { - ADD2LOG("hd.ids line %d: internal hddb oops 2\n", l_nr); - state = 4; - break; - } - hddb2->list[l_end - 1].key_mask = entry_mask; - hddb2->list[l_end - 1].key = ent; - entry_mask = 0; - clear_entry(tmp_entry); - u = store_list(hddb2, &dbl); - if(u != l_end) { - ADD2LOG("hd.ids line %d: internal hddb oops 2\n", l_nr); - state = 4; - break; - } - l_end++; - break; - - case pref_add: - if(state == 1 && !entry_mask) { - ADD2LOG("hd.ids line %d: driver info not allowed\n", l_nr); - state = 4; - break; - } - if(state == 1 && l_end > l_start) { - ent = store_entry(hddb2, tmp_entry); - if(ent == -1u) { - ADD2LOG("hd.ids line %d: internal hddb oops 3\n", l_nr); - state = 4; - break; - } - hddb2->list[l_end - 1].key_mask = entry_mask; - hddb2->list[l_end - 1].key = ent; - entry_mask = 0; - clear_entry(tmp_entry); - state = 2; - } - if(state != 2 || l_end == 0) { - ADD2LOG("hd.ids line %d: driver info not allowed\n", l_nr); - state = 4; - break; - } - break; - - default: - state = 4; - } - - if(state != 4) { - u = add_entry(hddb2, tmp_entry, l->key, l->value); - if(u) { - entry_mask |= u; - } - else { - ADD2LOG("hd.ids line %d: invalid info\n", l_nr); - state = 4; - } - } - - if(state == 4) break; /* error */ - } - - /* finalize last item */ - if(state == 2 && entry_mask) { - ent = store_entry(hddb2, tmp_entry); - if(ent == -1u) { - ADD2LOG("hd.ids line %d: internal hddb oops 4\n", l_nr); - state = 4; - } - else if(l_end && l_end > l_start) { - for(u = l_start; u < l_end; u++) { - hddb2->list[u].value_mask = entry_mask; - hddb2->list[u].value = ent; - } - } - } - - sl0 = free_str_list(sl0); - - if(state == 4) { - /* there was an error */ - - free_mem(hddb2->list); - free_mem(hddb2->ids); - free_mem(hddb2->strings); - hd_data->hddb2[0] = free_mem(hd_data->hddb2[0]); - } -} - - -line_t *parse_line(char *str) -{ - static line_t l; - char *s; - int i; - - /* drop leading spaces */ - while(isspace(*str)) str++; - - /* skip emtpy lines and comments */ - if(!*str || *str == ';' || *str == '#') { - l.prefix = pref_empty; - return &l; - } - - l.prefix = pref_new; - - switch(*str) { - case '&': - l.prefix = pref_and; - str++; - break; - - case '|': - l.prefix = pref_or; - str++; - break; - - case '+': - l.prefix = pref_add; - str++; - break; - } - - /* skip spaces */ - while(isspace(*str)) str++; - - s = str; - while(*str && !isspace(*str)) str++; - if(*str) *str++ = 0; - while(isspace(*str)) str++; - - for(i = 0; (unsigned) i < sizeof hddb_entry_strings / sizeof *hddb_entry_strings; i++) { - if(!strcmp(s, hddb_entry_strings[i])) { - l.key = i; - break; - } - } - - if((unsigned) i >= sizeof hddb_entry_strings / sizeof *hddb_entry_strings) return NULL; - - l.value = str; - - /* drop trailing white space */ - i = strlen(str); - while(i > 0) { - if(isspace(str[i - 1])) - str[--i] = 0; - else - break; - } - - /* special case: drop leading and final double quotes, if any */ - i = strlen(l.value); - if(i >= 2 && l.value[0] == '"' && l.value[i - 1] == '"') { - l.value[i - 1] = 0; - l.value++; - } - - // fprintf(stderr, "pre = %d, key = %d, val = \"%s\"\n", l.prefix, l.key, l.value); - - return &l; -} - - -unsigned store_string(hddb2_data_t *x, char *str) -{ - unsigned l = strlen(str), u; - - if(x->strings_len + l >= x->strings_max) { - x->strings_max += l + 0x1000; /* >4k steps */ - x->strings = resize_mem(x->strings, x->strings_max * sizeof *x->strings); - } - - /* make sure the 1st byte is 0 */ - if(x->strings_len == 0) { - *x->strings = 0; /* resize_mem does _not_ clear memory */ - x->strings_len = 1; - } - - if(l == 0) return 0; /* 1st byte is always 0 */ - - strcpy(x->strings + (u = x->strings_len), str); - x->strings_len += l + 1; - - return u; -} - - -unsigned store_list(hddb2_data_t *x, hddb_list_t *list) -{ - if(x->list_len == x->list_max) { - x->list_max += 0x100; /* 4k steps */ - x->list = resize_mem(x->list, x->list_max * sizeof *x->list); - } - - x->list[x->list_len++] = *list; - - return x->list_len - 1; -} - - -unsigned store_value(hddb2_data_t *x, unsigned val) -{ - if(x->ids_len == x->ids_max) { - x->ids_max += 0x400; /* 4k steps */ - x->ids = resize_mem(x->ids, x->ids_max * sizeof *x->ids); - } - - x->ids[x->ids_len++] = val; - - return x->ids_len - 1; -} - - -/* returns index in hddb2->ids */ -unsigned store_entry(hddb2_data_t *x, tmp_entry_t *te) -{ - int i, j; - unsigned ent = -1, u, v; - - for(i = 0; i < he_nomask; i++) { - if(te[i].len) { - for(j = 0; j < te[i].len; j++) { - v = te[i].val[j] | (1 << 31); - if(j == te[i].len - 1) v &= ~(1 << 31); - u = store_value(x, v); - if(ent == -1u) ent = u; - } - } - } - - return ent; -} - -void clear_entry(tmp_entry_t *te) -{ - memset(te, 0, he_nomask * sizeof *te); -} - -void add_value(tmp_entry_t *te, hddb_entry_t idx, unsigned val) -{ - if(idx >= he_nomask) return; - te += idx; - - if((unsigned) te->len >= sizeof te->val / sizeof *te->val) return; - - te->val[te->len++] = val; -} - -int parse_id(char *str, unsigned *id, unsigned *range, unsigned *mask) -{ - static unsigned id0, val; - unsigned tag = 0; - char c = 0, *s, *t = NULL; - - *id = *range = *mask = 0; - - if(!str || !*str) return 0; - - for(s = str; *str && !isspace(*str); str++); - if(*str) { - c = *(t = str); /* remember for later */ - *str++ = 0; - } - while(isspace(*str)) str++; - - if(*s) { - if(!strcmp(s, "pci")) tag = TAG_PCI; - else if(!strcmp(s, "usb")) tag = TAG_USB; - else if(!strcmp(s, "special")) tag = TAG_SPECIAL; - else if(!strcmp(s, "eisa")) tag = TAG_EISA; - else if(!strcmp(s, "isapnp")) tag = TAG_EISA; - else if(!strcmp(s, "pcmcia")) tag = TAG_PCMCIA; - else { - str = s; - if(t) *t = c; /* restore */ - } - } - - id0 = strtoul(str, &s, 0); - - if(s == str) { - id0 = name2eisa_id(str); - if(!id0) return 0; - s = str + 3; - id0 = ID_VALUE(id0); - if(!tag) tag = TAG_EISA; - } - - while(isspace(*s)) s++; - if(*s && *s != '&' && *s != '+') return 0; - - *id = MAKE_ID(tag, id0); - - if(!*s) return 1; - - c = *s++; - - while(isspace(*s)) s++; - - val = strtoul(s, &str, 0); - - if(s == str) return 0; - - while(isspace(*str)) str++; - - if(*str) return 0; - - if(c == '+') *range = val; else *mask = val; - - return c == '+' ? 2 : 3; -} - - -hddb_entry_mask_t add_entry(hddb2_data_t *hddb2, tmp_entry_t *te, hddb_entry_t idx, char *str) -{ - hddb_entry_mask_t mask = 0; - int i; - unsigned u, u0, u1, u2; - char *s, c; - - for(i = 0; (unsigned) i < sizeof hddb_is_numeric / sizeof *hddb_is_numeric; i++) { - if(idx == hddb_is_numeric[i]) break; - } - - if((unsigned) i < sizeof hddb_is_numeric / sizeof *hddb_is_numeric) { - /* numeric id */ - mask |= 1 << idx; - - i = parse_id(str, &u0, &u1, &u2); - - switch(i) { - case 1: - add_value(te, idx, MAKE_DATA(FLAG_ID, u0)); - break; - - case 2: - add_value(te, idx, MAKE_DATA(FLAG_RANGE, u1)); - add_value(te, idx, MAKE_DATA(FLAG_ID, u0)); - break; - - case 3: - add_value(te, idx, MAKE_DATA(FLAG_MASK, u2)); - add_value(te, idx, MAKE_DATA(FLAG_ID, u0)); - break; - - default: - return 0; - } - } - else { - if(idx < he_nomask) { - /* strings */ - - mask |= 1 << idx; - u = store_string(hddb2, str); - // fprintf(stderr, ">>> %s\n", str); - add_value(te, idx, MAKE_DATA(FLAG_STRING, u)); - } - else { - /* special */ - - if(idx == he_class_id) { - i = parse_id(str, &u0, &u1, &u2); - if(i != 1) return 0; - u = ID_VALUE(u0) >> 8; - add_value(te, he_baseclass_id, MAKE_DATA(FLAG_ID, u)); - u = u0 & 0xff; - add_value(te, he_subclass_id, MAKE_DATA(FLAG_ID, u)); - /* add_value(te, he_progif_id, MAKE_DATA(FLAG_ID, 0)); */ - mask |= (1 << he_baseclass_id) + (1 << he_subclass_id) /* + (1 << he_progif_id) */; - } - else { - switch(idx) { - case he_driver_module_insmod: - c = 'i'; - break; - - case he_driver_module_modprobe: - c = 'm'; - break; - - case he_driver_module_config: - c = 'M'; - break; - - case he_driver_xfree: - c = 'x'; - break; - - case he_driver_xfree_config: - c = 'X'; - break; - - case he_driver_mouse: - c = 'p'; - break; - - case he_driver_display: - c = 'd'; - break; - - case he_driver_any: - c = 'a'; - break; - - default: - c = 0; - break; - } - if(c) { - s = new_mem(strlen(str) + 3); - s[0] = c; - s[1] = '\t'; - strcpy(s + 2, str); - mask |= add_entry(hddb2, te, he_driver, s); - s = free_mem(s); - } - } - } - } - - return mask; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -void hddb_dump_raw(hddb2_data_t *hddb, FILE *f) -{ - int i; - unsigned u, fl, v, t, id; - char *s; - - if(!hddb) return; - - fprintf(f, "=== strings 0x%05x/0x%05x ===\n", hddb->strings_len, hddb->strings_max); - - for(s = hddb->strings, i = 0, u = 0; u < hddb->strings_len; u++) { - if(!hddb->strings[u]) { - fprintf(f, "%4d (0x%05x): \"%s\"\n", i, (unsigned) (s - hddb->strings), s); - i++; - s = hddb->strings + u + 1; - } - } - - fprintf(f, "\n=== ids 0x%05x/0x%05x ===\n", hddb->ids_len, hddb->ids_max); - - for(u = 0; u < hddb->ids_len; u++) { - fprintf(f, "0x%05x: 0x%08x ", u, hddb->ids[u]); - if(hddb->ids[u] & (1 << 31)) fprintf(f, " "); - fl = DATA_FLAG(hddb->ids[u]) & 0x7; - v = DATA_VALUE(hddb->ids[u]); - if(fl == FLAG_STRING && v < hddb->strings_len) { - fprintf(f, "\"%s\"", hddb->strings + v); - } - else if(fl == FLAG_MASK) { - fprintf(f, "&0x%04x", v); - } - else if(fl == FLAG_RANGE) { - fprintf(f, "+0x%04x", v); - } - else if(fl == FLAG_ID) { - t = ID_TAG(v); - id = ID_VALUE(v); - fprintf(f, "%s0x%04x", hid_tag_name(t), id); - if(t == TAG_EISA) { - fprintf(f, " (%s)", eisa_vendor_str(id)); - } - } - fprintf(f, "\n"); - } - - fprintf(f, "\n=== search list 0x%05x/0x%05x ===\n", hddb->list_len, hddb->list_max); - - for(u = 0; u < hddb->list_len; u++) { - fprintf(f, - "%4d: 0x%08x 0x%08x 0x%05x 0x%05x\n", - u, hddb->list[u].key_mask, hddb->list[u].value_mask, - hddb->list[u].key, hddb->list[u].value - ); - } -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -void hddb_dump_ent_name(hddb2_data_t *hddb, FILE *f, char pre, hddb_entry_t ent) -{ - int len, tab_ind = 24; - - if(ent >= sizeof hddb_entry_strings / sizeof *hddb_entry_strings) return; - - fprintf(f, "%c%s\t", pre, hddb_entry_strings[ent]); - - len = strlen(hddb_entry_strings[ent]) + 1; - - for(len = (len & ~7) + 8; len < tab_ind; len += 8) { - fputc('\t', f); - } -} - - -void hddb_dump_skey(hddb2_data_t *hddb, FILE *f, prefix_t pre, hddb_entry_mask_t key_mask, unsigned key) -{ - static char pref_char[5] = { ' ', ' ', '&', '|', '+' }; - hddb_entry_t ent; - unsigned rm_val = 0, r_or_m = 0; - unsigned fl, val, *ids, id, tag, u; - char *str_val; - int i; - - if(pre >= sizeof pref_char) return; - - if(key >= hddb->ids_len) return; - - ids = hddb->ids + key; - - for(ent = 0; ent < he_nomask && key_mask; ent++, key_mask >>= 1) { - if(!(key_mask & 1)) continue; - - fl = DATA_FLAG(*ids); - val = DATA_VALUE(*ids); - - r_or_m = 0; - - while((fl & FLAG_CONT)) { - if(fl == (FLAG_CONT | FLAG_RANGE)) { - rm_val = val; - r_or_m = 1; - } - else if(fl == (FLAG_CONT | FLAG_MASK)) { - rm_val = val; - r_or_m = 2; - } - else { - break; - } - - ids++; - - fl = DATA_FLAG(*ids); - val = DATA_VALUE(*ids); - } - - fl &= ~FLAG_CONT; - - if(ent != he_driver) { - hddb_dump_ent_name(hddb, f, pref_char[pre], ent); - - if(fl == FLAG_ID) { - tag = ID_TAG(val); - id = ID_VALUE(val); - if(tag == TAG_EISA && (ent == he_vendor_id || ent == he_subvendor_id)) { - fprintf(f, "%s", eisa_vendor_str(id)); - } - else { - u = 4; - if(ent == he_bus_id || ent == he_subclass_id || ent == he_progif_id) { - u = 2; - } - else if(ent == he_baseclass_id) { - u = 3; - } - fprintf(f, "%s0x%0*x", hid_tag_name(tag), u, id); - } - if(r_or_m) { - fprintf(f, "%c0x%04x", r_or_m == 1 ? '+' : '&', rm_val); - } - } - else if(fl == FLAG_STRING) { - if(val < hddb->strings_len) { - str_val = hddb->strings + val; - fprintf(f, "%s", str_val); - } - } - fputc('\n', f); - } - else { - ids--; - do { - ids++; - fl = DATA_FLAG(*ids) & ~FLAG_CONT; - val = DATA_VALUE(*ids); - if(fl != FLAG_STRING) break; - str_val = NULL; - if(val < hddb->strings_len) str_val = hddb->strings + val; - if(!str_val) break; - if(!*str_val && !str_val[1] == '\t') break; - - switch(*str_val) { - case 'x': - i = he_driver_xfree; - break; - - case 'X': - i = he_driver_xfree_config; - break; - - case 'i': - i = he_driver_module_insmod; - break; - - case 'm': - i = he_driver_module_modprobe; - break; - - case 'M': - i = he_driver_module_config; - break; - - case 'p': - i = he_driver_mouse; - break; - - case 'd': - i = he_driver_display; - break; - - case 'a': - i = he_driver_any; - break; - - default: - i = -1; - break; - } - if(i == -1) break; - - hddb_dump_ent_name(hddb, f, pref_char[pre], i); - fprintf(f, "%s\n", str_val + 2); - } - while((*ids & (1 << 31))); - } - - /* at this point 'ids' must be the _current_ entry (_not_ the next) */ - - /* skip potential garbage/unhandled entries */ - while((*ids & (1 << 31))) ids++; - - ids++; - - if(pre != pref_add) pre = pref_and; - } -} - - -void hddb_dump(hddb2_data_t *hddb, FILE *f) -{ - unsigned u; - - if(!hddb) return; - - for(u = 0; u < hddb->list_len; u++) { - hddb_dump_skey(hddb, f, pref_new, hddb->list[u].key_mask, hddb->list[u].key); - hddb_dump_skey(hddb, f, pref_add, hddb->list[u].value_mask, hddb->list[u].value); - fputc('\n', f); - } -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -int compare_ids(hddb2_data_t *hddb, hddb_search_t *hs, hddb_entry_mask_t mask, unsigned key) -{ - hddb_entry_t ent; - unsigned rm_val = 0, r_or_m = 0, res = 0; - unsigned fl, val, ok, *ids, id; - char *str, *str_val; - - if(key >= hddb->ids_len) return 1; - - ids = hddb->ids + key; - - for(ent = 0; ent < he_nomask && mask && !res; ent++, mask >>= 1) { - if(!(mask & 1)) continue; - - fl = DATA_FLAG(*ids); - val = DATA_VALUE(*ids); - - r_or_m = 0; - - while((fl & FLAG_CONT)) { - if(fl == (FLAG_CONT | FLAG_RANGE)) { - rm_val = val; - r_or_m = 1; - } - else if(fl == (FLAG_CONT | FLAG_MASK)) { - rm_val = val; - r_or_m = 2; - } - else { - break; - } - - ids++; - - fl = DATA_FLAG(*ids); - val = DATA_VALUE(*ids); - } - - fl &= ~FLAG_CONT; - - id = 0; - str = str_val = NULL; - ok = 0; - if(fl == FLAG_ID) { - ok = 1; - switch(ent) { - case he_bus_id: - id = hs->bus.id; - break; - - case he_baseclass_id: - id = hs->base_class.id; - break; - - case he_subclass_id: - id = hs->sub_class.id; - break; - - case he_progif_id: - id = hs->prog_if.id; - break; - - case he_vendor_id: - id = hs->vendor.id; - break; - - case he_device_id: - id = hs->device.id; - break; - - case he_subvendor_id: - id = hs->sub_vendor.id; - break; - - case he_subdevice_id: - id = hs->sub_device.id; - break; - - case he_rev_id: - id = hs->revision.id; - break; - case he_detail_ccw_data_cu_model: - id = hs->cu_model.id; - break; - - default: - ok = 0; - break; - } - } - else if(fl == FLAG_STRING) { - if(val < hddb->strings_len) str_val = hddb->strings + val; - ok = 2; - switch(ent) { - case he_bus_name: - str = hs->bus.name; - break; - - case he_baseclass_name: - str = hs->base_class.name; - break; - - case he_subclass_name: - str = hs->sub_class.name; - break; - - case he_progif_name: - str = hs->prog_if.name; - break; - - case he_vendor_name: - str = hs->vendor.name; - break; - - case he_device_name: - str = hs->device.name; - break; - - case he_subvendor_name: - str = hs->sub_vendor.name; - break; - - case he_subdevice_name: - str = hs->sub_device.name; - break; - - case he_rev_name: - str = hs->revision.name; - break; - - case he_serial: - str = hs->serial; - break; - - case he_requires: - str = hs->requires; - break; - - default: - ok = 0; - } - } - - switch(ok) { - case 1: - switch(r_or_m) { - case 1: - if(id < val || id >= val + rm_val) res = 1; - break; - - case 2: - if((id & ~rm_val) != val) res = 1; - break; - - default: - if(id != val) res = 1; - } - break; - - case 2: - if(str && str_val) { - if(strcmp(str, str_val)) res = 1; - } - else { - res = 1; - } - break; - - default: - res = 1; - } - -#ifdef HDDB_TRACE - switch(ok) { - case 1: - if(r_or_m) { - printf( - "cmp: 0x%05x: (ent = %2d, id = 0x%x, val = 0x%x%c0x%x) = %d\n", - key, ent, id, val, r_or_m == 1 ? '+' : '&', rm_val, res - ); - } - else { - printf( - "cmp: 0x%05x: (ent = %2d, id = 0x%x, val = 0x%x) = %d\n", - key, ent, id, val, res - ); - } - break; - - case 2: - printf( - "cmp: 0x%05x: (ent = %2d, id = \"%s\", val = \"%s\") = %d\n", - key, ent, str, str_val, res - ); - - break; - - default: - printf("cmp: 0x%05x: (ent = %2d, *** unhandled key ***) = %d\n", key, ent, res); - } -#endif - - /* at this point 'ids' must be the _current_ entry (_not_ the next) */ - - /* skip potential garbage/unhandled entries */ - while((*ids & (1 << 31))) ids++; - - ids++; - } - - return res; -} - -void complete_ids( - hddb2_data_t *hddb, hddb_search_t *hs, - hddb_entry_mask_t key_mask, hddb_entry_mask_t mask, unsigned val_idx -) -{ - hddb_entry_t ent; - unsigned *ids, *id; - unsigned fl, val, ok; - char **str, *str_val; - - if(val_idx >= hddb->ids_len) return; - - ids = hddb->ids + val_idx; - - for(ent = 0; ent < he_nomask && mask; ent++, mask >>= 1) { - if(!(mask & 1)) continue; - - fl = DATA_FLAG(*ids); - val = DATA_VALUE(*ids); - - fl &= ~FLAG_CONT; - - id = NULL; - str = NULL; - str_val = NULL; - ok = 0; - if(fl == FLAG_ID) { - ok = 1; - switch(ent) { - case he_bus_id: - id = &hs->bus.id; - break; - - case he_baseclass_id: - id = &hs->base_class.id; - break; - - case he_subclass_id: - id = &hs->sub_class.id; - break; - - case he_progif_id: - id = &hs->prog_if.id; - break; - - case he_vendor_id: - id = &hs->vendor.id; - break; - - case he_device_id: - id = &hs->device.id; - break; - - case he_subvendor_id: - id = &hs->sub_vendor.id; - break; - - case he_subdevice_id: - id = &hs->sub_device.id; - break; - - case he_rev_id: - id = &hs->revision.id; - break; - - case he_detail_ccw_data_cu_model: - id = &hs->cu_model.id; - break; - - default: - ok = 0; - break; - } - } - else if(fl == FLAG_STRING) { - if(val < hddb->strings_len) str_val = hddb->strings + val; - ok = 2; - switch(ent) { - case he_bus_name: - str = &hs->bus.name; - break; - - case he_baseclass_name: - str = &hs->base_class.name; - break; - - case he_subclass_name: - str = &hs->sub_class.name; - break; - - case he_progif_name: - str = &hs->prog_if.name; - break; - - case he_vendor_name: - str = &hs->vendor.name; - break; - - case he_device_name: - str = &hs->device.name; - break; - - case he_subvendor_name: - str = &hs->sub_vendor.name; - break; - - case he_subdevice_name: - str = &hs->sub_device.name; - break; - - case he_rev_name: - str = &hs->revision.name; - break; - - case he_serial: - str = &hs->serial; - break; - - case he_driver: - ok = 3; - break; - - case he_requires: - str = &hs->requires; - break; - - default: - ok = 0; - } - } - - if(ok) { - if( - (hs->value_mask[ent] & key_mask) == hs->value_mask[ent] && - key_mask != hs->value_mask[ent] - ) { - hs->value_mask[ent] = key_mask; - hs->value |= 1 << ent; - } - else { - /* don't change if already set */ - ok = 4; - } - -#if 0 - if((hs->value & (1 << ent))) { - /* don't change if already set */ - ok = 4; - } - else if(ent != he_driver) { - hs->value |= 1 << ent; - } -#endif - } - - switch(ok) { - case 1: - *id = val; -#ifdef HDDB_TRACE - printf("add: 0x%05x: (ent = %2d, val = 0x%08x)\n", val_idx, ent, val); -#endif - break; - - case 2: - *str = str_val; -#ifdef HDDB_TRACE - printf("add: 0x%05x: (ent = %2d, val = \"%s\")\n", val_idx, ent, str_val); -#endif - break; - - case 3: - ids--; - hs->driver = free_str_list(hs->driver); - do { - ids++; - fl = DATA_FLAG(*ids) & ~FLAG_CONT; - val = DATA_VALUE(*ids); - if(fl != FLAG_STRING) break; - str_val = NULL; - if(val < hddb->strings_len) str_val = hddb->strings + val; - if(!str_val) break; -#ifdef HDDB_TRACE - printf("add: 0x%05x: (ent = %2d, val = \"%s\")\n", val_idx, ent, str_val); -#endif - add_str_list(&hs->driver, str_val); - } - while((*ids & (1 << 31))); - break; - - case 4: - break; - -#ifdef HDDB_TRACE - default: - printf("add: 0x%05x: (ent = %2d, *** unhandled value ***)\n", val_idx, ent); -#endif - } - - /* at this point 'ids' must be the _current_ entry (_not_ the next) */ - - /* skip potential garbage/unhandled entries */ - while((*ids & (1 << 31))) ids++; - - ids++; - } -} - -int hddb_search(hd_data_t *hd_data, hddb_search_t *hs, int max_recursions) -{ - unsigned u; - int i; - hddb2_data_t *hddb; - int db_idx; - hddb_entry_mask_t all_values = 0; - - if(!hs) return 0; - - if(!max_recursions) max_recursions = 2; - - while(max_recursions--) { - for(db_idx = 0; (unsigned) db_idx < sizeof hd_data->hddb2 / sizeof *hd_data->hddb2; db_idx++) { - if(!(hddb = hd_data->hddb2[db_idx])) continue; - - for(u = 0; u < hddb->list_len; u++) { - if( - (hs->key & hddb->list[u].key_mask) == hddb->list[u].key_mask - /* && (hs->value & hddb->list[u].value_mask) != hddb->list[u].value_mask */ - ) { - i = compare_ids(hddb, hs, hddb->list[u].key_mask, hddb->list[u].key); - if(!i) { - complete_ids(hddb, hs, - hddb->list[u].key_mask, - hddb->list[u].value_mask, hddb->list[u].value - ); - } - } - } - } - - all_values |= hs->value; - - if(!max_recursions) break; - - hs->key |= hs->value; - hs->value = 0; - memset(hs->value_mask, 0, sizeof hs->value_mask); - } - - hs->value = all_values; - - return 1; -} - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -#ifdef HDDB_TEST -void test_db(hd_data_t *hd_data) -{ - hddb_search_t hs = {}; - int i; - - hs.bus.id = 4; - hs.key |= (1 << he_bus_id) + (1 << he_serial); - - hs.serial = "ser 0123"; - - i = hddb_search(hd_data, &hs, 0); - - printf("%d, >%s<\n", i, hs.bus.name); -} -#endif - - -str_list_t *get_hddb_packages(hd_data_t *hd_data) -{ - return NULL; -} - - -unsigned device_class(hd_data_t *hd_data, unsigned vendor, unsigned device) -{ - hddb_search_t hs = {}; - - hs.vendor.id = vendor; - hs.device.id = device; - hs.key |= (1 << he_vendor_id) + (1 << he_device_id); - - hddb_search(hd_data, &hs, 1); - - if( - (hs.value & ((1 << he_baseclass_id) + (1 << he_subclass_id))) == - ((1 << he_baseclass_id) + (1 << he_subclass_id)) - ) { - return (hs.base_class.id << 8) + (hs.sub_class.id & 0xff); - } - - return 0; -} - - -unsigned sub_device_class(hd_data_t *hd_data, unsigned vendor, unsigned device, unsigned sub_vendor, unsigned sub_device) -{ - hddb_search_t hs = {}; - - hs.vendor.id = vendor; - hs.device.id = device; - hs.sub_vendor.id = sub_vendor; - hs.sub_device.id = sub_device; - hs.key |= (1 << he_vendor_id) + (1 << he_device_id) + (1 << he_subvendor_id) + (1 << he_subdevice_id); - - hddb_search(hd_data, &hs, 1); - - if( - (hs.value & ((1 << he_baseclass_id) + (1 << he_subclass_id))) == - ((1 << he_baseclass_id) + (1 << he_subclass_id)) - ) { - return (hs.base_class.id << 8) + (hs.sub_class.id & 0xff); - } - - return 0; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -void hddb_add_info(hd_data_t *hd_data, hd_t *hd) -{ - hddb_search_t hs = {}; - driver_info_t *new_driver_info = NULL; -#if WITH_ISDN - cdb_isdn_card *cic; -#endif - - if(hd->tag.fixed) return; - - hs.bus.id = hd->bus.id; - hs.key |= 1 << he_bus_id; - - hs.base_class.id = hd->base_class.id; - hs.key |= 1 << he_baseclass_id; - - hs.sub_class.id = hd->sub_class.id; - hs.key |= 1 << he_subclass_id; - - hs.prog_if.id = hd->prog_if.id; - hs.key |= 1 << he_progif_id; - - if(hd->vendor.id) { - hs.vendor.id = hd->vendor.id; - hs.key |= 1 << he_vendor_id; - } - - if(hd->vendor.name) { - hs.vendor.name = hd->vendor.name; - hs.key |= 1 << he_vendor_name; - } - - if(hd->device.id) { - hs.device.id = hd->device.id; - hs.key |= 1 << he_device_id; - } - - if(hd->device.name) { - hs.device.name = hd->device.name; - hs.key |= 1 << he_device_name; - } - - if(hd->sub_vendor.id) { - hs.sub_vendor.id = hd->sub_vendor.id; - hs.key |= 1 << he_subvendor_id; - } - - if(hd->sub_device.id) { - hs.sub_device.id = hd->sub_device.id; - hs.key |= 1 << he_subdevice_id; - } - - hs.revision.id = hd->revision.id; - hs.key |= 1 << he_rev_id; - - if(hd->revision.name) { - hs.revision.name = hd->revision.name; - hs.key |= 1 << he_rev_name; - } - - if(hd->serial) { - hs.serial = hd->serial; - hs.key |= 1 << he_serial; - } - - if(hd->detail && hd->detail->ccw.data) { - hs.cu_model.id=hd->detail->ccw.data->cu_model; - hs.key |= 1 << he_detail_ccw_data_cu_model; - } - - hddb_search(hd_data, &hs, 0); - - if((hs.value & (1 << he_bus_id))) { - hd->bus.id = hs.bus.id; - } - - if((hs.value & (1 << he_bus_name))) { - if(!hd->ref) free_mem(hd->bus.name); - hd->bus.name = new_str(hs.bus.name); - } - - if((hs.value & (1 << he_baseclass_id))) { - hd->base_class.id = hs.base_class.id; - } - - if((hs.value & (1 << he_baseclass_name))) { - if(!hd->ref) free_mem(hd->base_class.name); - hd->base_class.name = new_str(hs.base_class.name); - } - - if((hs.value & (1 << he_subclass_id))) { - hd->sub_class.id = hs.sub_class.id; - } - - if((hs.value & (1 << he_subclass_name))) { - if(!hd->ref) free_mem(hd->sub_class.name); - hd->sub_class.name = new_str(hs.sub_class.name); - } - - if((hs.value & (1 << he_progif_id))) { - hd->prog_if.id = hs.prog_if.id; - } - - if((hs.value & (1 << he_progif_name))) { - if(!hd->ref) free_mem(hd->prog_if.name); - hd->prog_if.name = new_str(hs.prog_if.name); - } - - if((hs.value & (1 << he_requires))) { - if(!hd->ref) hd->requires = free_str_list(hd->requires); - hd->requires = hd_split('|', hs.requires); - } - - if((hs.value & (1 << he_vendor_id))) { - hd->vendor.id = hs.vendor.id; - } - - if((hs.value & (1 << he_vendor_name))) { - if(!hd->ref) free_mem(hd->vendor.name); - hd->vendor.name = new_str(hs.vendor.name); - } - - if((hs.value & (1 << he_device_id))) { - hd->device.id = hs.device.id; - } - - if((hs.value & (1 << he_device_name))) { - if(!hd->ref) free_mem(hd->device.name); - hd->device.name = new_str(hs.device.name); - } - - if((hs.value & (1 << he_subvendor_id))) { - hd->sub_vendor.id = hs.sub_vendor.id; - } - - if((hs.value & (1 << he_subvendor_name))) { - if(!hd->ref) free_mem(hd->sub_vendor.name); - hd->sub_vendor.name = new_str(hs.sub_vendor.name); - } - - if((hs.value & (1 << he_subdevice_id))) { - hd->sub_device.id = hs.sub_device.id; - } - - if((hs.value & (1 << he_subdevice_name))) { - if(!hd->ref) free_mem(hd->sub_device.name); - hd->sub_device.name = new_str(hs.sub_device.name); - } - - if((hs.value & (1 << he_detail_ccw_data_cu_model))) { - if(hd->detail && hd->detail->ccw.data) - hd->detail->ccw.data->cu_model=hs.cu_model.id; - } - - /* look for sub vendor again */ - - if(!hd->sub_vendor.name && hd->sub_vendor.id) { - hddb_search_t hs2 = {}; - - hs2.vendor.id = hd->sub_vendor.id; - hs2.key |= 1 << he_vendor_id; - - hddb_search(hd_data, &hs2, 1); - - if((hs2.value & (1 << he_vendor_name))) { - hd->sub_vendor.name = new_str(hs2.vendor.name); - } - } - - /* look for compat device name */ - if( - hd->compat_vendor.id && - hd->compat_device.id && - !hd->compat_vendor.name && - !hd->compat_device.name - ) { - hddb_search_t hs2 = {}; - - hs2.vendor.id = hd->compat_vendor.id; - hs2.key |= 1 << he_vendor_id; - - hs2.device.id = hd->compat_device.id; - hs2.key |= 1 << he_device_id; - - hddb_search(hd_data, &hs2, 1); - - if((hs2.value & (1 << he_vendor_name))) { - hd->compat_vendor.name = new_str(hs2.vendor.name); - } - - if((hs2.value & (1 << he_device_name))) { - hd->compat_device.name = new_str(hs2.device.name); - } - } - - /* get package info for compat device id */ - - if(!hd->requires) { - hddb_search_t hs2 = {}; - - hs2.vendor.id = hd->compat_vendor.id; - hs2.key |= 1 << he_vendor_id; - - hs2.device.id = hd->compat_device.id; - hs2.key |= 1 << he_device_id; - - hddb_search(hd_data, &hs2, 1); - - if((hs2.value & (1 << he_requires))) { - hd->requires = hd_split('|', hs2.requires); - } - } - - /* get driver info */ - -#if WITH_ISDN - if((cic = get_isdn_info(hd))) { - new_driver_info = isdn_driver(hd_data, hd, cic); - if(!hd->model && cic->lname && *cic->lname) { - hd->model = new_str(cic->lname); - } - free_mem(cic); - } - if (!new_driver_info && ((cic = get_dsl_info(hd)))) { - new_driver_info = dsl_driver(hd_data, hd, cic); - if(!hd->model && cic->lname && *cic->lname) { - hd->model = new_str(cic->lname); - } - free_mem(cic); - } -#endif - - if(!new_driver_info) { - new_driver_info = hd_pcidb(hd_data, hd_data->hddb_pci_hm, hd, new_driver_info); - } - - if(!new_driver_info && (hs.value & (1 << he_driver))) { - new_driver_info = hddb_to_device_driver(hd_data, &hs); - } - - if(!new_driver_info && (hd->compat_vendor.id || hd->compat_device.id)) { - memset(&hs, 0, sizeof hs); - - if(hd->compat_vendor.id) { - hs.vendor.id = hd->compat_vendor.id; - hs.key |= 1 << he_vendor_id; - } - if(hd->compat_device.id) { - hs.device.id = hd->compat_device.id; - hs.key |= 1 << he_device_id; - } - - hddb_search(hd_data, &hs, 1); - - if((hs.value & (1 << he_driver))) { - new_driver_info = hddb_to_device_driver(hd_data, &hs); - } - } - - if(!new_driver_info && hd->base_class.id == bc_keyboard) { - new_driver_info = kbd_driver(hd_data, hd); - } - - if(!new_driver_info && hd->base_class.id == bc_monitor) { - new_driver_info = monitor_driver(hd_data, hd); - } - - new_driver_info = hd_pcidb(hd_data, hd_data->hddb_pci, hd, new_driver_info); - - if(new_driver_info) { - if(!hd->ref) { - hd->driver_info = free_driver_info(hd->driver_info); - } - hd->driver_info = new_driver_info; - expand_driver_info(hd_data, hd); - } - - free_str_list(hs.driver); -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -driver_info_t *hddb_to_device_driver(hd_data_t *hd_data, hddb_search_t *hs) -{ - char *s, *t, *t0; - driver_info_t *di = NULL, *di0 = NULL; - str_list_t *sl; - - for(sl = hs->driver; sl; sl = sl->next) { - if(!sl->str || !*sl->str || sl->str[1] != '\t') return NULL; - - if(di && (*sl->str == 'M' || *sl->str == 'X')) { - add_str_list(&di->any.hddb1, sl->str + 2); - continue; - } - - if(di) - di = di->next = new_mem(sizeof *di); - else - di = di0 = new_mem(sizeof *di); - - switch(*sl->str) { - case 'd': - di->any.type = di_display; - break; - - case 'm': - di->module.modprobe = 1; - case 'i': - di->any.type = di_module; - break; - - case 'p': - di->any.type = di_mouse; - break; - - case 'x': - di->any.type = di_x11; - break; - - default: - di->any.type = di_any; - } - - s = new_str(sl->str + 2); - for(t0 = s; (t = strsep(&t0, "|")); ) { - add_str_list(&di->any.hddb0, t); - } - free_mem(s); - } - - return di0; -} - - -driver_info_t *kbd_driver(hd_data_t *hd_data, hd_t *hd) -{ - driver_info_t *di; - driver_info_kbd_t *ki; - int arch = hd_cpu_arch(hd_data); - unsigned u; - char *s1, *s2; - hd_t *hd_tmp; - usb_t *usb; - - /* country codes - 1 Arabic - 2 Belgian - 3 Canadian-Bilingual - 4 Canadian-French - 5 Czech Republic - 6 Danish - 7 Finnish - 8 French - 9 German - 10 Greek - 11 Hebrew - 12 Hungary - 13 International (ISO) - 14 Italian - 15 Japan (Katakana) - 16 Korean - 17 Latin American - 18 Netherlands/Dutch - 19 Norwegian - 20 Persian (Farsi) - 21 Poland - 22 Portuguese - 23 Russia - 24 Slovakia - 25 Spanish - 26 Swedish - 27 Swiss/French - 28 Swiss/German - 29 Switzerland - 30 Taiwan - 31 Turkish - 32 UK - 33 US - 34 Yugoslavia - */ - static struct { - unsigned country; - char *layout; - char *keymap; - } country_code[] = { - { 5, "cs", "cz-us-qwertz" }, - { 8, "fr", "fr-latin1" }, - { 9, "de", "de-latin1-nodeadkeys" }, - { 10, "gr", "gr" }, - { 14, "it", "it" }, - { 18, "nl", "us" }, - { 23, "ru", "ru1" }, - { 25, "es", "es" }, - { 32, "uk", "uk" }, - { 33, "us", "us" } - }; - - if(hd->sub_class.id == sc_keyboard_console) return NULL; - - di = new_mem(sizeof *di); - di->kbd.type = di_kbd; - ki = &(di->kbd); - - switch(arch) { - case arch_intel: - case arch_x86_64: - case arch_alpha: - ki->XkbRules = new_str("xfree86"); - ki->XkbModel = new_str("pc104"); - break; - - case arch_ppc: - case arch_ppc64: - ki->XkbRules = new_str("xfree86"); - ki->XkbModel = new_str("macintosh"); - for(hd_tmp = hd_data->hd; hd_tmp; hd_tmp = hd_tmp->next) { - if( - hd_tmp->base_class.id == bc_internal && - hd_tmp->sub_class.id == sc_int_cpu && - hd_tmp->detail && - hd_tmp->detail->type == hd_detail_cpu && - hd_tmp->detail->cpu.data - ) { - s1 = hd_tmp->detail->cpu.data->vend_name; - if(s1 && (strstr(s1, "CHRP ") == s1 || strstr(s1, "PReP ") == s1)) { - free_mem(ki->XkbModel); - ki->XkbModel = new_str("pc104"); - } - } - } - break; - - case arch_sparc: - case arch_sparc64: - if(hd->vendor.id == MAKE_ID(TAG_SPECIAL, 0x0202)) { - ki->XkbRules = new_str("sun"); - u = ID_VALUE(hd->device.id); - if(u == 4) ki->XkbModel = new_str("type4"); - if(u == 5) { - ki->XkbModel = new_str(ID_VALUE(hd->sub_device.id) == 2 ? "type5_euro" : "type5"); - } - s1 = s2 = NULL; - - switch(hd->prog_if.id) { - case 0: case 1: case 33: case 34: case 80: case 81: - default: - s1 = "us"; s2 = "sunkeymap"; - break; - - case 2: - s1 = "fr"; s2 = "sunt5-fr-latin1"; // fr_BE? - break; - - case 3: - s1 = "ca"; - break; - - case 4: case 36: case 83: - s1 = "dk"; - break; - - case 5: case 37: case 84: - s1 = "de"; s2 = "sunt5-de-latin1"; - break; - - case 6: case 38: case 85: - s1 = "it"; - break; - - case 7: case 39: case 86: - s1 = "nl"; - break; - - case 8: case 40: case 87: - s1 = "no"; - if(u == 4) s2 = "sunt4-no-latin1"; - break; - - case 9: case 41: case 88: - s1 = "pt"; - break; - - case 10: case 42: case 89: - s1 = "es"; - s2 = u == 4 ? "sunt4-es" : "sunt5-es"; - break; - - case 11: case 43: case 90: - s1 = "se"; s2 = "sunt5-fi-latin1"; // se is swedish, not fi - break; - - case 12: case 44: case 91: - s1 = "fr"; s2 = "sunt5-fr-latin1"; // fr_CH - break; - - case 13: case 45: case 92: - s1 = "de"; s2 = "sunt5-de-latin1"; // de_CH - break; - - case 14: case 46: case 93: - s1 = "gb"; s2 = "sunt5-uk"; - break; - - case 16: case 47: case 94: - s1 = "ko"; - break; - - case 17: case 48: case 95: - s1 = "tw"; - break; - - case 32: case 49: case 96: - s1 = "jp"; - break; - - case 50: case 97: - s1 = "fr"; s2 = "sunt5-fr-latin1"; // fr_CA - break; - - case 51: - s1 = "hu"; - break; - - case 52: - s1 = "pl"; s2 = "sun-pl"; - break; - - case 53: - s1 = "cs"; - break; - - case 54: - s1 = "ru"; s2 = "sunt5-ru"; - break; - } - ki->XkbLayout = new_str(s1); - ki->keymap = new_str(s2); - } - else { - ki->XkbRules = new_str("xfree86"); - ki->XkbModel = new_str("pc104"); - } - break; - - default: - ki->XkbRules = new_str("xfree86"); - } - - if( - hd->bus.id == bus_usb && - hd->detail && - hd->detail->type == hd_detail_usb && - (usb = hd->detail->usb.data) && - usb->country - ) { - for(u = 0; u < sizeof country_code / sizeof *country_code; u++) { - if(country_code[u].country == usb->country) { - if(!ki->XkbLayout) ki->XkbLayout = new_str(country_code[u].layout); - if(!ki->keymap) ki->keymap = new_str(country_code[u].keymap); - break; - } - } - } - - return di; -} - - -driver_info_t *monitor_driver(hd_data_t *hd_data, hd_t *hd) -{ - driver_info_t *di = NULL; - driver_info_display_t *ddi; - monitor_info_t *mi; - hd_res_t *res; - unsigned width = 640, height = 480; - - if( - hd->detail && - hd->detail->type == hd_detail_monitor && - (mi = hd->detail->monitor.data) && - mi->min_hsync - ) { - di = new_mem(sizeof *di); - di->display.type = di_display; - ddi = &(di->display); - - ddi->min_vsync = mi->min_vsync; - ddi->max_vsync = mi->max_vsync; - ddi->min_hsync = mi->min_hsync; - ddi->max_hsync = mi->max_hsync; - - for(res = hd->res; res; res = res->next) { - if(res->any.type == res_monitor) { - if(res->monitor.width * res->monitor.height > width * height ) { - width = res->monitor.width; - height = res->monitor.height; - } - } - } - - ddi->width = width; - ddi->height = height; - } - - return di; -} - - -#if WITH_ISDN - -#if 0 -int chk_free_biosmem(hd_data_t *hd_data, unsigned addr, unsigned len) -{ - unsigned u; - unsigned char c; - - addr -= hd_data->bios_rom.start; - if( - !hd_data->bios_rom.data || - addr >= hd_data->bios_rom.size || - addr + len > hd_data->bios_rom.size - ) return 0; - - for(c = 0xff, u = addr; u < addr + len; u++) { - c &= hd_data->bios_rom.data[u]; - } - - return c == 0xff ? 1 : 0; -} - -isdn_parm_t *new_isdn_parm(isdn_parm_t **ip) -{ - while(*ip) ip = &(*ip)->next; - - return *ip = new_mem(sizeof **ip); -} -#endif - -driver_info_t *isdn_driver(hd_data_t *hd_data, hd_t *hd, cdb_isdn_card *cic) -{ - driver_info_t *di0, *di; - cdb_isdn_vario *civ; -/* hd_res_t *res; - uint64_t i, irqs, irqs2; - int irq_val, pnr; -*/ - int drv; - str_list_t *sl, *sl0; - - if(!cic) return NULL; - - di0 = new_mem(sizeof *di0); - - drv = cic->vario; - di = NULL; - - while((civ = hd_cdbisdn_get_vario(drv))) { - drv = civ->next_vario; - if (di) { - di->next = new_mem(sizeof *di); - di = di->next; - } else { - di = di0; - } - di->isdn.type = di_isdn; - di->isdn.i4l_type = civ->typ; - di->isdn.i4l_subtype = civ->subtyp; - di->isdn.i4l_name = new_str(cic->lname); - - if(civ->need_pkg && *civ->need_pkg) { - sl0 = hd_split(',', (char *) civ->need_pkg); - for(sl = sl0; sl; sl = sl->next) { - if(!search_str_list(hd->requires, sl->str)) { - add_str_list(&hd->requires, sl->str); - } - } - free_str_list(sl0); - } - - if(hd->bus.id == bus_pci) continue; -#if 0 - pnr = 1; - civ = hd_cdbisdn_get_vario(cic->vario); - if (!civ) continue; - if (civ->irq && civ->irq[0]) { - ip = new_isdn_parm(&di->isdn.params); - ip->name = new_str("IRQ"); - ip->type = CDBISDN_P_IRQ; - } - if (civ->io && civ->io[0]) { - ip = new_isdn_parm(&di->isdn.params); - ip->name = new_str("IO"); - ip->type = CDBISDN_P_IO; - } - if (civ->membase && civ->membase[0]) { - ip = new_isdn_parm(&di->isdn.params); - ip->name = new_str("MEMBASE"); - ip->type = CDBISDN_P_MEM; - } - while((ipi = hd_ihw_get_parameter(ici->handle, pnr++))) { - ip = new_isdn_parm(&di->isdn.params); - ip->name = new_str(ipi->name); - ip->type = ipi->type & P_TYPE_MASK; - ip->flags = ipi->flags & P_PROPERTY_MASK; - ip->def_value = ipi->def_value; - if(ipi->list) ip->alt_values = *ipi->list; - ip->alt_value = new_mem(ip->alt_values * sizeof *ip->alt_value); - for(i = 0; i < ip->alt_values; i++) { - ip->alt_value[i] = ipi->list[i + 1]; - } - ip->valid = 1; - - if((ip->flags & P_SOFTSET)) { - switch(ip->type) { - case P_IRQ: - update_irq_usage(hd_data); - irqs = 0; - for(i = 0; i < ip->alt_values; i++) { - irqs |= 1ull << ip->alt_value[i]; - } - irqs &= ~(hd_data->used_irqs | hd_data->assigned_irqs); -#ifdef __i386__ - irqs &= 0xffffull; /* max. 16 on intel */ - /* - * The point is, that this is relevant for isa boards only - * and those have irq values < 16 anyway. So it really - * doesn't matter if we mask with 0xffff or not. - */ -#endif - if(!irqs) { - ip->conflict = 1; - ip->valid = 0; - } - else { - irqs2 = irqs & ~0xc018ull; - /* see if we can avoid irqs 3,4,14,15 */ - if(irqs2) irqs = irqs2; - irq_val = -1; - /* try default value first */ - if(ip->def_value && (irqs & (1ull << ip->def_value))) { - irq_val = ip->def_value; - } - else { - for(i = 0; i < 64 && irqs; i++, irqs >>= 1) { - if((irqs & 1)) irq_val = i; - } - } - if(irq_val >= 0) { - ip->value = irq_val; - hd_data->assigned_irqs |= 1ull << irq_val; - } - else { - ip->valid = 0; - } - } - break; - case P_MEM: - if(!hd_data->bios_rom.data) { - if(ip->def_value) { - ip->value = ip->def_value; - } - } - else { - /* ###### 0x2000 is just guessing -> should be provided by libihw */ - if(ip->def_value && chk_free_biosmem(hd_data, ip->def_value, 0x2000)) { - ip->value = ip->def_value; - } - else { - for(i = ip->alt_values - 1; i >= 0; i--) { - if(chk_free_biosmem(hd_data, ip->alt_value[i], 0x2000)) { - ip->value = ip->alt_value[i]; - break; - } - } - } - } - if(!ip->value) ip->conflict = 1; - break; - default: - ip->valid = 0; - } - } - else if((ip->flags & P_DEFINE)) { - res = NULL; - switch(ip->type) { - case P_IRQ: - res = get_res(hd, res_irq, 0); - if(res) ip->value = res->irq.base; - break; - case P_MEM: - res = get_res(hd, res_mem, 0); - if(res) ip->value = res->mem.base; - break; - case P_IO: - res = get_res(hd, res_io, 0); - if(res) ip->value = res->io.base; - break; - case P_IO0: - case P_IO1: - case P_IO2: - res = get_res(hd, res_io, ip->type - P_IO0); - if(res) ip->value = res->io.base; - break; - // ##### might break for 64bit pci entries? - case P_BASE0: - case P_BASE1: - case P_BASE2: - case P_BASE3: - case P_BASE4: - case P_BASE5: - res = get_res(hd, res_mem, ip->type - P_BASE0); - if(res) ip->value = res->mem.base; - break; - default: - ip->valid = 0; - } - if(!res) ip->valid = 0; - } - } -#endif - } - if(!di) di0 = free_mem(di0); - - return di0; -} - -driver_info_t *dsl_driver(hd_data_t *hd_data, hd_t *hd, cdb_isdn_card *cic) -{ - driver_info_t *di0, *di; - cdb_isdn_vario *civ; - int drv; - str_list_t *sl, *sl0; - - if(!cic) return NULL; - - di0 = new_mem(sizeof *di0); - - drv = cic->vario; - di = NULL; - - while((civ = hd_cdbisdn_get_vario(drv))) { - drv = civ->next_vario; - if (di) { - di->next = new_mem(sizeof *di); - di = di->next; - } else { - di = di0; - } - di->dsl.type = di_dsl; - if(civ->interface && *civ->interface) { - if (!strcmp(civ->interface, "CAPI20")) { - di->dsl.mode = new_str("capiadsl"); - if(civ->mod_name && *civ->mod_name) - di->dsl.name = new_str(civ->mod_name); - else - di->dsl.name = new_str("unknown"); - } else if (!strcmp(civ->interface, "pppoe")) { - di->dsl.mode = new_str("pppoe"); - if(civ->mod_name && *civ->mod_name) - di->dsl.name = new_str(civ->mod_name); - else - di->dsl.name = new_str("none"); - } else { - di->dsl.mode = new_str("unknown"); - di->dsl.name = new_str("unknown"); - } - } else { - di->dsl.mode = new_str("unknown"); - di->dsl.name = new_str("unknown"); - } - - if(civ->need_pkg && *civ->need_pkg) { - sl0 = hd_split(',', (char *) civ->need_pkg); - for(sl = sl0; sl; sl = sl->next) { - if(!search_str_list(hd->requires, sl->str)) { - add_str_list(&hd->requires, sl->str); - } - } - free_str_list(sl0); - } - - if(hd->bus.id == bus_pci) continue; - } - if(!di) di0 = free_mem(di0); - - return di0; -} - -#endif /* WITH_ISDN */ - - -hd_res_t *get_res(hd_t *hd, enum resource_types t, unsigned index) -{ - hd_res_t *res; - - for(res = hd->res; res; res = res->next) { - if(res->any.type == t) { - if(!index) return res; - index--; - } - } - - return NULL; -} - - -driver_info_t *reorder_x11(driver_info_t *di0, char *info) -{ - driver_info_t *di, *di_new, **di_list; - int i, dis, found; - - for(dis = 0, di = di0; di; di = di->next) dis++; - - di_list = new_mem(dis * sizeof *di_list); - - for(i = 0, di = di0; di; di = di->next) { - di_list[i++] = di; - } - - di = di_new = NULL; - for(i = found = 0; i < dis; i++) { - if( - !strcmp(di_list[i]->x11.xf86_ver, info) || - !strcmp(di_list[i]->x11.server, info) - ) { - found = 1; - if(di) { - di = di->next = di_list[i]; - } - else { - di = di_new = di_list[i]; - } - di->next = NULL; - di_list[i] = NULL; - } - } - - for(i = 0; i < dis; i++) { - if(di_list[i]) { - if(di) { - di = di->next = di_list[i]; - } - else { - di = di_new = di_list[i]; - } - di->next = NULL; - di_list[i] = NULL; - } - } - - free_mem(di_list); - - if(!found && strlen(info) > 1) { - free_driver_info(di_new); - di_new = new_mem(sizeof *di_new); - di_new->any.type = di_x11; - di_new->x11.server = new_str(info); - di_new->x11.xf86_ver = new_str(*info >= 'A' && *info <= 'Z' ? "3" : "4"); - } - - return di_new; -} - - -void expand_driver_info(hd_data_t *hd_data, hd_t *hd) -{ - int i; - unsigned u1, u2; - char *s, *t, *t0; - driver_info_t *di; - str_list_t *sl, *sl1, *sl2, *cmd; - - if(!hd || !hd->driver_info) return; - - for(di = hd->driver_info; di; di = di->next) { - switch(di->any.type) { - case di_display: - for(i = 0, sl = di->display.hddb0; sl; sl = sl->next, i++) { - if(i == 0 && sscanf(sl->str, "%ux%u", &u1, &u2) == 2) { - di->display.width = u1; - di->display.height = u2; - } - else if(i == 1 && sscanf(sl->str, "%u-%u", &u1, &u2) == 2) { - di->display.min_vsync = u1; - di->display.max_vsync = u2; - } - else if(i == 2 && sscanf(sl->str, "%u-%u", &u1, &u2) == 2) { - di->display.min_hsync = u1; - di->display.max_hsync = u2; - } - else if(i == 3 && sscanf(sl->str, "%u", &u1) == 1) { - di->display.bandwidth = u1; - } - } - break; - - case di_module: - for(di->module.active = 1, sl = di->module.hddb0; sl; sl = sl->next) { - t0 = s = new_str(sl->str); - - t = strsep(&t0, " "); - - add_str_list(&di->module.names, t); - di->module.active &= ( - hd_module_is_active(hd_data, t) | - (search_str_list(hd->drivers, t) ? 1 : 0) - ); - - if(t0) { - add_str_list(&di->module.mod_args, module_cmd(hd, t0)); - } - else { - add_str_list(&di->module.mod_args, NULL); - } - - free_mem(s); - } - for(sl = di->module.hddb1; sl; sl = sl->next) { - s = module_cmd(hd, sl->str); - if(s) str_printf(&di->module.conf, -1, "%s\n", s); - } - break; - - case di_mouse: - di->mouse.buttons = di->mouse.wheels = -1; - u1 = 0; - if( - hd->compat_vendor.id == MAKE_ID(TAG_SPECIAL, 0x0210) && - ID_TAG(hd->compat_device.id) == TAG_SPECIAL - ) { - u1 = hd->compat_device.id; - } - if( - hd->vendor.id == MAKE_ID(TAG_SPECIAL, 0x0210) && - ID_TAG(hd->device.id) == TAG_SPECIAL - ) { - u1 = hd->device.id; - } - if(u1) { - di->mouse.wheels = ID_VALUE(u1) >> 4; - di->mouse.buttons = ID_VALUE(u1) & 15; - } - for(i = 0, sl = di->mouse.hddb0; sl; sl = sl->next, i++) { - if(i == 0) { - di->mouse.xf86 = new_str(sl->str); - } - else if(i == 1) { - di->mouse.gpm = new_str(sl->str); - } - else if(i == 2 && *sl->str) { - di->mouse.buttons = strtol(sl->str, NULL, 10); - } - else if(i == 3 && *sl->str) { - di->mouse.wheels = strtol(sl->str, NULL, 10); - } - } - break; - - case di_x11: - for(i = 0, sl = di->x11.hddb0; sl; sl = sl->next, i++) { - if(i == 0) { - di->x11.xf86_ver = new_str(sl->str); - } - else if(i == 1) { - di->x11.server = new_str(sl->str); - } - else if(i == 2) { - if(!strcmp(sl->str, "3d")) di->x11.x3d = 1; - } -#if 0 - else if(i == 3) { - s = new_str(sl->str); - for(t0 = s; (t = strsep(&t0, ",")); ) { - add_str_list(&di->x11.packages, t); - } - free_mem(s); - } -#endif - else if(i == 4) { - s = new_str(sl->str); - for(t0 = s; (t = strsep(&t0, ",")); ) { - add_str_list(&di->x11.extensions, t); - } - free_mem(s); - } - else if(i == 5) { - s = new_str(sl->str); - for(t0 = s; (t = strsep(&t0, ",")); ) { - add_str_list(&di->x11.options, t); - } - free_mem(s); - } - else if(i == 6) { - for(sl2 = sl1 = hd_split(',', sl->str); sl2; sl2 = sl2->next) { - u1 = strtoul(sl2->str, NULL, 0); - switch(u1) { - case 8: - di->x11.colors.c8 = 1; - di->x11.colors.all |= (1 << 0); - break; - - case 15: - di->x11.colors.c15 = 1; - di->x11.colors.all |= (1 << 1); - break; - - case 16: - di->x11.colors.c16 = 1; - di->x11.colors.all |= (1 << 2); - break; - - case 24: - di->x11.colors.c24 = 1; - di->x11.colors.all |= (1 << 3); - break; - - case 32: - di->x11.colors.c32 = 1; - di->x11.colors.all |= (1 << 4); - break; - } - } - free_str_list(sl1); - } - else if(i == 7) { - di->x11.dacspeed = strtol(sl->str, NULL, 10); - } - else if(i == 8) { - di->x11.script = new_str(sl->str); - } - } - for(i = 0, sl = di->x11.hddb1; sl; sl = sl->next, i++) { - add_str_list(&di->x11.raw, sl->str); - } -#if 0 - // ######## for compatibility - for(sl = hd->requires; sl; sl = sl->next) { - add_str_list(&di->x11.packages, sl->str); - } -#endif - break; - - default: - break; - } - } - - di = hd->driver_info; - if(di && di->any.type == di_x11 && !hd_probe_feature(hd_data, pr_ignx11)) { - cmd = get_cmdline(hd_data, "x11"); - if(cmd && *cmd->str) { - hd->driver_info = reorder_x11(di, cmd->str); - } - free_str_list(cmd); - } -} - - -char *module_cmd(hd_t *hd, char *cmd) -{ - static char buf[256]; - char *s = buf; - int idx, ofs; - hd_res_t *res; - - // skip inactive PnP cards - // ##### Really necessary here? - if( - hd->is.isapnp && - hd->detail && - hd->detail->isapnp.data && - !(hd->detail->isapnp.data->flags & (1 << isapnp_flag_act)) - ) return NULL; - - *buf = 0; - while(*cmd) { - if(sscanf(cmd, "%n", &idx, &ofs) >= 1) { - if((res = get_res(hd, res_io, idx))) { - s += sprintf(s, "0x%02"PRIx64, res->io.base); - cmd += ofs; - } - else { - return NULL; - } - } - else if(sscanf(cmd, "%n", &idx, &ofs) >= 1) { - if((res = get_res(hd, res_irq, idx))) { - s += sprintf(s, "%u", res->irq.base); - cmd += ofs; - } - else { - return NULL; - } - } - else { - *s++ = *cmd++; - } - - if(s - buf > (int) sizeof buf - 20) return NULL; - } - - *s = 0; - return buf; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -char *hid_tag_name(int tag) -{ - return (unsigned) tag < sizeof hid_tag_names / sizeof *hid_tag_names ? hid_tag_names[tag] : ""; -} - -char *hid_tag_name2(int tag) -{ - return (unsigned) tag < sizeof hid_tag_names2 / sizeof *hid_tag_names2 ? hid_tag_names2[tag] : ""; -} - diff --git a/src/hwinfo/src/hd/hddb.h b/src/hwinfo/src/hd/hddb.h deleted file mode 100644 index f8d8956f5c..0000000000 --- a/src/hwinfo/src/hd/hddb.h +++ /dev/null @@ -1,7 +0,0 @@ -void hddb_init(hd_data_t *hd_data); - -unsigned device_class(hd_data_t *hd_data, unsigned vendor, unsigned device); -unsigned sub_device_class(hd_data_t *hd_data, unsigned vendor, unsigned device, unsigned sub_vendor, unsigned sub_device); - -char *hid_tag_name(int tag); -char *hid_tag_name2(int tag); diff --git a/src/hwinfo/src/hd/hddb_int.h b/src/hwinfo/src/hd/hddb_int.h deleted file mode 100644 index 2636b68a14..0000000000 --- a/src/hwinfo/src/hd/hddb_int.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * - * type defs for internal data base - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#define DATA_VALUE(a) ((a) & ~(-1 << 28)) -#define DATA_FLAG(a) (((a) >> 28) & 0xf) -#define MAKE_DATA(a, b) ((a << 28) | (b)) - -#define FLAG_ID 0 -#define FLAG_RANGE 1 -#define FLAG_MASK 2 -#define FLAG_STRING 3 -#define FLAG_REGEXP 4 -/* 5 - 7 reserved */ -#define FLAG_CONT 8 /* bit mask, _must_ be bit 31 */ - - -typedef enum hddb_entry_e { - he_other, he_bus_id, he_baseclass_id, he_subclass_id, he_progif_id, - he_vendor_id, he_device_id, he_subvendor_id, he_subdevice_id, he_rev_id, - he_bus_name, he_baseclass_name, he_subclass_name, he_progif_name, - he_vendor_name, he_device_name, he_subvendor_name, he_subdevice_name, - he_rev_name, he_serial, he_driver, he_requires /* 21 */, - - he_detail_ccw_data_cu_model, - /* add new entries _here_! */ - - he_nomask, - - /* if he_nomask exceeds 31, adjust entry_mask_t & hddb_entry_mask_t */ - - he_class_id = he_nomask, he_driver_module_insmod, he_driver_module_modprobe, - he_driver_module_config, he_driver_xfree, he_driver_xfree_config, - he_driver_mouse, he_driver_display, he_driver_any -} hddb_entry_t; - -static hddb_entry_t hddb_is_numeric[] = { - he_bus_id, he_baseclass_id, he_subclass_id, he_progif_id, he_vendor_id, - he_device_id, he_subvendor_id, he_subdevice_id, he_rev_id, he_detail_ccw_data_cu_model -}; - -static char *hddb_entry_strings[] = { - "other", "bus.id", "baseclass.id", "subclass.id", "progif.id", - "vendor.id", "device.id", "subvendor.id", "subdevice.id", "rev.id", - "bus.name", "baseclass.name", "subclass.name", "progif.name", - "vendor.name", "device.name", "subvendor.name", "subdevice.name", - "rev.name", "serial", "driver", "requires", - "detail.ccw.data.cu_model", - "class.id", "driver.module.insmod", "driver.module.modprobe", - "driver.module.config", "driver.xfree", "driver.xfree.config", - "driver.mouse", "driver.display", "driver.any" -}; - diff --git a/src/hwinfo/src/hd/hdp.c b/src/hwinfo/src/hd/hdp.c deleted file mode 100644 index 65dffef7c6..0000000000 --- a/src/hwinfo/src/hd/hdp.c +++ /dev/null @@ -1,1262 +0,0 @@ -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "hdp.h" -#include "hddb.h" -#include "smbios.h" - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * This module provides a function that prints a hardware entry. - * This is useful for debugging or to provide the user with some fancy info. - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#ifndef LIBHD_TINY - -#define dump_line(x0, x1...) fprintf(f, "%*s" x0, ind, "", x1) -#define dump_line_str(x0...) fprintf(f, "%*s%s", ind, "", x0) -#define dump_line0(x0...) fprintf(f, x0) - -static int ind = 0; /* output indentation */ - -static void dump_normal(hd_data_t *, hd_t *, FILE *); -static void dump_cpu(hd_data_t *, hd_t *, FILE *); -static void dump_bios(hd_data_t *, hd_t *, FILE *); -static void dump_prom(hd_data_t *, hd_t *, FILE *); -static void dump_sys(hd_data_t *, hd_t *, FILE *); - -static char *dump_hid(hd_data_t *hd_data, hd_id_t *hid, int format, char *buf, int buf_size); -static char *dump_hid2(hd_data_t *hd_data, hd_id_t *hid1, hd_id_t *hid2, char *buf, int buf_size); -static char *print_dev_num(hd_dev_num_t *d); - -/* - * Dump a hardware entry to FILE *f. - */ -void hd_dump_entry(hd_data_t *hd_data, hd_t *h, FILE *f) -{ - char *s, *a0, *a1, *a2, *s1, *s2; - char buf1[32], buf2[32]; - hd_t *hd_tmp; - int i, j; - str_list_t *sl; - -#ifdef LIBHD_MEMCHECK - { - if(libhd_log) - fprintf(libhd_log, "; %s\t%p\t%p\n", __FUNCTION__, CALLED_FROM(hd_dump_entry, hd_data), hd_data); - } -#endif - - if(!h) return; - - s = ""; - if(h->is.agp) s = "(AGP)"; - // pci_flag_pm: dump_line0(", supports PM"); - if(h->is.isapnp) s = "(PnP)"; - - a0 = h->bus.name; - a2 = NULL; - a1 = h->sub_class.name ?: h->base_class.name; - if(a1 && h->prog_if.name) { - str_printf(&a2, 0, "%s (%s)", a1, h->prog_if.name); - } - else { - a2 = new_str(a1 ?: "?"); - } - dump_line( - "%02d: %s%s %02x.%x: %02x%02x %s\n", - h->idx, a0 ? a0 : "?", s, h->slot, h->func, - h->base_class.id, h->sub_class.id, a2 - ); - - ind += 2; - - if((hd_data->debug & HD_DEB_CREATION)) { - s = mod_name_by_idx(h->module); - if(!s) sprintf(s = buf1, "%u", h->module); - if(h->count) - sprintf(buf2, ".%u", h->count); - else - *buf2 = 0; - dump_line("[Created at %s.%u%s]\n", s, h->line, buf2); - } - - if(hd_data->flags.dformat == 1) { - dump_line("ClassName: \"%s\"\n", a2); - dump_line("Bus: %d\n", h->slot >> 8); - dump_line("Slot: %d\n", h->slot & 0xff); - dump_line("Function: %d\n", h->func); - } - - a2 = free_mem(a2); - - if((hd_data->debug & HD_DEB_CREATION) && h->unique_id) { - dump_line("Unique ID: %s\n", h->unique_id); - } - - if(hd_data->debug == -1u && h->old_unique_id) { - dump_line("Old Unique ID: %s\n", h->old_unique_id); - } - - if((hd_data->debug & HD_DEB_CREATION) && h->parent_id) { - dump_line("Parent ID: %s\n", h->parent_id); - } - - if(hd_data->debug == -1u && h->child_ids) { - s = hd_join(", ", h->child_ids); - dump_line("Child IDs: %s\n", s); - s = free_mem(s); - } - - if(h->sysfs_id) { - dump_line("SysFS ID: %s\n", h->sysfs_id); - } - - if(h->sysfs_bus_id) { - dump_line("SysFS BusID: %s\n", h->sysfs_bus_id); - } - - if(h->sysfs_device_link) { - dump_line("SysFS Device Link: %s\n", h->sysfs_device_link); - } - - if(h->hw_class && (s = hd_hw_item_name(h->hw_class))) { - dump_line("Hardware Class: %s\n", s); - } - - if(hd_data->debug == -1u) { - for(i = j = 0; i < (int) hw_all; i++) { - if(i != hw_unknown && hd_is_hw_class(h, i) && (s = hd_hw_item_name(i))) { - if(!j) { - dump_line("HW Class List: %s", s); - } - else { - dump_line0(", %s", s); - } - j = 1; - } - } - if(j) dump_line0("\n"); - } - - if(h->base_class.id == bc_internal && h->sub_class.id == sc_int_cpu) { - dump_cpu(hd_data, h, f); - } - else if(h->base_class.id == bc_internal && h->sub_class.id == sc_int_bios) { - dump_bios(hd_data, h, f); - } - else if(h->base_class.id == bc_internal && h->sub_class.id == sc_int_prom) { - dump_prom(hd_data, h, f); - } - else { - dump_normal(hd_data, h, f); - } - - s1 = s2 = NULL; - if(h->is.notready) { - if(h->base_class.id == bc_storage_device) { - s1 = "no medium"; - } - else { - s1 = "not configured"; - } - } - if(h->is.softraiddisk) s2 = "soft raid"; - if(!s1) { s1 = s2; s2 = NULL; } - - if(s1) { - dump_line("Drive status: %s%s%s\n", s1, s2 ? ", " : "", s2 ?: ""); - } - - if(h->extra_info) { - dump_line_str("Extra Info: "); - for(i = 0, sl = h->extra_info; sl; sl = sl->next) { - dump_line0("%s%s", i ? ", " : "", sl->str); - i = 1; - } - dump_line0("\n"); - } - - if( - hd_data->debug && ( - h->status.configured || - h->status.available || - h->status.needed || - h->status.active || - h->status.invalid || - h->is.manual - ) - ) { - dump_line_str("Config Status: "); - i = 0; - - if(h->status.invalid) { - dump_line0("invalid"); - i++; - } - - if(h->is.manual) { - dump_line0("%smanual", i ? ", " : ""); - i++; - } - - if(h->status.configured && (s = hd_status_value_name(h->status.configured))) { - dump_line0("%scfg=%s", i ? ", " : "", s); - i++; - } - - if(h->status.available && (s = hd_status_value_name(h->status.available))) { - dump_line0("%savail=%s", i ? ", " : "", s); - i++; - } - - if(h->status.needed && (s = hd_status_value_name(h->status.needed))) { - dump_line0("%sneed=%s", i ? ", " : "", s); - i++; - } - - if(h->status.active && (s = hd_status_value_name(h->status.active))) { - dump_line0("%sactive=%s", i ? ", " : "", s); - i++; - } - - dump_line0("\n"); - } - - if(hd_data->debug == -1u && h->config_string) { - dump_line("Configured as: \"%s\"\n", h->config_string); - } - - if( - h->attached_to && - (hd_tmp = hd_get_device_by_idx(hd_data, h->attached_to)) - ) { - s = hd_tmp->sub_class.name ?: hd_tmp->base_class.name; - dump_line("Attached to: #%u (%s)\n", h->attached_to, s ?: "?"); - } - - if(h->detail && h->detail->ccw.type==hd_detail_ccw) - { - dump_line("LCSS: %x.%x\n",h->detail->ccw.data->lcss >> 8, h->detail->ccw.data->lcss & 0xf); - dump_line("CU Model: 0x%x\n",h->detail->ccw.data->cu_model); - dump_line("Device Model: 0x%x\n",h->detail->ccw.data->dev_model); - } - -#if defined(__s390__) || defined(__s390x__) - if(h->detail && h->detail->scsi.type==hd_detail_scsi) - { - if(h->detail->scsi.data->wwpn != (uint64_t)-1) - dump_line("WWPN: 0x%llx\n",(unsigned long long)h->detail->scsi.data->wwpn); - if(h->detail->scsi.data->wwpn != (uint64_t)-1) - dump_line("FCP LUN: 0x%llx\n",(unsigned long long)h->detail->scsi.data->fcp_lun); - dump_line("SCSI Host CCW ID: %s\n",h->detail->scsi.data->controller_id); - } -#endif - - if( - h->base_class.id == bc_storage_device && - h->sub_class.id == sc_sdev_cdrom && - h->detail && - h->detail->type == hd_detail_cdrom && - h->detail->cdrom.data - ) { - cdrom_info_t *ci = h->detail->cdrom.data; - - if(ci->speed) { - dump_line("Drive Speed: %u\n", ci->speed); - } - - if(ci->iso9660.ok) { - if(ci->iso9660.volume) dump_line("Volume ID: \"%s\"\n", ci->iso9660.volume); - if(ci->iso9660.application) dump_line("Application: \"%s\"\n", ci->iso9660.application); - if(ci->iso9660.publisher) dump_line("Publisher: \"%s\"\n", ci->iso9660.publisher); - if(ci->iso9660.preparer) dump_line("Preparer: \"%s\"\n", ci->iso9660.preparer); - if(ci->iso9660.creation_date) dump_line("Creation date: \"%s\"\n", ci->iso9660.creation_date); - } -#if 0 - else { - if(ci->cdrom) { - dump_line_str("Drive status: non-ISO9660 cdrom\n"); - } - else { - dump_line_str("Drive status: no cdrom found\n"); - } - } -#endif - if(ci->el_torito.ok) { - dump_line( - "El Torito info: platform %u, %sbootable\n", - ci->el_torito.platform, - ci->el_torito.bootable ? "" : "not " - ); - dump_line(" Boot Catalog: at sector 0x%04x\n", ci->el_torito.catalog); - if(ci->el_torito.id_string) dump_line(" Id String: \"%s\"\n", ci->el_torito.id_string); - if(ci->el_torito.label) dump_line(" Volume Label: \"%s\"\n", ci->el_torito.label); - { - static char *media[] = { - "none", "1.2MB Floppy", "1.44MB Floppy", "2.88MB Floppy", "Hard Disk" - }; - dump_line( - " Media: %s starting at sector 0x%04x\n", - media[ci->el_torito.media_type < sizeof media / sizeof *media ? ci->el_torito.media_type : 0], - ci->el_torito.start - ); - } - if(ci->el_torito.geo.size) dump_line( - " Geometry (CHS): %u/%u/%u (%u blocks)\n", - ci->el_torito.geo.c, ci->el_torito.geo.h, ci->el_torito.geo.s, ci->el_torito.geo.size - ); - dump_line(" Load: %u bytes", ci->el_torito.load_count * 0x200); - if(ci->el_torito.load_address) { - dump_line0(" at 0x%04x\n", ci->el_torito.load_address); - } - else { - dump_line0("\n"); - } - } - } - -#if 0 - if( - h->base_class.id == bc_storage_device && - h->sub_class.id == sc_sdev_floppy && - h->detail && - h->detail->type == hd_detail_floppy - ) { - floppy_info_t *fi = h->detail->floppy.data; - - if(fi) { - dump_line_str("Drive status: floppy found\n"); - } - else { - dump_line_str("Drive status: no floppy found\n"); - } - } -#endif - - ind -= 2; - - if(h->next) dump_line_str("\n"); -} - - -/* - * print 'normal' hardware entries - */ -void dump_normal(hd_data_t *hd_data, hd_t *h, FILE *f) -{ - int i, j; - char *s; - uint64_t u64; - hd_res_t *res; - char buf[256], c0, c1; - driver_info_t *di; - str_list_t *sl, *sl1, *sl2; - isdn_parm_t *ip; - static char *geo_type_str[] = { "Physical", "Logical", "BIOS EDD", "BIOS Legacy" }; - - if(h->model) dump_line("Model: \"%s\"\n", h->model); - - s = NULL; - switch(h->hotplug) { - case hp_none: - break; - case hp_pcmcia: - s = "PCMCIA"; - break; - case hp_cardbus: - s = "CardBus"; - break; - case hp_pci: - s = "PCI"; - break; - case hp_usb: - s = "USB"; - break; - case hp_ieee1394: - s = "IEEE1394 (FireWire)"; - break; - } - - if(s) { - dump_line("Hotplug: %s\n", s); - } - - if( - (h->hotplug == hp_pcmcia || h->hotplug == hp_cardbus) && - h->hotplug_slot - ) { - dump_line("Socket: %u\n", h->hotplug_slot - 1); - } - - if(h->vendor.id || h->vendor.name || h->device.id || h->device.name) { - if(h->vendor.id || h->vendor.name) { - dump_line("Vendor: %s\n", dump_hid(hd_data, &h->vendor, 1, buf, sizeof buf)); - } - dump_line("Device: %s\n", dump_hid(hd_data, &h->device, 0, buf, sizeof buf)); - } - - if(h->sub_vendor.id || h->sub_device.id || h->sub_device.name || h->sub_vendor.name) { - if(h->sub_vendor.id || h->sub_vendor.name || h->sub_device.id) { - dump_line("SubVendor: %s\n", dump_hid(hd_data, &h->sub_vendor, 1, buf, sizeof buf)); - } - dump_line("SubDevice: %s\n", dump_hid(hd_data, &h->sub_device, 0, buf, sizeof buf)); - } - - if(h->revision.name) { - dump_line("Revision: \"%s\"\n", h->revision.name); - } - else if(h->revision.id) { - dump_line("Revision: 0x%02x\n", h->revision.id); - } - - if(h->serial) { - dump_line("Serial ID: \"%s\"\n", h->serial); - } - - if(h->usb_guid) { - dump_line("USB GUID: %s\n", h->usb_guid); - } - - if(h->compat_vendor.id || h->compat_device.id) { - dump_line( - "Compatible to: %s\n", - dump_hid2(hd_data, &h->compat_vendor, &h->compat_device, buf, sizeof buf) - ); - } - - if(h->base_class.id == bc_internal && h->sub_class.id == sc_int_sys) { - dump_sys(hd_data, h, f); - } - - if(h->drivers) { - s = hd_join("\", \"", h->drivers); - dump_line("Driver: \"%s\"\n", s); - s = free_mem(s); - } - - if(h->broken) { - dump_line_str("Warning: might be broken\n"); - } - - if(hd_data->flags.dformat == 1) { - if(h->unix_dev_name) { - dump_line("Device File: %s\n", h->unix_dev_name); - } - if(h->unix_dev_name2) { - dump_line("Alternative Device File: %s\n", h->unix_dev_name2); - } - } - else { - s = h->unix_dev_name; - if(!s) s = h->unix_dev_name2; - if(s) { - dump_line("Device File: %s", s); - if(h->unix_dev_name2) { - dump_line0(" (%s)", h->unix_dev_name2); - } - dump_line0("\n"); - } - - } - - /* only if there are more than one */ - if(h->unix_dev_names && h->unix_dev_names->next) { - s = hd_join(", ", h->unix_dev_names); - dump_line("Device Files: %s\n", s); - s = free_mem(s); - } - - if(h->unix_dev_num.type) { - dump_line("Device Number: %s", print_dev_num(&h->unix_dev_num)); - if(h->unix_dev_num2.type) { - dump_line0(" (%s)", print_dev_num(&h->unix_dev_num2)); - } - dump_line0("\n"); - } - - if(h->rom_id) { -#if defined(__i386__) || defined (__x86_64__) - dump_line("BIOS id: %s\n", h->rom_id); -#endif -#if defined(__PPC__) || defined(__sparc__) - dump_line("PROM id: %s\n", h->rom_id); -#endif -#if defined(__s390__) || defined(__s390x__) - dump_line("IUCV user: %s\n", h->rom_id); -#endif - } - - if(h->tag.ser_skip) { - dump_line_str("Tags: ser_skip\n"); - } - - if( - h->is.zip || - h->is.cdr || h->is.cdrw || h->is.dvd || - h->is.dvdr || h->is.dvdram || h->is.pppoe || h->is.wlan - ) { - dump_line_str("Features:"); - i = 0; - if(h->is.zip) dump_line0("%s ZIP", i++ ? "," : ""); - if(h->is.cdr) dump_line0("%s CD-R", i++ ? "," : ""); - if(h->is.cdrw) dump_line0("%s CD-RW", i++ ? "," : ""); - if(h->is.dvd) dump_line0("%s DVD", i++ ? "," : ""); - if(h->is.dvdr) dump_line0("%s DVD-R", i++ ? "," : ""); - if(h->is.dvdram) dump_line0("%s DVDRAM", i++ ? "," : ""); - if(h->is.pppoe) dump_line0("%s PPPOE", i++ ? "," : ""); - if(h->is.wlan) dump_line0("%s WLAN", i++ ? "," : ""); - dump_line0("\n"); - } - - for(res = h->res; res; res = res->next) { - switch(res->any.type) { - case res_phys_mem: - u64 = res->phys_mem.range >> 10; - c0 = 'M'; c1 = 'k'; - if(u64 >> 20) { - u64 >>= 10; - c0 = 'G'; c1 = 'M'; - } - if((u64 & 0x3ff)) { - dump_line("Memory Size: %"PRId64" %cB + %"PRId64" %cB\n", u64 >> 10, c0, u64 & 0x3ff, c1); - } - else { - dump_line("Memory Size: %"PRId64" %cB\n", u64 >> 10, c0); - } - break; - - case res_mem: - *(s = buf) = 0; - strcat(buf, res->mem.access == acc_rw ? "rw" : res->mem.access == acc_ro ? "ro" : "wo"); - strcat(buf, res->mem.prefetch == flag_yes ? ",prefetchable" : res->mem.prefetch == flag_no ? ",non-prefetchable" : ""); - if(!res->mem.enabled) strcat(buf, ",disabled"); - if(*s == ',') s++; - if(res->mem.range) { - dump_line( - "Memory Range: 0x%08"PRIx64"-0x%08"PRIx64" (%s)\n", - res->mem.base, res->mem.base + res->mem.range - 1, s - ); - } - else { - dump_line("Memory Range: 0x%08"PRIx64"-??? (%s)\n", res->mem.base, s); - } - break; - - case res_io: - *(s = buf) = 0; - strcat(buf, res->io.access == acc_rw ? "rw" : res->io.access == acc_ro ? "ro" : "wo"); - if(!res->io.enabled) strcat(buf, ",disabled"); - if(*s == ',') s++; - if(res->io.range == 0) { - dump_line("I/O Ports: 0x%02"PRIx64"-??? (%s)\n", res->io.base, s); - } - else if(res->io.range == 1) { - dump_line("I/O Port: 0x%02"PRIx64" (%s)\n", res->io.base, s); - } - else { - dump_line("I/O Ports: 0x%02"PRIx64"-0x%02"PRIx64" (%s)\n", res->io.base, res->io.base + res->io.range -1, s); - } - break; - - case res_irq: - *(s = buf) = 0; - switch(res->irq.triggered) { - case 0: - strcpy(s, "no events"); - break; - - case 1: - strcpy(s, "1 event"); - break; - - default: - sprintf(s, "%u events", res->irq.triggered); - } - if(!res->irq.enabled) { - if(res->irq.triggered) - strcat(s, ","); - else - *s = 0; - strcat(s, "disabled"); - } - dump_line("IRQ: %u (%s)\n", res->irq.base, s); - break; - - case res_dma: - *(s = buf) = 0; - if(!res->dma.enabled) strcpy(buf, " (disabled)"); - dump_line("DMA: %u%s\n", res->dma.base, s); - break; - - case res_monitor: - dump_line( - "Resolution: %ux%u@%uHz%s\n", - res->monitor.width, res->monitor.height, res->monitor.vfreq, - res->monitor.interlaced ? " (interlaced)" : "" - ); - break; - - case res_size: - { - char *s, b0[64], b1[64]; - - switch(res->size.unit) { - case size_unit_cinch: - s = "''"; - snprintf(b0, sizeof b0 - 1, "%s", float2str(res->size.val1, 2)); - snprintf(b1, sizeof b1 - 1, "%s", float2str(res->size.val2, 2)); - break; - - default: - switch(res->size.unit) { - case size_unit_cm: - s = "cm"; - break; - case size_unit_sectors: - s = "sectors"; - break; - case size_unit_kbyte: - s = "kByte"; - break; - default: - s = "some unit"; - } - snprintf(b0, sizeof b0 - 1, "%"PRIu64, res->size.val1); - snprintf(b1, sizeof b1 - 1, "%"PRIu64, res->size.val2); - } - if(!res->size.val2) - dump_line("Size: %s %s\n", b0, s); - else if(res->size.unit == size_unit_sectors) - dump_line("Size: %s %s a %s bytes\n", b0, s, b1); - else - dump_line("Size: %sx%s %s\n", b0, b1, s); - } - break; - - case res_disk_geo: - s = res->disk_geo.geotype < sizeof geo_type_str / sizeof *geo_type_str ? - geo_type_str[res->disk_geo.geotype] : ""; - dump_line( - "Geometry (%s): CHS %u/%u/%u\n", s, - res->disk_geo.cyls, res->disk_geo.heads, res->disk_geo.sectors - ); - if(res->disk_geo.size) { - dump_line("Size (%s): %"PRIu64" sectors\n", s, res->disk_geo.size); - } - break; - - case res_cache: - dump_line("Cache: %u kb\n", res->cache.size); - break; - - case res_baud: - if(res->baud.speed == 0 || res->baud.speed % 100) { - dump_line("Speed: %u bps\n", res->baud.speed); - } - else if(res->baud.speed % 100000) { - dump_line("Speed: %s kbps\n", float2str(res->baud.speed, 3)); - } - else { - dump_line("Speed: %s Mbps\n", float2str(res->baud.speed, 6)); - } - if(res->baud.bits || res->baud.stopbits || res->baud.parity || res->baud.handshake) { - int i = 0; - - dump_line_str("Config: "); - if(res->baud.bits) { - dump_line0("%u bits", res->baud.bits); - i++; - } - if(res->baud.parity) { - dump_line0("%sparity %c", i++ ? ", " : "", res->baud.parity); - } - if(res->baud.stopbits) { - dump_line0("%s%u stopbits", i++ ? ", " : "", res->baud.stopbits); - } - if(res->baud.handshake) { - dump_line0("%shandshake %c", i++ ? ", " : "", res->baud.handshake); - } - dump_line0("\n"); - } - break; - - case res_init_strings: - if(res->init_strings.init1) dump_line("Init1: %s\n", res->init_strings.init1); - if(res->init_strings.init2) dump_line("Init2: %s\n", res->init_strings.init2); - break; - - case res_pppd_option: - dump_line("PPPD Option: %s\n", res->pppd_option.option); - break; - - case res_framebuffer: - dump_line("Mode 0x%04x: %ux%u (+%u), %u bits\n", - res->framebuffer.mode, - res->framebuffer.width, - res->framebuffer.height, - res->framebuffer.bytes_p_line, - res->framebuffer.colorbits - ); - break; - - case res_hwaddr: - dump_line("HW Address: %s\n", res->hwaddr.addr); - break; - - case res_link: - dump_line("Link detected: %s\n", res->link.state ? "yes" : "no"); - break; - - case res_wlan: - if(res->wlan.channels) { - str_list_t *ptr = res->wlan.channels; - dump_line("WLAN channels: %s", ptr->str); - while((ptr=ptr->next)) dump_line0(" %s", ptr->str); - dump_line0("\n"); - } - if(res->wlan.frequencies) { - str_list_t *ptr = res->wlan.frequencies; - dump_line("WLAN frequencies: %s", ptr->str); - while((ptr=ptr->next)) dump_line0(" %s", ptr->str); - dump_line0("\n"); - } - if(res->wlan.bitrates) { - str_list_t *ptr = res->wlan.bitrates; - dump_line("WLAN bitrates: %s", ptr->str); - while((ptr=ptr->next)) dump_line0(" %s", ptr->str); - dump_line0("\n"); - } - if(res->wlan.enc_modes) { - str_list_t *ptr = res->wlan.enc_modes; - dump_line("WLAN encryption modes: %s", ptr->str); - while((ptr=ptr->next)) dump_line0(" %s", ptr->str); - dump_line0("\n"); - } - if(res->wlan.auth_modes) { - str_list_t *ptr = res->wlan.auth_modes; - dump_line("WLAN authentication modes: %s", ptr->str); - while((ptr=ptr->next)) dump_line0(" %s", ptr->str); - dump_line0("\n"); - } - break; - - - default: - dump_line("Unknown resource type %d\n", res->any.type); - } - } - - if((sl = h->requires)) { - dump_line("Requires: %s", sl->str); - for(sl = sl->next; sl; sl = sl->next) { - dump_line0(", %s", sl->str); - } - dump_line0("\n"); - } - - for(di = h->driver_info, i = 0; di; di = di->next, i++) { - dump_line("Driver Info #%d:\n", i); - ind += 2; - switch(di->any.type) { - case di_any: - dump_line_str("Driver Info:"); - for(sl = di->any.hddb0, j = 0; sl; sl = sl->next, j++) { - dump_line0("%c%s", j ? ',' : ' ', sl->str); - } - dump_line0("\n"); - break; - - case di_display: - if(di->display.width) - dump_line("Max. Resolution: %ux%u\n", di->display.width, di->display.height); - if(di->display.min_vsync) - dump_line("Vert. Sync Range: %u-%u Hz\n", di->display.min_vsync, di->display.max_vsync); - if(di->display.min_hsync) - dump_line("Hor. Sync Range: %u-%u kHz\n", di->display.min_hsync, di->display.max_hsync); - if(di->display.bandwidth) - dump_line("Bandwidth: %u MHz\n", di->display.bandwidth); - break; - - case di_module: - dump_line_str("Driver Status: "); - for(sl1 = di->module.names; sl1; sl1 = sl1->next) { - dump_line0("%s%c", sl1->str, sl1->next ? ',' : ' '); - } - dump_line0("%s %sactive\n", - di->module.names->next ? "are" : "is", - di->module.active ? "" : "not " - ); - - dump_line_str("Driver Activation Cmd: \""); - for(sl1 = di->module.names, sl2 = di->module.mod_args; sl1 && sl2; sl1 = sl1->next, sl2 = sl2->next) { - dump_line0("%s %s%s%s%s", - di->module.modprobe ? "modprobe" : "insmod", - sl1->str, - sl2->str ? " " : "", - sl2->str ? sl2->str : "", - (sl1->next && sl2->next) ? "; " : "" - ); - } - - dump_line0("\"\n"); - - if(di->module.conf) { - char *s = di->module.conf; - - dump_line_str("Driver \"modules.conf\" Entry: \""); - for(; *s; s++) { - if(isprint(*s)) { - dump_line0("%c", *s); - } - else { - switch(*s) { - case '\n': dump_line0("\\n"); break; - case '\r': dump_line0("\\r"); break; - case '\t': dump_line0("\t"); break; /* *no* typo! */ - default: dump_line0("\\%03o", *s); - } - } - } - dump_line0("\"\n"); - } - break; - - case di_mouse: - if(di->mouse.buttons >= 0) dump_line("Buttons: %d\n", di->mouse.buttons); - if(di->mouse.wheels >= 0) dump_line("Wheels: %d\n", di->mouse.wheels); - if(di->mouse.xf86) dump_line("XFree86 Protocol: %s\n", di->mouse.xf86); - if(di->mouse.gpm) dump_line("GPM Protocol: %s\n", di->mouse.gpm); - break; - - case di_x11: - if(di->x11.server) { - dump_line( - "XFree86 v%s Server%s: %s\n", - di->x11.xf86_ver, strcmp(di->x11.xf86_ver, "4") ? "" : " Module", di->x11.server - ); - } - if(di->x11.x3d) dump_line_str("3D Support: yes\n"); - if(di->x11.script) dump_line("3D Script: %s\n", di->x11.script); - if(di->x11.colors.all) { - dump_line_str("Color Depths: "); - j = 0; - if(di->x11.colors.c8) { dump_line0("8"); j++; } - if(di->x11.colors.c15) { if(j) dump_line0(", "); dump_line0("15"); j++; } - if(di->x11.colors.c16) { if(j) dump_line0(", "); dump_line0("16"); j++; } - if(di->x11.colors.c24) { if(j) dump_line0(", "); dump_line0("24"); j++; } - if(di->x11.colors.c32) { if(j) dump_line0(", "); dump_line0("32"); j++; } - dump_line0("\n"); - } - if(di->x11.dacspeed) dump_line("Max. DAC Clock: %u MHz\n", di->x11.dacspeed); - if(di->x11.extensions) { - dump_line("Extensions: %s", di->x11.extensions->str); - for(sl = di->x11.extensions->next; sl; sl = sl->next) { - dump_line0(", %s", sl->str); - } - dump_line0("\n"); - } - if(di->x11.options) { - dump_line("Options: %s", di->x11.options->str); - for(sl = di->x11.options->next; sl; sl = sl->next) { - dump_line0(", %s", sl->str); - } - dump_line0("\n"); - } - if(di->x11.raw) { - dump_line("XF86Config Entry: %s", di->x11.raw->str); - for(sl = di->x11.raw->next; sl; sl = sl->next) { - dump_line0("\\n%s", sl->str); - } - dump_line0("\n"); - } - break; - - case di_isdn: - dump_line( - "I4L Type: %d/%d [%s]\n", - di->isdn.i4l_type, di->isdn.i4l_subtype, di->isdn.i4l_name - ); - if((ip = di->isdn.params)) { - int k, l; - - dump_line_str("Parameter:\n"); - for(k = 0; ip; ip = ip->next, k++) { - dump_line( - " %d%s: (0x%x/%02x): %s = 0x%"PRIx64, - k, ip->conflict ? "(conflict)" : ip->valid ? "" : "(invalid)", - ip->type, ip->flags >> 8, ip->name, ip->value - ); - if(ip->alt_values) { - for(l = 0; l < ip->alt_values; l++) { - dump_line0( - "%s%s0x%x", l ? "," : " [", - ip->alt_value[l] == ip->def_value ? "*" : "", - ip->alt_value[l] - ); - } - dump_line0("]"); - } - dump_line0("\n"); - } - } - break; - - case di_dsl: - dump_line( - "DSL Mode: %s\n", - di->dsl.mode - ); - dump_line( - "Driver: %s\n", - di->dsl.name - ); - break; - - case di_kbd: - if(di->kbd.XkbRules) dump_line("XkbRules: %s\n", di->kbd.XkbRules); - if(di->kbd.XkbModel) dump_line("XkbModel: %s\n", di->kbd.XkbModel); - if(di->kbd.XkbLayout) dump_line("XkbLayout: %s\n", di->kbd.XkbLayout); - if(di->kbd.keymap) dump_line("keymap: %s\n", di->kbd.keymap); - break; - - default: - dump_line_str("Driver Status: unknown driver info format\n"); - } - - if((hd_data->debug & HD_DEB_DRIVER_INFO)) { - for(sl = di->any.hddb0, j = 0; sl; sl = sl->next, j++) { - if(j) { - dump_line0("|%s", sl->str); - } - else { - dump_line("Driver DB0: %d, %s", di->any.type, sl->str); - } - } - if(di->any.hddb0) dump_line0("\n"); - - for(sl = di->any.hddb1, j = 0; sl; sl = sl->next, j++) { - if(!j) dump_line_str("Driver DB1: \""); - dump_line0("%s\\n", sl->str); - } - if(di->any.hddb1) dump_line0("\"\n"); - } - - ind -= 2; - } -} - -/* - * print CPU entries - */ -void dump_cpu(hd_data_t *hd_data, hd_t *hd, FILE *f) -{ - cpu_info_t *ct; - str_list_t *sl; - - if(!hd->detail || hd->detail->type != hd_detail_cpu) return; - if(!(ct = hd->detail->cpu.data)) return; - - dump_line0 (" Arch: "); - switch (ct->architecture) { - case arch_intel: - dump_line0 ("Intel\n"); - break; - case arch_alpha: - dump_line0 ("Alpha\n"); - break; - case arch_sparc: - dump_line0 ("Sparc (32)\n"); - break; - case arch_sparc64: - dump_line0 ("UltraSparc (64)\n"); - break; - case arch_ppc: - dump_line0 ("PowerPC\n"); - break; - case arch_ppc64: - dump_line0 ("PowerPC (64)\n"); - break; - case arch_68k: - dump_line0 ("68k\n"); - break; - case arch_ia64: - dump_line0 ("IA-64\n"); - break; - case arch_s390: - dump_line0 ("S390\n"); - break; - case arch_s390x: - dump_line0 ("S390x\n"); - break; - case arch_arm: - dump_line0 ("ARM\n"); - break; - case arch_mips: - dump_line0 ("MIPS\n"); - break; - case arch_x86_64: - dump_line0 ("X86-64\n"); - break; - default: - dump_line0 ("**UNKNWON**\n"); - break; - } - - if(ct->vend_name) dump_line("Vendor: \"%s\"\n", ct->vend_name); - - if(ct->model_name) - dump_line( - "Model: %u.%u.%u \"%s\"\n", - ct->family, ct->model, ct->stepping, ct->model_name - ); - - if(ct->platform) dump_line("Platform: \"%s\"\n", ct->platform); - - if(ct->features) { - dump_line("Features: %s", ct->features->str); - for(sl = ct->features->next; sl; sl = sl->next) { - dump_line0(",%s", sl->str); - } - dump_line0("\n"); - } - - if(ct->clock) dump_line("Clock: %u MHz\n", ct->clock); - - if(ct->cache) dump_line("Cache: %u kb\n", ct->cache); - if(ct->units) dump_line("Units/Processor: %u\n", ct->units); -} - - -/* - * print BIOS entries - */ -void dump_bios(hd_data_t *hd_data, hd_t *hd, FILE *f) -{ - bios_info_t *bt; - - if(!hd->detail || hd->detail->type != hd_detail_bios) return; - if(!(bt = hd->detail->bios.data)) return; - - if(bt->vbe_ver) { - dump_line("VESA BIOS Version: %u.%u\n", bt->vbe_ver >> 8, bt->vbe_ver & 0xff); - } - - if(bt->vbe_video_mem) { - dump_line("Video Memory: %u kb\n", bt->vbe_video_mem >> 10); - } - - if(bt->vbe.ok && bt->vbe.current_mode) { - dump_line("Current VESA Mode: 0x%04x\n", bt->vbe.current_mode); - } - - if(bt->apm_supported) { - dump_line("APM Version: %u.%u\n", bt->apm_ver, bt->apm_subver); - dump_line("APM Status: %s\n", bt->apm_enabled ? "on" : "off"); - dump_line("APM BIOS Flags: 0x%x\n", bt->apm_bios_flags); - } - - if(bt->led.ok) { - dump_line_str("BIOS Keyboard LED Status:\n"); - dump_line(" Scroll Lock: %s\n", bt->led.scroll_lock ? "on" : "off"); - dump_line(" Num Lock: %s\n", bt->led.num_lock ? "on" : "off"); - dump_line(" Caps Lock: %s\n", bt->led.caps_lock ? "on" : "off"); - } - - if(bt->ser_port0) dump_line("Serial Port 0: 0x%x\n", bt->ser_port0); - if(bt->ser_port1) dump_line("Serial Port 1: 0x%x\n", bt->ser_port1); - if(bt->ser_port2) dump_line("Serial Port 2: 0x%x\n", bt->ser_port2); - if(bt->ser_port3) dump_line("Serial Port 3: 0x%x\n", bt->ser_port3); - - if(bt->par_port0) dump_line("Parallel Port 0: 0x%x\n", bt->par_port0); - if(bt->par_port1) dump_line("Parallel Port 1: 0x%x\n", bt->par_port1); - if(bt->par_port2) dump_line("Parallel Port 2: 0x%x\n", bt->par_port2); - - if(bt->low_mem_size) dump_line("Base Memory: %u kB\n", bt->low_mem_size >> 10); - - if(bt->is_pnp_bios) { - char *s = isa_id2str(bt->pnp_id); - dump_line("PnP BIOS: %s\n", s); - free_mem(s); - } - - if(bt->lba_support) { - dump_line_str("BIOS: extended read supported\n"); - } - - if(bt->smp.ok) { - dump_line("MP spec rev 1.%u info:\n", bt->smp.rev); - dump_line(" OEM id: \"%s\"\n", bt->smp.oem_id); - dump_line(" Product id: \"%s\"\n", bt->smp.prod_id); - dump_line(" %u CPUs (%u disabled)\n", bt->smp.cpus, bt->smp.cpus - bt->smp.cpus_en); - } - - if(bt->bios32.ok) { - dump_line("BIOS32 Service Directory Entry: 0x%05x\n", bt->bios32.entry); - } - - if(bt->smbios_ver) { - dump_line("SMBIOS Version: %u.%u\n", bt->smbios_ver >> 8, bt->smbios_ver & 0xff); - } - - smbios_dump(hd_data, f); -} - - -/* - * print PROM entries - */ -void dump_prom(hd_data_t *hd_data, hd_t *hd, FILE *f) -{ - prom_info_t *pt; - char *s; - - if(!hd->detail || hd->detail->type != hd_detail_prom) return; - if(!(pt = hd->detail->prom.data)) return; - - if(pt->has_color) { - // ########################### - // s = hd_device_name(hd_data, MAKE_ID(TAG_SPECIAL, 0x0300), MAKE_ID(TAG_SPECIAL, pt->color)); - s = NULL; - if(s) - dump_line("Color: %s (0x%02x)\n", s, pt->color); - else - dump_line("Color: 0x%02x\n", pt->color); - } -} - - -/* - * print System entries - */ -void dump_sys(hd_data_t *hd_data, hd_t *hd, FILE *f) -{ - sys_info_t *st; - - if(!hd->detail || hd->detail->type != hd_detail_sys) return; - if(!(st = hd->detail->sys.data)) return; - - if(st->system_type) { - dump_line("SystemType: \"%s\"\n", st->system_type); - } - if(st->generation) { - dump_line("Generation: \"%s\"\n", st->generation); - } - - if(st->lang) { - dump_line("Language: \"%s\"\n", st->lang); - } -} - - -char *dump_hid(hd_data_t *hd_data, hd_id_t *hid, int format, char *buf, int buf_size) -{ - char *s; - int i; - unsigned t, id; - - *buf = 0; - - if(hid->id) { - t = ID_TAG(hid->id); - id = ID_VALUE(hid->id); - - if(format && t == TAG_EISA) { - snprintf(buf, buf_size - 1, "%s", eisa_vendor_str(id)); - } - else { - snprintf(buf, buf_size - 1, "%s0x%04x", hid_tag_name2(t), id); - } - } - - i = strlen(buf); - if(i) { - buf[i++] = ' '; - buf[i] = 0; - } - s = buf + i; - buf_size -= i; - - if(!buf_size) return buf; - - if(hid->name) { - snprintf(s, buf_size - 1, "\"%s\"", hid->name); - } - - return buf; -} - -char *dump_hid2(hd_data_t *hd_data, hd_id_t *hid1, hd_id_t *hid2, char *buf, int buf_size) -{ - char *s; - int i; - unsigned t, id1, id2; - - *buf = 0; - - t = 0; - if(hid1->id) t = ID_TAG(hid1->id); - if(hid2->id) t = ID_TAG(hid2->id); - - id1 = ID_VALUE(hid1->id); - id2 = ID_VALUE(hid2->id); - - if(hid1->id || hid2->id) { - if(t == TAG_EISA) { - snprintf(buf, buf_size - 1, "%s 0x%04x", eisa_vendor_str(id1), id2); - } - else { - snprintf(buf, buf_size - 1, "%s0x%04x 0x%04x", hid_tag_name2(t), id1, id2); - } - } - - i = strlen(buf); - s = buf + i; - buf_size -= i; - - if(!buf_size) return buf; - - if(hid2->name) { - snprintf(s, buf_size - 1, " \"%s\"", hid2->name); - } - - return buf; -} - - -char *print_dev_num(hd_dev_num_t *d) -{ - static char *buf = NULL; - - if(d->type) { - str_printf(&buf, 0, "%s %u:%u", - d->type == 'b' ? "block" : "char", - d->major, d->minor - ); - if(d->range > 1) { - str_printf(&buf, -1, "-%u:%u", - d->major, d->minor + d->range - 1 - ); - } - } - else { - str_printf(&buf, 0, "%s", ""); - } - - return buf; -} - - -#else /* ifndef LIBHD_TINY */ - -void hd_dump_entry(hd_data_t *hd_data, hd_t *h, FILE *f) { } - -#endif /* ifndef LIBHD_TINY */ - diff --git a/src/hwinfo/src/hd/hdp.h b/src/hwinfo/src/hd/hdp.h deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/hwinfo/src/hd/ibm-notebooks.h b/src/hwinfo/src/hd/ibm-notebooks.h deleted file mode 100644 index b47d50c165..0000000000 --- a/src/hwinfo/src/hd/ibm-notebooks.h +++ /dev/null @@ -1,169 +0,0 @@ - { 1024, 768, "IBM", "18305CU", NULL }, - { 1024, 768, "IBM", "1830BLU", NULL }, - { 1024, 768, "IBM", "1830H3U", NULL }, - { 1024, 768, "IBM", "1830PVU", NULL }, - { 1024, 768, "IBM", "18344AU", NULL }, - { 1024, 768, "IBM", "18344EU", NULL }, - { 1024, 768, "IBM", "183456U", NULL }, - { 1024, 768, "IBM", "18345BU", NULL }, - { 1024, 768, "IBM", "1834E7U", NULL }, - { 1024, 768, "IBM", "1834ELU", NULL }, - { 1024, 768, "IBM", "1834FKU", NULL }, - { 1024, 768, "IBM", "1834NEU", NULL }, - { 1024, 768, "IBM", "1836BAU", NULL }, - { 1024, 768, "IBM", "1836H7U", NULL }, - { 1024, 768, "IBM", "1836Q4U", NULL }, - { 1024, 768, "IBM", "18422QU", NULL }, - { 1024, 768, "IBM", "18422RU", NULL }, - { 1024, 768, "IBM", "1842G3U", NULL }, - { 1024, 768, "IBM", "1842G7U", NULL }, - { 1024, 768, "IBM", "1842GDU", NULL }, - { 1024, 768, "IBM", "1842GQU", NULL }, - { 1024, 768, "IBM", "1842GRU", NULL }, - { 1024, 768, "IBM", "1842HRU", NULL }, - { 1024, 768, "IBM", "1842PPU", NULL }, - { 1024, 768, "IBM", "185928U", NULL }, - { 1024, 768, "IBM", "18594YU", NULL }, - { 1024, 768, "IBM", "18595RU", NULL }, - { 1024, 768, "IBM", "23711CU", NULL }, - { 1024, 768, "IBM", "23716EU", NULL }, - { 1024, 768, "IBM", "23716FU", NULL }, - { 1024, 768, "IBM", "23716GU", NULL }, - { 1024, 768, "IBM", "23717GU", NULL }, - { 1024, 768, "IBM", "23718EU", NULL }, - { 1024, 768, "IBM", "237197U", NULL }, - { 1024, 768, "IBM", "2371A9U", NULL }, - { 1024, 768, "IBM", "2371GHU", NULL }, - { 1024, 768, "IBM", "23731FU", NULL }, - { 1024, 768, "IBM", "23731HU", NULL }, - { 1024, 768, "IBM", "23731WU", NULL }, - { 1024, 768, "IBM", "23734YU", NULL }, - { 1024, 768, "IBM", "23735TU", NULL }, - { 1024, 768, "IBM", "23736VU", NULL }, - { 1024, 768, "IBM", "23736YU", NULL }, - { 1024, 768, "IBM", "23737FU", NULL }, - { 1024, 768, "IBM", "2373J4U", NULL }, - { 1024, 768, "IBM", "2373JTU", NULL }, - { 1024, 768, "IBM", "2373K1U", NULL }, - { 1024, 768, "IBM", "2373L1U", NULL }, - { 1024, 768, "IBM", "23785UU", NULL }, - { 1024, 768, "IBM", "2378DGU", NULL }, - { 1024, 768, "IBM", "2378DHU", NULL }, - { 1024, 768, "IBM", "2378DTU", NULL }, - { 1024, 768, "IBM", "2378DUU", NULL }, - { 1024, 768, "IBM", "2378DWU", NULL }, - { 1024, 768, "IBM", "2378FTU", NULL }, - { 1024, 768, "IBM", "2378FZU", NULL }, - { 1024, 768, "IBM", "2378R1U", NULL }, - { 1024, 768, "IBM", "2378R4U", NULL }, - { 1024, 768, "IBM", "2378R8U", NULL }, - { 1024, 768, "IBM", "23795VU", NULL }, - { 1024, 768, "IBM", "2379DKU", NULL }, - { 1024, 768, "IBM", "2379DWU", NULL }, - { 1024, 768, "IBM", "2379R1U", NULL }, - { 1024, 768, "IBM", "2379R6U", NULL }, - { 1024, 768, "IBM", "2379R8U", NULL }, - { 1024, 768, "IBM", "23826UU", NULL }, - { 1024, 768, "IBM", "2382ECU", NULL }, - { 1024, 768, "IBM", "2382HCU", NULL }, - { 1024, 768, "IBM", "2384A9U", NULL }, - { 1024, 768, "IBM", "2384ATU", NULL }, - { 1024, 768, "IBM", "2384B9U", NULL }, - { 1024, 768, "IBM", "2384DLU", NULL }, - { 1024, 768, "IBM", "2384DWU", NULL }, - { 1024, 768, "IBM", "2384ECU", NULL }, - { 1024, 768, "IBM", "2384EHU", NULL }, - { 1024, 768, "IBM", "2384JCU", NULL }, - { 1024, 768, "IBM", "238613U", NULL }, - { 1024, 768, "IBM", "23861CU", NULL }, - { 1024, 768, "IBM", "23861ZU", NULL }, - { 1024, 768, "IBM", "23865FU", NULL }, - { 1024, 768, "IBM", "23866GU", NULL }, - { 1024, 768, "IBM", "23866RU", NULL }, - { 1024, 768, "IBM", "23866UU", NULL }, - { 1024, 768, "IBM", "23868EU", NULL }, - { 1024, 768, "IBM", "23868WU", NULL }, - { 1024, 768, "IBM", "2386A4U", NULL }, - { 1024, 768, "IBM", "2386E9U", NULL }, - { 1024, 768, "IBM", "23884QU", NULL }, - { 1024, 768, "IBM", "238852U", NULL }, - { 1024, 768, "IBM", "2388DGU", NULL }, - { 1024, 768, "IBM", "2388DMU", NULL }, - { 1024, 768, "IBM", "2388EJU", NULL }, - { 1024, 768, "IBM", "2388ENU", NULL }, - { 1024, 768, "IBM", "2388F4U", NULL }, - { 1024, 768, "IBM", "2388HBU", NULL }, - { 1024, 768, "IBM", "2388JBU", NULL }, - { 1024, 768, "IBM", "2389DHU", NULL }, - { 1024, 768, "IBM", "26284UG", NULL }, - { 1024, 768, "IBM", "26446AG", NULL }, - { 1024, 768, "IBM", "26455BG", NULL }, - { 1024, 768, "IBM", "264721G", NULL }, - { 1024, 768, "IBM", "26725KU", NULL }, - { 1024, 768, "IBM", "2672REU", NULL }, - { 1024, 768, "IBM", "2672RHU", NULL }, - { 1024, 768, "IBM", "267358U", NULL }, - { 1024, 768, "IBM", "26735KU", NULL }, - { 1024, 768, "IBM", "26817FU", NULL }, - { 1024, 768, "IBM", "2682PAU", NULL }, - { 1024, 768, "IBM", "2684FU4", NULL }, - { 1024, 768, "IBM", "2684KJU", NULL }, - { 1024, 768, "IBM", "2684QBU", NULL }, - { 1024, 768, "IBM", "27225JU", NULL }, - { 1024, 768, "IBM", "27233XU", NULL }, - { 1024, 768, "IBM", "288122U", NULL }, - { 1024, 768, "IBM", "288136U", NULL }, - { 1024, 768, "IBM", "288157U", NULL }, - { 1024, 768, "IBM", "28832ZU", NULL }, - { 1024, 768, "IBM", "28838QU", NULL }, - { 1024, 768, "IBM", "2883ARU", NULL }, - { 1024, 768, "IBM", "2883ELU", NULL }, - { 1024, 768, "IBM", "2883GKU", NULL }, - { 1024, 768, "IBM", "28854WU", NULL }, - { 1024, 768, "IBM", "2885PWU", NULL }, - { 1024, 768, "IBM", "28865TU", NULL }, - { 1024, 768, "IBM", "288692U", NULL }, - { 1024, 768, "IBM", "28872KU", NULL }, - { 1024, 768, "IBM", "288745U", NULL }, - { 1024, 768, "IBM", "288767U", NULL }, - { 1024, 768, "IBM", "28878PU", NULL }, - { 1024, 768, "IBM", "28885RU", NULL }, - { 1024, 768, "IBM", "2888M9U", NULL }, - { 1400, 1050, "IBM", "1830BQU", NULL }, - { 1400, 1050, "IBM", "18363SU", NULL }, - { 1400, 1050, "IBM", "1836H8U", NULL }, - { 1400, 1050, "IBM", "1836H9U", NULL }, - { 1400, 1050, "IBM", "1836HAU", NULL }, - { 1400, 1050, "IBM", "1836Q6U", NULL }, - { 1400, 1050, "IBM", "1836Q7U", NULL }, - { 1400, 1050, "IBM", "18594AU", NULL }, - { 1400, 1050, "IBM", "237394U", NULL }, - { 1400, 1050, "IBM", "23739FU", NULL }, - { 1400, 1050, "IBM", "2373G1U", NULL }, - { 1400, 1050, "IBM", "2373G3U", NULL }, - { 1400, 1050, "IBM", "2373GEU", NULL }, - { 1400, 1050, "IBM", "2373GGU", NULL }, - { 1400, 1050, "IBM", "2373GHG", NULL }, - { 1400, 1050, "IBM", "2373KTU", NULL }, - { 1400, 1050, "IBM", "2373KUU", NULL }, - { 1400, 1050, "IBM", "2373L4U", NULL }, - { 1400, 1050, "IBM", "2374GGG", NULL }, - { 1400, 1050, "IBM", "2378DXU", NULL }, - { 1400, 1050, "IBM", "2378FVU", NULL }, - { 1400, 1050, "IBM", "2379DJU", NULL }, - { 1400, 1050, "IBM", "2379DXU", NULL }, - { 1400, 1050, "IBM", "2379R9U", NULL }, - { 1400, 1050, "IBM", "23885DU", NULL }, - { 1400, 1050, "IBM", "2388F5U", NULL }, - { 1400, 1050, "IBM", "288678U", NULL }, - { 1400, 1050, "IBM", "288679U", NULL }, - { 1400, 1050, "IBM", "288693U", NULL }, - { 1600, 1200, "IBM", "183222U", NULL }, - { 1600, 1200, "IBM", "183223U", NULL }, - { 1600, 1200, "IBM", "2373HTU", NULL }, - { 1600, 1200, "IBM", "2373HVU", NULL }, - { 1600, 1200, "IBM", "2373KXU", NULL }, - { 1600, 1200, "IBM", "2373KYU", NULL }, - { 1600, 1200, "IBM", "2373Q1U", NULL }, - { 1600, 1200, "IBM", "2378DYU", NULL }, - { 1600, 1200, "IBM", "2379DYU", NULL }, diff --git a/src/hwinfo/src/hd/input.c b/src/hwinfo/src/hd/input.c deleted file mode 100644 index 790d090137..0000000000 --- a/src/hwinfo/src/hd/input.c +++ /dev/null @@ -1,267 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "hddb.h" -#include "input.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * input devs - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -static void get_input_devices(hd_data_t *hd_data); -static char *all_bits(char *str); -static int test_bit(char *str, unsigned bit); - -void hd_scan_input(hd_data_t *hd_data) -{ - if(!hd_probe_feature(hd_data, pr_input)) return; - - hd_data->module = mod_input; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "joydev mod"); - load_module(hd_data, "joydev"); - - PROGRESS(1, 1, "evdev mod"); - load_module(hd_data, "evdev"); - - PROGRESS(2, 0, "input"); - - get_input_devices(hd_data); -} - - -#define INP_NAME "N: Name=" -#define INP_HANDLERS "H: Handlers=" -#define INP_KEY "B: KEY=" -#define INP_REL "B: REL=" - -void get_input_devices(hd_data_t *hd_data) -{ - hd_t *hd; - str_list_t *input, *sl, *sl1; - char *s; - unsigned ok, u; - unsigned bus, vendor, product, version; - unsigned mouse_buttons, mouse_wheels; - char *name = NULL, *handlers = NULL, *key = NULL, *rel = NULL; - size_t len; - str_list_t *handler_list; - hd_dev_num_t dev_num = { type: 'c', range: 1 }; - - input = read_file("/proc/bus/input/devices", 0, 0); - - ADD2LOG("----- /proc/bus/input/devices -----\n"); - for(sl = input; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- /proc/bus/input/devices end -----\n"); - - for(ok = 0, sl = input; sl; sl = sl->next) { - if(*sl->str == '\n') { - ADD2LOG("bus = %u, name = %s\n", bus, name); - if(handlers) ADD2LOG(" handlers = %s\n", handlers); - if(key) ADD2LOG(" key = %s\n", key); - if(rel) ADD2LOG(" rel = %s\n", rel); - - mouse_buttons = 0; - if(key) { - for(u = BTN_MOUSE; u < BTN_MOUSE + 8; u++) { - if(test_bit(key, u)) mouse_buttons++; - } - } - ADD2LOG(" mouse buttons = %u\n", mouse_buttons); - - mouse_wheels = 0; - if(rel) { - for(u = REL_HWHEEL; u <= REL_MAX; u++) { - if(test_bit(rel, u)) mouse_wheels++; - } - } - ADD2LOG(" mouse wheels = %u\n", mouse_wheels); - - if(ok && handlers) { - handler_list = hd_split(' ', handlers); - - if(bus == BUS_USB) { - s = NULL; - for(sl1 = handler_list; sl1; sl1 = sl1->next) { - if(sscanf(sl1->str, "mouse%u", &u) == 1) { - str_printf(&s, 0, "/dev/input/mouse%u", u); - break; - } - } - - if(s) { - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->unix_dev_name2 && !strcmp(hd->unix_dev_name2, s)) { - hd->compat_vendor.id = MAKE_ID(TAG_SPECIAL, 0x0210); - hd->compat_device.id = MAKE_ID(TAG_SPECIAL, (mouse_wheels << 4) + mouse_buttons); - } - } - } - - s = free_mem(s); - } - else { - if(search_str_list(handler_list, "kbd") && test_bit(key, KEY_1)) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_keyboard; - hd->sub_class.id = sc_keyboard_kbd; - hd->bus.id = bus_ps2; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0211); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0001); - hd->device.name = new_str(name); - - for(sl1 = handler_list; sl1; sl1 = sl1->next) { - if(sscanf(sl1->str, "event%u", &u) == 1) { - str_printf(&hd->unix_dev_name, 0, "/dev/input/event%u", u); - dev_num.major = 13; - dev_num.minor = 64 + u; - hd->unix_dev_num = dev_num; - break; - } - } - } - else if(strstr(handlers, "mouse")) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_mouse; - hd->sub_class.id = sc_mou_ps2; - hd->bus.id = bus_ps2; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0210); - hd->device.id = MAKE_ID(TAG_SPECIAL, (mouse_wheels << 4) + mouse_buttons); - hd->device.name = new_str(name); - - /* Synaptics/Alps TouchPad */ - if(vendor == 2 && (product == 7 || product == 8)) { - hd->compat_vendor.id = hd->vendor.id; - hd->compat_device.id = hd->device.id; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0212); - hd->device.id = MAKE_ID(TAG_SPECIAL, product - 6); - } - - hd->unix_dev_name = new_str(DEV_MICE); - dev_num.major = 13; - dev_num.minor = 63; - hd->unix_dev_num = dev_num; - - for(sl1 = handler_list; sl1; sl1 = sl1->next) { - if(sscanf(sl1->str, "mouse%u", &u) == 1) { - str_printf(&hd->unix_dev_name2, 0, "/dev/input/mouse%u", u); - dev_num.major = 13; - dev_num.minor = 32 + u; - hd->unix_dev_num2 = dev_num; - break; - } - } - - } - } - - handler_list = free_str_list(handler_list); - } - - ok = 0; - - name = free_mem(name); - handlers = free_mem(handlers); - key = free_mem(key); - rel = free_mem(rel); - } - - if(sscanf(sl->str, "I: Bus=%04x Vendor=%04x Product=%04x Version=%04x", &bus, &vendor, &product, &version) == 4) { - ok = 1; - continue; - } - - if(!strncmp(sl->str, INP_NAME, sizeof INP_NAME - 1)) { - s = sl->str + sizeof INP_NAME; - len = strlen(s); - if(len > 2) { - name = canon_str(s, len - 2); - } - continue; - } - - if(!strncmp(sl->str, INP_HANDLERS, sizeof INP_HANDLERS - 1)) { - s = sl->str + sizeof INP_HANDLERS - 1; - handlers = canon_str(s, strlen(s)); - continue; - } - - if(!strncmp(sl->str, INP_KEY, sizeof INP_KEY - 1)) { - s = sl->str + sizeof INP_KEY - 1; - key = canon_str(s, strlen(s)); - key = all_bits(key); - continue; - } - - if(!strncmp(sl->str, INP_REL, sizeof INP_REL - 1)) { - s = sl->str + sizeof INP_REL - 1; - rel = canon_str(s, strlen(s)); - rel = all_bits(rel); - continue; - } - } - - free_str_list(input); - -} - - -char *all_bits(char *str) -{ - str_list_t *sl, *sl0; - char *s = NULL; - unsigned u; - - if(!str) return NULL; - - sl = sl0 = hd_split(' ', str); - for(; sl; sl = sl->next) { - u = strtoul(sl->str, NULL, 16); - str_printf(&s, -1, "%08x", u); - } - free_str_list(sl0); - free_mem(str); - - return s; -} - - -int test_bit(char *str, unsigned bit) -{ - size_t len, ofs; - unsigned u, mask; - - if(!str) return 0; - - len = strlen(str); - - ofs = bit >> 2; - mask = 1 << (bit & 3); - - if(ofs >= len) return 0; - - ofs = len - ofs - 1; - - u = str[ofs] >= 'a' ? str[ofs] - 'a' + 10 : str[ofs] - '0'; - - return (u & mask) ? 1 : 0; -} - - diff --git a/src/hwinfo/src/hd/input.h b/src/hwinfo/src/hd/input.h deleted file mode 100644 index 1329c27834..0000000000 --- a/src/hwinfo/src/hd/input.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_input(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/int.c b/src/hwinfo/src/hd/int.c deleted file mode 100644 index 36d43cc1f0..0000000000 --- a/src/hwinfo/src/hd/int.c +++ /dev/null @@ -1,1147 +0,0 @@ -#include -#include -#include -#include -typedef unsigned long kernel_ulong_t; -#include -#ifdef __UCLIBC__ -#include -#else -#include -#endif -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "int.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * internal things - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -static void int_hotplug(hd_data_t *hd_data); -static void int_cdrom(hd_data_t *hd_data); -#if defined(__i386__) || defined (__x86_64__) -static int set_bios_id(hd_data_t *hd_data, hd_t *hd_ref, int bios_id); -static int bios_ctrl_order(hd_data_t *hd_data, unsigned *sctrl, int sctrl_len); -static void int_bios(hd_data_t *hd_data); -#endif -static void int_media_check(hd_data_t *hd_data); -static int contains_word(char *str, char *str2); -static int is_zip(hd_t *hd); -static void int_floppy(hd_data_t *hd_data); -static void int_fix_usb_scsi(hd_data_t *hd_data); -static void int_mouse(hd_data_t *hd_data); -static void new_id(hd_data_t *hd_data, hd_t *hd); -static void int_modem(hd_data_t *hd_data); -static void int_wlan(hd_data_t *hd_data); -static void int_udev(hd_data_t *hd_data); -static void int_devicenames(hd_data_t *hd_data); -#if defined(__i386__) || defined (__x86_64__) -static void int_softraid(hd_data_t *hd_data); -#endif -#if defined(__i386__) || defined (__x86_64__) -static void int_system(hd_data_t *hd_data); -static void int_legacy_geo(hd_data_t *hd_data); -#endif - -void hd_scan_int(hd_data_t *hd_data) -{ - hd_t *hd; - - if(!hd_probe_feature(hd_data, pr_int)) return; - - hd_data->module = mod_int; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(2, 0, "cdrom"); - int_cdrom(hd_data); - - PROGRESS(3, 0, "media"); - int_media_check(hd_data); - - PROGRESS(4, 0, "floppy"); - int_floppy(hd_data); - -#if defined(__i386__) || defined (__x86_64__) - PROGRESS(5, 0, "bios"); - int_bios(hd_data); -#endif - - PROGRESS(6, 0, "mouse"); - int_mouse(hd_data); - -#if defined(__i386__) || defined (__x86_64__) - PROGRESS(15, 0, "system info"); - int_system(hd_data); -#endif - - PROGRESS(7, 0, "hdb"); - hd_data->flags.keep_kmods = 1; - for(hd = hd_data->hd; hd; hd = hd->next) { - hddb_add_info(hd_data, hd); - } - hd_data->flags.keep_kmods = 0; - - PROGRESS(8, 0, "usbscsi"); - int_fix_usb_scsi(hd_data); - - PROGRESS(9, 0, "hotplug"); - int_hotplug(hd_data); - - PROGRESS(10, 0, "modem"); - int_modem(hd_data); - - PROGRESS(11, 0, "wlan"); - int_wlan(hd_data); - - PROGRESS(12, 0, "udev"); - int_udev(hd_data); - - PROGRESS(13, 0, "device names"); - int_devicenames(hd_data); - -#if defined(__i386__) || defined (__x86_64__) - PROGRESS(14, 0, "soft raid"); - int_softraid(hd_data); - - PROGRESS(15, 0, "geo"); - int_legacy_geo(hd_data); -#endif - -} - -/* - * Identify hotpluggable devices. - */ -void int_hotplug(hd_data_t *hd_data) -{ - hd_t *hd; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->bus.id == bus_usb || hd->usb_guid) { - hd->hotplug = hp_usb; - } - } -} - -/* - * Add more info to CDROM entries. - */ -void int_cdrom(hd_data_t *hd_data) -{ - hd_t *hd; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_cdrom && - !hd->prog_if.id - ) { - if(hd->device.name && strstr(hd->device.name, "DVD")) { - hd->prog_if.id = 3; - } - } - } -} - -#if defined(__i386__) || defined (__x86_64__) - -int set_bios_id(hd_data_t *hd_data, hd_t *hd_ref, int bios_id) -{ - int found = 0; - hd_t *hd; - - if(!hd_ref || !hd_ref->unix_dev_name) return 0; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk && - hd->unix_dev_name && - !strcmp(hd->unix_dev_name, hd_ref->unix_dev_name) - ) { - str_printf(&hd->rom_id, 0, "0x%02x", bios_id); - found = 1; - } - } - - return found; -} - - -int bios_ctrl_order(hd_data_t *hd_data, unsigned *sctrl, int sctrl_len) -{ - hd_t *hd; - bios_info_t *bt; - int i, j, k, sctrl2_len = 0; - unsigned pci_slot, pci_func; - unsigned *sctrl2 = NULL, *sctrl3 = NULL; - int order_info = 0; - - for(bt = NULL, hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_internal && - hd->sub_class.id == sc_int_bios && - hd->detail && - hd->detail->type == hd_detail_bios && - (bt = hd->detail->bios.data) - ) { - break; - } - } - - if(!bt || !bt->bios32.ok || !bt->bios32.compaq) return 0; - - sctrl2 = new_mem((sizeof bt->bios32.cpq_ctrl / sizeof *bt->bios32.cpq_ctrl) * sizeof *sctrl2); - - for(i = 0; (unsigned) i < sizeof bt->bios32.cpq_ctrl / sizeof *bt->bios32.cpq_ctrl; i++) { - if( - bt->bios32.cpq_ctrl[i].id && - !(bt->bios32.cpq_ctrl[i].misc & 0x40) /* bios support ??????? */ - ) { - pci_slot = PCI_SLOT(bt->bios32.cpq_ctrl[i].devfn) + (bt->bios32.cpq_ctrl[i].bus << 8); - pci_func = PCI_FUNC(bt->bios32.cpq_ctrl[i].devfn); - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->bus.id == bus_pci && hd->slot == pci_slot && hd->func == pci_func) { - sctrl2[sctrl2_len++] = hd->idx; - break; - } - } - } - } - - if(sctrl2_len) order_info = 1; - - for(i = 0; i < sctrl2_len; i++) { - ADD2LOG(" bios ord %d: %d\n", i, sctrl2[i]); - } - - /* sort list */ - - sctrl3 = new_mem(sctrl_len * sizeof *sctrl3); - - k = 0 ; - for(i = 0; i < sctrl2_len; i++) { - for(j = 0; j < sctrl_len; j++) { - if(sctrl[j] == sctrl2[i]) { - sctrl3[k++] = sctrl[j]; - sctrl[j] = 0; - break; - } - } - } - - for(i = 0; i < sctrl_len; i++) { - if(sctrl[i] && k < sctrl_len) sctrl3[k++] = sctrl[i]; - } - - memcpy(sctrl, sctrl3, sctrl_len * sizeof *sctrl); - - free_mem(sctrl2); - free_mem(sctrl3); - - return order_info; -} - - -void int_bios(hd_data_t *hd_data) -{ - hd_t *hd, *hd_boot; - unsigned *sctrl, *sctrl2; - int sctrl_len, i, j; - int bios_id, list_sorted; - - /* don't do anything if there is useful edd info */ - if(hd_data->flags.edd_used) return; - - for(i = 0, hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk - ) { - i++; - } - } - - if(!i) return; - - sctrl = new_mem(i * sizeof *sctrl); - - /* sctrl: list of storage controllers with disks */ - - for(sctrl_len = 0, hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk - ) { - for(i = 0; i < sctrl_len; i++) { - if(sctrl[i] == hd->attached_to) break; - } - if(i == sctrl_len) sctrl[sctrl_len++] = hd->attached_to; - } - } - - /* sort list, if possible */ - - list_sorted = bios_ctrl_order(hd_data, sctrl, sctrl_len); - - hd_boot = hd_get_device_by_idx(hd_data, hd_boot_disk(hd_data, &i)); - - /* if we know the boot device, make this controller the first */ - - if(hd_boot && hd_boot->attached_to && i == 1) { - for(i = 0; i < sctrl_len; i++) { - if(sctrl[i] == hd_boot->attached_to) break; - } - if(i < sctrl_len) { - sctrl2 = new_mem(sctrl_len * sizeof *sctrl2); - *sctrl2 = hd_boot->attached_to; - for(i = 0, j = 1; i < sctrl_len; i++) { - if(sctrl[i] != hd_boot->attached_to) sctrl2[j++] = sctrl[i]; - } - free_mem(sctrl); - sctrl = sctrl2; - } - } - else { - hd_boot = NULL; - } - - if(hd_boot) ADD2LOG(" bios boot dev: %d\n", hd_boot->idx); - for(i = 0; i < sctrl_len; i++) { - ADD2LOG(" bios ctrl %d: %d\n", i, sctrl[i]); - } - - /* remove existing entries */ - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk - ) { - hd->rom_id = free_mem(hd->rom_id); - } - } - - if(!list_sorted && !hd_boot && sctrl_len > 1) { - /* we have no info at all */ - sctrl_len = 0; - } - else if(!list_sorted && hd_boot && sctrl_len > 2) { - /* we know which controller has the boot device */ - sctrl_len = 1; - } - - bios_id = 0x80; - - /* rely on it */ - - if(hd_boot) { - bios_id += set_bios_id(hd_data, hd_boot, bios_id); - } - - /* assign all the others */ - - for(i = 0; i < sctrl_len; i++) { - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk && - hd->attached_to == sctrl[i] && - !hd->rom_id - ) { - bios_id += set_bios_id(hd_data, hd, bios_id); - } - } - } - - free_mem(sctrl); -} - - -#if 0 -void int_bios(hd_data_t *hd_data) -{ - hd_t *hd, *hd_boot; - int i, start, bios = 0x80; - int ide_1st; - char ide_name[] = "/dev/hda"; - char scsi_name[] = "/dev/sda"; - char *s; - - hd_boot = hd_get_device_by_idx(hd_data, hd_boot_disk(hd_data, &i)); - - if(hd_boot) { - free_mem(hd_boot->rom_id); - hd_boot->rom_id = new_str("0x80"); - } - - if(!hd_boot || i != 1) return; - - if(strstr(hd_boot->unix_dev_name, "/dev/sd") == hd_boot->unix_dev_name) { - ide_1st = 0; - start = hd_boot->unix_dev_name[sizeof "/dev/sd" - 1] - 'a'; - } - else if(strstr(hd_boot->unix_dev_name, "/dev/hd") == hd_boot->unix_dev_name) { - ide_1st = 1; - start = hd_boot->unix_dev_name[sizeof "/dev/hd" - 1] - 'a'; - } - else { - return; - } - - if(start < 0) return; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk - ) { - hd->rom_id = free_mem(hd->rom_id); - } - } - - s = ide_1st ? ide_name : scsi_name; - - for(i = start; i < 26; i++) { - s[strlen(s) - 1] = 'a' + i; - bios += set_bios_id(hd_data, s, bios); - } - - for(i = 0; i < start; i++) { - s[strlen(s) - 1] = 'a' + i; - bios += set_bios_id(hd_data, s, bios); - } - - s = ide_1st ? scsi_name : ide_name; - - for(i = 0; i < 26; i++) { - s[strlen(s) - 1] = 'a' + i; - bios += set_bios_id(hd_data, s, bios); - } -} -#endif /* 0 */ -#endif /* defined(__i386__) || defined (__x86_64__) */ - -/* - * Try to read block 0 for block devices. - */ -void int_media_check(hd_data_t *hd_data) -{ - hd_t *hd; - int i, j = 0; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(!hd_report_this(hd_data, hd)) continue; - if( - hd->base_class.id == bc_storage_device && - ( - /* hd->sub_class.id == sc_sdev_cdrom || */ /* cf. cdrom.c */ - hd->sub_class.id == sc_sdev_disk || - hd->sub_class.id == sc_sdev_floppy - ) && - hd->unix_dev_name && - !hd->block0 && - !hd->is.notready && - hd->status.available != status_no - ) { - i = 5; - PROGRESS(4, ++j, hd->unix_dev_name); - hd->block0 = read_block0(hd_data, hd->unix_dev_name, &i); - hd->is.notready = hd->block0 ? 0 : 1; - } - } -} - - -/* - * Check if str has str2 in it. - */ -int contains_word(char *str, char *str2) -{ - int i, len, len2, found = 0; - char *s; - - if(!str2 || !*str2 || !str || !*str) return 0; - - str = new_str(str); - - len = strlen(str); - len2 = strlen(str2); - - for(i = 0; i < len; i++) { - if(str[i] >= 'a' && str[i] <= 'z') str[i] -= 'a' - 'A'; - } - - for(s = str; (s = strstr(s, str2)); s++) { - if( - (s == str || s[-1] < 'A' || s[-1] > 'Z') && - (s[len2] < 'A' || s[len2] > 'Z') - ) { - found = 1; - break; - } - } - - free_mem(str); - - return found; -} - - -/* - * Check for zip drive. - */ -int is_zip(hd_t *hd) -{ - if( - hd->base_class.id == bc_storage_device && - ( - hd->sub_class.id == sc_sdev_disk || - hd->sub_class.id == sc_sdev_floppy - ) - ) { - if( - ( - contains_word(hd->vendor.name, "IOMEGA") || - contains_word(hd->sub_vendor.name, "IOMEGA") || - contains_word(hd->device.name, "IOMEGA") || - contains_word(hd->sub_device.name, "IOMEGA") - ) && ( - contains_word(hd->device.name, "ZIP") || - contains_word(hd->sub_device.name, "ZIP") - ) - ) { - return 1; - } - } - - return 0; -} - - -/* - * Turn some drives into floppies. - */ -void int_floppy(hd_data_t *hd_data) -{ - hd_t *hd; - hd_res_t *res; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(is_zip(hd)) hd->is.zip = 1; - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk - ) { - if(hd->is.zip) { - hd->sub_class.id = sc_sdev_floppy; - new_id(hd_data, hd); - } - else { - /* make everything a floppy that is 1440k */ - for(res = hd->res; res; res = res->next) { - if( - res->any.type == res_size && - res->size.unit == size_unit_sectors && - res->size.val1 == 2880 && - res->size.val2 == 512 - ) { - hd->sub_class.id = sc_sdev_floppy; - new_id(hd_data, hd); - break; - } - } - } - } - } -} - - -#define COPY_ENTRY(a) if(hd_scsi->a) { free_mem(hd_usb->a); hd_usb->a = new_str(hd_scsi->a); } -/* - * Remove usb entries that are handled by usb-storage. - */ -void int_fix_usb_scsi(hd_data_t *hd_data) -{ - hd_t *hd_scsi, *hd_usb; - - for(hd_usb = hd_data->hd; hd_usb; hd_usb= hd_usb->next) { - if( - hd_usb->bus.id == bus_usb && - hd_usb->sysfs_id && - search_str_list(hd_usb->drivers, "usb-storage") - ) { - for(hd_scsi = hd_data->hd; hd_scsi; hd_scsi = hd_scsi->next) { - if( - hd_scsi->bus.id == bus_scsi && - hd_scsi->sysfs_device_link && - search_str_list(hd_scsi->drivers, "usb-storage") - ) { - if(!strncmp(hd_scsi->sysfs_device_link, hd_usb->sysfs_id, strlen(hd_usb->sysfs_id))) { - hd_set_hw_class(hd_scsi, hw_usb); - - free_mem(hd_scsi->unique_id); - hd_scsi->unique_id = hd_usb->unique_id; - hd_usb->unique_id = NULL; - - add_res_entry(&hd_scsi->res, hd_usb->res); - hd_usb->res = NULL; - - new_id(hd_data, hd_scsi); - - hd_usb->tag.remove = 1; - } - } - } - } - - } - - - -#if 0 - for(hd_scsi = hd_data->hd; hd_scsi; hd_scsi = hd_scsi->next) { - if( - hd_scsi->bus.id == bus_scsi && - hd_scsi->usb_guid && - search_str_list(hd_scsi->drivers, "usb-storage") - ) { - for(hd_usb = hd_data->hd; hd_usb ; hd_usb = hd_usb->next) { - if( - hd_usb->bus.id == bus_usb && - hd_usb->usb_guid && - !hd_usb->tag.remove && - !strcmp(hd_usb->usb_guid, hd_scsi->usb_guid) && - hd_usb->detail && - hd_usb->detail->type == hd_detail_usb && - (usb = hd_usb->detail->usb.data) && - usb->driver && - !strcmp(usb->driver, "usb-storage") - ) { - hd_scsi->tag.remove = 1; - - /* join usb & scsi info */ - hd_usb->bus.id = hd_scsi->bus.id; - COPY_ENTRY(bus.name); - hd_usb->base_class.id = hd_scsi->base_class.id; - COPY_ENTRY(base_class.name); - hd_usb->sub_class.id = hd_scsi->sub_class.id; - COPY_ENTRY(sub_class.name); - hd_usb->prog_if.id = hd_scsi->prog_if.id; - COPY_ENTRY(prog_if.name); - COPY_ENTRY(unix_dev_name); - COPY_ENTRY(model); - // ###### FIXME?: COPY_ENTRY(driver) - - hd_usb->vendor.id = hd_scsi->vendor.id; - COPY_ENTRY(vendor.name); - hd_usb->device.id = hd_scsi->device.id; - COPY_ENTRY(device.name); - hd_usb->sub_vendor.name = free_mem(hd_usb->sub_vendor.name); - COPY_ENTRY(sub_vendor.name); - hd_usb->sub_device.name = free_mem(hd_usb->sub_device.name); - COPY_ENTRY(sub_device.name); - COPY_ENTRY(revision.name); - COPY_ENTRY(serial); - - hd_usb->is.notready = hd_scsi->is.notready; - if(hd_usb->block0) free_mem(hd_usb->block0); - hd_usb->block0 = hd_scsi->block0; - hd_scsi->block0 = NULL; - add_res_entry(&hd_usb->res, hd_scsi->res); - hd_scsi->res = NULL; - - new_id(hd_data, hd_usb); - } - } - } - } -#endif - - - - remove_tagged_hd_entries(hd_data); -} -#undef COPY_ENTRY - - -/* - * Improve mouse info. - */ -void int_mouse(hd_data_t *hd_data) -{ - hd_t *hd; - bios_info_t *bt = NULL; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->detail && - hd->detail->type == hd_detail_bios && - (bt = hd->detail->bios.data) && - bt->mouse.type - ) break; - } - - if(!bt) return; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_mouse && - hd->sub_class.id == sc_mou_ps2 && - hd->bus.id == bt->mouse.bus && - hd->vendor.id == MAKE_ID(TAG_SPECIAL, 0x0200) && - hd->device.id == MAKE_ID(TAG_SPECIAL, 0x0002) - ) { - hd->vendor.name = free_mem(hd->vendor.name); - hd->device.name = free_mem(hd->device.name); - hd->vendor.id = hd->device.id = 0; -#if 0 - hd->vendor.id = bt->mouse.compat_vend; - hd->device.id = bt->mouse.compat_dev; -#else - hd->vendor.name = new_str(bt->mouse.vendor); - hd->device.name = new_str(bt->mouse.type); - hd->compat_vendor.id = bt->mouse.compat_vend; - hd->compat_device.id = bt->mouse.compat_dev; -#endif - new_id(hd_data, hd); - } - } -} - - -void new_id(hd_data_t *hd_data, hd_t *hd) -{ -#if 0 - hd->unique_id = free_mem(hd->unique_id); - hd->unique_id1 = free_mem(hd->unique_id1); - hd->old_unique_id = free_mem(hd->old_unique_id); - hd_add_id(hd_data, hd); -#endif -} - - -/* - * Assign device names to (win-)modems. - */ -void int_modem(hd_data_t *hd_data) -{ - hd_t *hd; - char *s; - hd_dev_num_t dev_num = { type: 'c', range: 1 }; - unsigned cnt4 = 0; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_modem - ) { - s = NULL; - switch(hd->sub_class.id) { - case sc_mod_win1: - s = new_str("/dev/ham"); - dev_num.major = 240; - dev_num.minor = 1; - break; - case sc_mod_win2: - s = new_str("/dev/536ep0"); - dev_num.major = 240; - dev_num.minor = 1; - break; - case sc_mod_win3: - s = new_str("/dev/ttyLT0"); - dev_num.major = 62; - dev_num.minor = 64; - break; - case sc_mod_win4: - if(cnt4 < 4) { - str_printf(&s, 0, "/dev/ttySL%u", cnt4); - dev_num.major = 212; - dev_num.minor = cnt4++; - } - break; - } - if(s) { - free_mem(hd->unix_dev_name); - hd->unix_dev_name = s; - s = NULL; - hd->unix_dev_num = dev_num; - } - } - } -} - - -/* - * Look for WLAN cards by checking module info. - */ -void int_wlan(hd_data_t *hd_data) -{ - hd_t *hd; - driver_info_t *di; - str_list_t *sl; - unsigned u, found; - static char *wlan_mods[] = { - "acx_pci", - "airo", - "airo_cs", - "aironet4500_card", - "aironet4500_cs", - "airport", - "adm8211", - "arlan", - "at76c503", - "at76c503-i3861", - "at76c503-i3863", - "at76c503-rfmd", - "at76c503-rfmd-acc", - "at76c505-rfmd", - "at76c505-rfmd2958", - "ath_hal", - "ath_pci", - "atmel", - "atmel_cs", - "atmel_pci", - "hermes", - "hostap", - "hostap_pci", - "hostap_plx", - "ipw2100", - "ipw2200", - "netwave_cs", - "orinoco_cs", - "orinoco_pci", - "orinoco_plx", - "p80211", - "prism2_cs", - "prism2_pci", - "prism2_plx", - "prism2_usb", - "prism54", - "ray_cs", - "rt2400", - "rt2500", - "usbdfu", - "wavelan", - "wavelan_cs", - "wl3501_cs" - }; - - for(hd = hd_data->hd; hd; hd = hd->next) { - for(found = 0, di = hd->driver_info; di && !found; di = di->next) { - if(di->any.type == di_module) { - for(sl = di->module.names; sl && !found; sl = sl->next) { - for(u = 0; u < sizeof wlan_mods / sizeof *wlan_mods; u++) { - if(!strcmp(sl->str, wlan_mods[u])) { - found = 1; - break; - } - } - } - } - } - if(found) { - hd->is.wlan = 1; - hd->base_class.id = bc_network; - hd->sub_class.id = 0x82; /* wlan */ - hddb_add_info(hd_data, hd); - } - } -} - - -/* - * Add udev info. - */ -void int_udev(hd_data_t *hd_data) -{ - hd_udevinfo_t *ui; - hd_t *hd; - char *s = NULL; - str_list_t *sl; - - if(!hd_data->udevinfo) read_udevinfo(hd_data); - - if(!hd_data->udevinfo) return; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(!hd->sysfs_id) continue; - - for(ui = hd_data->udevinfo; ui; ui = ui->next) { - if(ui->name && !strcmp(ui->sysfs, hd->sysfs_id)) { - hd->unix_dev_names = free_str_list(hd->unix_dev_names); - hd->unix_dev_name = free_mem(hd->unix_dev_name); - str_printf(&s, 0, "%s%s", ui->type == 'n' ? "" : "/dev/", ui->name); - add_str_list(&hd->unix_dev_names, s); - for(sl = ui->links; sl; sl = sl->next) { - str_printf(&s, 0, "%s%s", ui->type == 'n' ? "" : "/dev/", sl->str); - add_str_list(&hd->unix_dev_names, s); - } - s = free_mem(s); - - sl = hd->unix_dev_names; - - if(hd_data->flags.udev) { - /* use first link as canonical device name */ - if(ui->links) sl = sl->next; - } - - hd->unix_dev_name = new_str(sl->str); - - break; - } - } - } -} - - -/* - * If hd->unix_dev_name is not in hd->unix_dev_names, add it. - */ -void int_devicenames(hd_data_t *hd_data) -{ - hd_t *hd; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->unix_dev_name && - !search_str_list(hd->unix_dev_names, hd->unix_dev_name) - ) { - add_str_list(&hd->unix_dev_names, hd->unix_dev_name); - } - } -} - - -#if defined(__i386__) || defined (__x86_64__) -/* - * Tag ide soft raid disks. - */ -void int_softraid(hd_data_t *hd_data) -{ - hd_t *hd; - str_list_t *raid, *sl, *raid_sysfs = NULL, *sl1; - size_t len; - char *s; - - if(hd_data->flags.fast) return; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->status.available != status_no - ) break; - } - - /* no disks -> no check necessary */ - if(!hd) return; - - raid = read_file("| /sbin/dmraid -rc 2>/dev/null", 0, 0); - - for(sl = raid; sl; sl = sl->next) { - s = *sl->str ? strchr(sl->str + 1, '/') : NULL; - if(s) { - sl1 = add_str_list(&raid_sysfs, NULL); - str_printf(&sl1->str, 0, "/block%s", s); - len = strlen(sl1->str); - if(len) sl1->str[len - 1] = 0; - } - } - - free_str_list(raid); - - ADD2LOG("----- soft raid devices -----\n"); - for(sl = raid_sysfs; sl; sl = sl->next) { - ADD2LOG(" %s\n", sl->str); - } - ADD2LOG("----- soft raid devices end -----\n"); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(search_str_list(raid_sysfs, hd->sysfs_id)) { - hd->is.softraiddisk = 1; - } - } - - free_str_list(raid_sysfs); - -} - - -/* - * - */ -void int_system(hd_data_t *hd_data) -{ - hd_t *hd_sys; - hd_smbios_t *sm; - struct { - unsigned notebook:1; - unsigned acpi_mods:1; /* *** evil hack *** */ - enum { v_none = 0, v_ibm = 1, v_toshiba, v_sony } vendor; - } is = { }; - char *s; - - for(hd_sys = hd_data->hd; hd_sys; hd_sys = hd_sys->next) { - if( - hd_sys->base_class.id == bc_internal && - hd_sys->sub_class.id == sc_int_sys - ) break; - } - - if(!hd_sys) return; - - if( - hd_sys->vendor.name && - !strncasecmp(hd_sys->vendor.name, "sony", sizeof "sony" - 1) - ) { - is.vendor = v_sony; - } - - if( - hd_sys->device.name && - !strncmp(hd_sys->device.name, "PCG-", sizeof "PCG-" - 1) - ) { - is.notebook = 1; - } - - for(sm = hd_data->smbios; sm; sm = sm->next) { - if( - sm->any.type == sm_sysinfo && - sm->sysinfo.manuf && - sm->sysinfo.product && - !strcasecmp(sm->sysinfo.manuf, "Hewlett-Packard") && - !strcasecmp(sm->sysinfo.product, "HP Compaq nc6220") - ) { - is.acpi_mods = 1; - } - - if( - sm->any.type == sm_sysinfo && - sm->sysinfo.manuf && - !strcasecmp(sm->sysinfo.manuf, "ibm") - ) { - is.vendor = v_ibm; - } - - if( - sm->any.type == sm_sysinfo && - sm->sysinfo.manuf && - !strcasecmp(sm->sysinfo.manuf, "toshiba") - ) { - is.vendor = v_toshiba; - - if(!hd_sys->device.name && !hd_sys->device.id && sm->sysinfo.product) { - hd_sys->device.name = new_str(sm->sysinfo.product); - } - if(!hd_sys->vendor.name && !hd_sys->vendor.id) { - hd_sys->vendor.name = new_str("Toshiba"); - } - } - - if( - sm->any.type == sm_sysinfo && - sm->sysinfo.manuf && - !strncasecmp(sm->sysinfo.manuf, "sony", sizeof "sony" - 1) - ) { - is.vendor = v_sony; - - if(!hd_sys->device.name && !hd_sys->device.id && sm->sysinfo.product) { - hd_sys->device.name = new_str(sm->sysinfo.product); - if( - (s = strchr(hd_sys->device.name, '(')) && - hd_sys->device.name[strlen(hd_sys->device.name) - 1] == ')' - ) { - *s = 0; - } - } - if(!hd_sys->vendor.name && !hd_sys->vendor.id) { - hd_sys->vendor.name = new_str("Sony"); - } - } - - if( - sm->any.type == sm_chassis && - ( - (sm->chassis.ch_type.id >= 8 && sm->chassis.ch_type.id <= 11) || - sm->chassis.ch_type.id == 14 - ) - ) { - is.notebook = 1; - } - } - - ADD2LOG( - " system type:%s%s\n", - is.vendor == v_ibm ? " ibm" : - is.vendor == v_toshiba ? " toshiba" : - is.vendor == v_sony ? " sony" : - "", - is.notebook ? " notebook" : "" - ); - - if(is.notebook && is.vendor) { - hd_sys->compat_vendor.id = MAKE_ID(TAG_SPECIAL, 0xf001); - hd_sys->compat_device.id = MAKE_ID(TAG_SPECIAL, is.vendor); - } - else if(is.acpi_mods) { - hd_sys->compat_vendor.id = MAKE_ID(TAG_SPECIAL, 0xf001); - hd_sys->compat_device.id = MAKE_ID(TAG_SPECIAL, 4); - } -} - - -void int_legacy_geo(hd_data_t *hd_data) -{ - hd_t *hd; - hd_res_t *res; - int id; - char *s; - edd_info_t *ei; - - if(!hd_data->edd) return; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_disk && - hd->rom_id - ) { - id = strtol(hd->rom_id, &s, 0) - 0x80; - if(*s || id < 0 || id >= sizeof hd_data->edd / sizeof *hd_data->edd) continue; - - ei = hd_data->edd + id; - - if(ei->edd.cyls) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->disk_geo.type = res_disk_geo; - res->disk_geo.cyls = ei->edd.cyls; - res->disk_geo.heads = ei->edd.heads; - res->disk_geo.sectors = ei->edd.sectors; - res->disk_geo.size = ei->sectors; - res->disk_geo.geotype = geo_bios_edd; - } - - if(ei->legacy.cyls) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->disk_geo.type = res_disk_geo; - res->disk_geo.cyls = ei->legacy.cyls; - res->disk_geo.heads = ei->legacy.heads; - res->disk_geo.sectors = ei->legacy.sectors; - res->disk_geo.geotype = geo_bios_legacy; - } - - } - } - - -} - -#endif - - diff --git a/src/hwinfo/src/hd/int.h b/src/hwinfo/src/hd/int.h deleted file mode 100644 index 5ef482551a..0000000000 --- a/src/hwinfo/src/hd/int.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_int(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/isa.c b/src/hwinfo/src/hd/isa.c deleted file mode 100644 index 3b5d6d0f29..0000000000 --- a/src/hwinfo/src/hd/isa.c +++ /dev/null @@ -1,114 +0,0 @@ -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "isa.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * isa cards - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#if defined(__i386__) - -static void scan_isa_isdn(hd_data_t *hd_data); -static isa_isdn_t *free_isa_isdn(isa_isdn_t *ii); - -static void dump_isa_isdn_data(hd_data_t *hd_data, isa_isdn_t *ii); - -void hd_scan_isa(hd_data_t *hd_data) -{ - if(!hd_probe_feature(hd_data, pr_isa)) return; - - hd_data->module = mod_isa; - - /* some clean-up */ - remove_hd_entries(hd_data); - // hd_data->isa = NULL; - - if(hd_probe_feature(hd_data, pr_isa_isdn)) { - scan_isa_isdn(hd_data); - } - -} - -void scan_isa_isdn(hd_data_t *hd_data) -{ - isa_isdn_t *ii0, *ii; - hd_t *hd; - hd_res_t *res; - - PROGRESS(1, 0, "isdn"); - - ii0 = isdn_detect(); - - dump_isa_isdn_data(hd_data, ii0); - - PROGRESS(1, 1, "isdn"); - - for(ii = ii0; ii; ii = ii->next) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_isa; - hd->base_class.id = bc_isdn; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x3000 + ii->type); - hd->device.id = MAKE_ID(TAG_SPECIAL, ((ii->type << 8) + (ii->subtype & 0xff)) & 0xffff); - - if(ii->has_io) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = ii->io; - res->io.access = acc_rw; - } - - if(ii->has_irq) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->irq.type = res_irq; - res->irq.enabled = 1; - res->irq.base = ii->irq; - } - - // #### ask libihw? -> isdn.c - - } - - free_isa_isdn(ii0); -} - -isa_isdn_t *new_isa_isdn(isa_isdn_t **ii) -{ - while(*ii) ii = &(*ii)->next; - - return *ii = new_mem(sizeof **ii); -} - -isa_isdn_t *free_isa_isdn(isa_isdn_t *ii) -{ - isa_isdn_t *l; - - for(; ii; ii = (l = ii)->next, free_mem(l)); - - return NULL; -} - -void dump_isa_isdn_data(hd_data_t *hd_data, isa_isdn_t *ii) -{ - ADD2LOG("---------- ISA ISDN raw data ----------\n"); - - for(; ii; ii = ii->next) { - ADD2LOG(" type %d, subtype %d", ii->type, ii->subtype); - if(ii->has_mem) ADD2LOG(", mem 0x%04x", ii->mem); - if(ii->has_io) ADD2LOG(", io 0x%04x", ii->io); - if(ii->has_irq) ADD2LOG(", irq %d", ii->irq); - ADD2LOG("\n"); - } - - ADD2LOG("---------- ISA ISDN raw data end ----------\n"); -} - - -#endif /* defined(__i386__) */ - diff --git a/src/hwinfo/src/hd/isa.h b/src/hwinfo/src/hd/isa.h deleted file mode 100644 index cda4c3cec3..0000000000 --- a/src/hwinfo/src/hd/isa.h +++ /dev/null @@ -1,12 +0,0 @@ - -typedef struct isa_isdn_s { - struct isa_isdn_s *next; - unsigned has_mem:1, has_io:1, has_irq:1; - unsigned type, subtype, mem, io, irq; -} isa_isdn_t; - -isa_isdn_t *new_isa_isdn(isa_isdn_t **ii); - -void hd_scan_isa(hd_data_t *hd_data); - -isa_isdn_t *isdn_detect(void); diff --git a/src/hwinfo/src/hd/isapnp.c b/src/hwinfo/src/hd/isapnp.c deleted file mode 100644 index 28fbdde6b6..0000000000 --- a/src/hwinfo/src/hd/isapnp.c +++ /dev/null @@ -1,438 +0,0 @@ -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "hddb.h" -#include "isapnp.h" - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * isapnp stuff - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#if defined(__i386__) || defined(__alpha__) - -static void get_pnp_devs(hd_data_t *hd_data); - -#if 0 -static void get_read_port(hd_data_t *hd_data, isapnp_t *); -static void build_list(hd_data_t *hd_data, str_list_t *isapnp_list); -#endif - -void hd_scan_isapnp(hd_data_t *hd_data) -{ -#if 0 - hd_t *hd; - hd_res_t *res; - int isapnp_ok; - str_list_t *isapnp_list = NULL, *sl; -#endif - - if(!hd_probe_feature(hd_data, pr_isapnp)) return; - - hd_data->module = mod_isapnp; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "pnp devices"); - - get_pnp_devs(hd_data); - -#if 0 - PROGRESS(1, 0, "read port"); - - if(!hd_data->isapnp) { - hd_data->isapnp = new_mem(sizeof *hd_data->isapnp); - } - else { - hd_data->isapnp->cards = 0; - /* just in case... */ - hd_data->isapnp->card = free_mem(hd_data->isapnp->card); - /* keep the port */ - } - - if(!hd_data->isapnp->read_port) get_read_port(hd_data, hd_data->isapnp); - - PROGRESS(3, 0, "get pnp data"); - - isapnp_list = read_file(PROC_ISAPNP, 0, 0); - - if((hd_data->debug & HD_DEB_ISAPNP)) { - ADD2LOG("----- %s -----\n", PROC_ISAPNP); - for(sl = isapnp_list; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- %s end -----\n", PROC_ISAPNP); - } - - isapnp_ok = isapnp_list && hd_data->isapnp->read_port ? 1 : 1; - - PROGRESS(4, 0, "build list"); - - if(isapnp_ok) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_isa; - hd->base_class.id = bc_internal; - hd->sub_class.id = sc_int_isapnp_if; - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = ISAPNP_ADDR_PORT; - res->io.range = 1; - res->io.access = acc_wo; - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = ISAPNP_DATA_PORT; - res->io.range = 1; - res->io.access = acc_wo; - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = hd_data->isapnp->read_port; - res->io.range = 1; - res->io.access = acc_ro; - } - - build_list(hd_data, isapnp_list); - - free_str_list(isapnp_list); -#endif - -} - - -void get_pnp_devs(hd_data_t *hd_data) -{ - hd_t *hd; - char *s, *t, buf[4]; - unsigned u1, u2, u3; - - struct sysfs_bus *sf_bus; - struct dlist *sf_dev_list; - struct sysfs_device *sf_dev; - struct sysfs_device *sf_dev_2; - - sf_bus = sysfs_open_bus("pnp"); - - if(!sf_bus) { - ADD2LOG("sysfs: no such bus: pnp\n"); - return; - } - - sf_dev_list = sysfs_get_bus_devices(sf_bus); - - - if(sf_dev_list) dlist_for_each_data(sf_dev_list, sf_dev, struct sysfs_device) { - ADD2LOG( - " pnp device: name = %s, bus_id = %s, bus = %s\n path = %s\n", - sf_dev->name, - sf_dev->bus_id, - sf_dev->bus, - hd_sysfs_id(sf_dev->path) - ); - - if((s = hd_attr_str(sysfs_get_device_attr(sf_dev, "id")))) { - if(sscanf(s, "%3s%4x", buf, &u1) == 2 && (u2 = name2eisa_id(buf))) { - ADD2LOG(" id = %s %04x\n", eisa_vendor_str(u2), u1); - - hd = add_hd_entry(hd_data, __LINE__, 0); - - hd->sysfs_id = new_str(hd_sysfs_id(sf_dev->path)); - hd->sysfs_bus_id = new_str(sf_dev->bus_id); - - hd->bus.id = bus_isa; - hd->is.isapnp = 1; - - hd->sub_vendor.id = u2; - hd->sub_device.id = MAKE_ID(TAG_EISA, u1); - - if(sscanf(hd->sysfs_bus_id, "%2x:%2x.%2x", &u1, &u2, &u3) == 3) { - hd->slot = u2; - hd->func = u3; - } - - s = new_str(sf_dev->path); - if((t = strrchr(s, '/'))) *t = 0; - - sf_dev_2 = sysfs_open_device_path(s); - if(sf_dev_2) { - if((t = hd_attr_str(sysfs_get_device_attr(sf_dev_2, "card_id")))) { - if(sscanf(t, "%3s%4x", buf, &u1) == 2 && (u2 = name2eisa_id(buf))) { - ADD2LOG(" card id = %s %04x\n", eisa_vendor_str(u2), u1); - - hd->vendor.id = u2; - hd->device.id = MAKE_ID(TAG_EISA, u1); - } - } - if((t = hd_attr_str(sysfs_get_device_attr(sf_dev_2, "name")))) { - hd->device.name = canon_str(t, strlen(t)); - if(!strcasecmp(hd->device.name, "unknown")) { - hd->device.name = free_mem(hd->device.name); - } - } - - sysfs_close_device(sf_dev_2); - } - - - free_mem(s); - - - if(hd->sub_vendor.id == hd->vendor.id && hd->sub_device.id == hd->device.id) { - hd->sub_vendor.id = hd->sub_device.id = 0; - } - - } - } - - } - - - sysfs_close_bus(sf_bus); - -} - - -#if 0 -unsigned char *add_isapnp_card_res(isapnp_card_t *ic, int len, int type) -{ - ic->res = add_mem(ic->res, sizeof *ic->res, ic->res_len); - - ic->res[ic->res_len].len = len; - ic->res[ic->res_len].type = type; - ic->res[ic->res_len].data = new_mem(len); - - if(type == RES_LOG_DEV_ID) { /* logical device id */ - ic->log_devs++; - } - - return ic->res[ic->res_len++].data; -} - - -isapnp_card_t *add_isapnp_card(isapnp_t *ip, int csn) -{ - isapnp_card_t *c; - - ip->card = add_mem(ip->card, sizeof *ip->card, ip->cards); - c = ip->card + ip->cards++; - - c->csn = csn; - c->serial = new_mem(sizeof *c->serial * 8); - c->card_regs = new_mem(sizeof *c->card_regs * 0x30); - - return c; -} - - -void get_read_port(hd_data_t *hd_data, isapnp_t *p) -{ - hd_res_t *res; - - p->read_port = 0; - - res = NULL; - gather_resources(hd_data->misc, &res, "ISAPnP", W_IO); - if(res && res->any.type == res_io) p->read_port = res->io.base; - free_res_list(res); -} - - -void build_list(hd_data_t *hd_data, str_list_t *isapnp_list) -{ - hd_t *hd = NULL; - str_list_t *sl; - char s1[4], s2[100]; - int card, ldev, cdev_id, ldev_active = 0; - char *dev_name = NULL, *ldev_name = NULL; - unsigned dev_id = 0, vend_id = 0, base_class = 0, sub_class = 0, ldev_id; - unsigned u, ux[5]; - int i, j; - hd_res_t *res; - - for(sl = isapnp_list; sl; sl = sl->next) { - - if(sscanf(sl->str, "Card %d '%3s%4x:%99[^']", &card, s1, &dev_id, s2) == 4) { -// ADD2LOG("\n\n** card %d >%s< %04x >%s<**\n", card, s1, dev_id, s2); - - dev_name = free_mem(dev_name); - if(strcmp(s2, "Unknown")) dev_name = new_str(s2); - - dev_id = MAKE_ID(TAG_EISA, dev_id); - vend_id = name2eisa_id(s1); - - base_class = sub_class = 0; - if((u = device_class(hd_data, vend_id, dev_id))) { - base_class = u >> 8; - sub_class = u & 0xff; - } - -#if 0 -// ########## FIXME - if( - (ID_VALUE(vend_id) || ID_VALUE(dev_id)) && - !((db_name = hd_device_name(hd_data, vend_id, dev_id)) && *db_name) - ) { - if(dev_name) { - add_device_name(hd_data, vend_id, dev_id, dev_name); - } - } -#endif - - continue; - } - - if(sscanf(sl->str, " Logical device %d '%3s%4x:%99[^']", &ldev, s1, &ldev_id, s2) == 4) { -// ADD2LOG("\n\n** ldev %d >%s< %04x >%s<**\n", ldev, s1, ldev_id, s2); - - ldev_name = free_mem(ldev_name); - if(strcmp(s2, "Unknown")) ldev_name = new_str(s2); - - hd = add_hd_entry(hd_data, __LINE__, 0); - - hd->bus.id = bus_isa; - hd->is.isapnp = 1; - hd->slot = card; - hd->func = ldev; - - hd->vendor.id = vend_id; - hd->device.id = dev_id; - - hd->base_class.id = base_class; - hd->sub_class.id = sub_class; - - hd->sub_device.id = MAKE_ID(TAG_EISA, ldev_id); - hd->sub_vendor.id = name2eisa_id(s1); - - if(hd->sub_vendor.id == hd->vendor.id && hd->sub_device.id == hd->device.id) { - hd->sub_vendor.id = hd->sub_device.id = 0; - } - - if((u = sub_device_class(hd_data, hd->vendor.id, hd->device.id, hd->sub_vendor.id, hd->sub_device.id))) { - hd->base_class.id = u >> 8; - hd->sub_class.id = u & 0xff; - } - -#if 0 -# ############# FIXME - if( - (ID_VALUE(hd->sub_vendor.id) || ID_VALUE(hd->sub_device.id)) && - !hd_sub_device_name(hd_data, hd->vend, hd->dev, hd->sub_vend, hd->sub_device.id) - ) { - if(ldev_name) { - add_sub_device_name(hd_data, hd->vend, hd->dev, hd->sub_vend, hd->sub_device.id, ldev_name); - } - } -#endif - - continue; - } - - if(strstr(sl->str, "Device is not active")) { - ldev_active = 0; - continue; - } - - if(strstr(sl->str, "Device is active")) { - ldev_active = 1; - continue; - } - - if(hd && sscanf(sl->str, " Compatible device %3s%4x", s1, &cdev_id) == 2) { -// ADD2LOG("\n\n** cdev >%s< %04x **\n", s1, cdev_id); - - hd->compat_device.id = MAKE_ID(TAG_EISA, cdev_id); - hd->compat_vendor.id = name2eisa_id(s1); - - if(!(hd->base_class.id || hd->sub_class.id)) { - if((u = device_class(hd_data, hd->compat_vendor.id, hd->compat_device.id))) { - hd->base_class.id = u >> 8; - hd->sub_class.id = u & 0xff; - } - else if(hd->compat_vendor.id == MAKE_ID(TAG_EISA, 0x41d0)) { - /* 0x41d0 is 'PNP' */ - switch((hd->compat_device.id >> 12) & 0xf) { - case 8: - hd->base_class.id = bc_network; - hd->sub_class.id = 0x80; - break; - case 0xa: - hd->base_class.id = bc_storage; - hd->sub_class.id = 0x80; - break; - case 0xb: - hd->base_class.id = bc_multimedia; - hd->sub_class.id = 0x80; - break; - case 0xc: - case 0xd: - hd->base_class.id = bc_modem; - break; - } - } - } - - continue; - } - - if( - hd && - (j = sscanf(sl->str, - " Active port %x, %x, %x, %x, %x, %x", - ux, ux + 1, ux + 2, ux + 3, ux + 4, ux + 5 - )) >= 1 - ) { - - for(i = 0; i < j; i++) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = ldev_active ? 1 : 0; - res->io.base = ux[i]; - res->io.access = acc_rw; - } - - continue; - } - - if(hd && (j = sscanf(sl->str, " Active IRQ %d [%x], %d [%x]", ux, ux + 1, ux + 2, ux + 3)) >= 1) { - for(i = 0; i < j; i += 2) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->irq.type = res_irq; - res->irq.enabled = ldev_active ? 1 : 0; - res->irq.base = ux[i]; - } - - continue; - } - - if(hd && (j = sscanf(sl->str, " Active DMA %d, %d", ux, ux + 1)) >= 1) { - for(i = 0; i < j; i++) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->dma.type = res_dma; - res->dma.enabled = ldev_active ? 1 : 0; - res->dma.base = ux[i]; - } - - continue; - } - - - } - - free_mem(dev_name); - free_mem(ldev_name); -} -#endif - - -#endif /* defined(__i386__) || defined(__alpha__) */ - diff --git a/src/hwinfo/src/hd/isapnp.h b/src/hwinfo/src/hd/isapnp.h deleted file mode 100644 index b593726b52..0000000000 --- a/src/hwinfo/src/hd/isapnp.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * These are fixed and write only. Reads are done from a port with a - * relocatable address... - */ -#define ISAPNP_ADDR_PORT 0x279 -#define ISAPNP_DATA_PORT 0xa79 - - -/* - * ISA PnP resource types - */ -#define RES_PNP_VERSION 0x01 -#define RES_LOG_DEV_ID 0x02 -#define RES_COMPAT_DEV_ID 0x03 -#define RES_IRQ 0x04 -#define RES_DMA 0x05 -#define RES_START_DEP 0x06 -#define RES_END_DEP 0x07 -#define RES_IO 0x08 -#define RES_FIXED_IO 0x09 -#define RES_VENDOR_SMALL 0x0e -#define RES_END 0x0f - -#define RES_MEM_RANGE 0x81 -#define RES_ANSI_NAME 0x82 -#define RES_UNICODE_NAME 0x83 -#define RES_VENDOR_LARGE 0x84 -#define RES_MEM32_RANGE 0x85 -#define RES_FIXED_MEM32_RANGE 0x86 - - -/* - * ISA PnP configuration regs - */ -#define CFG_MEM24 0x40 -#define CFG_MEM32_0 0x76 -#define CFG_MEM32_1 0x80 -#define CFG_MEM32_2 0x90 -#define CFG_MEM32_3 0xa0 -#define CFG_IO_HI_BASE 0x60 -#define CFG_IO_LO_BASE 0x61 -#define CFG_IRQ 0x70 -#define CFG_IRQ_TYPE 0x71 -#define CFG_DMA 0x74 - - -/* gather ISA-PnP info */ -void hd_scan_isapnp(hd_data_t *hd_data); - - -/* - * Interface functions to the pnpdump lib. - */ -int pnpdump(hd_data_t *hd_data, int read_boards); -unsigned char *add_isapnp_card_res(isapnp_card_t *, int, int); -isapnp_card_t *add_isapnp_card(isapnp_t *, int); - diff --git a/src/hwinfo/src/hd/isdn.c b/src/hwinfo/src/hd/isdn.c deleted file mode 100644 index 63ed8394b6..0000000000 --- a/src/hwinfo/src/hd/isdn.c +++ /dev/null @@ -1,311 +0,0 @@ -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "isdn.h" - -#undef ISDN_TEST - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * identify isdn cards - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#ifndef LIBHD_TINY - -#if !defined(__s390__) && !defined(__s390x__) && !defined(__alpha__) - -void hd_scan_isdn(hd_data_t *hd_data) -{ - hd_t *hd; - cdb_isdn_card *cic; - - if(!hd_probe_feature(hd_data, pr_isdn)) return; - - hd_data->module = mod_isdn; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "list"); - -#ifdef ISDN_TEST - { - hd_res_t *res; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_isa; - hd->base_class.id = bc_isdn; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x3005); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0500); // type, subtype - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = 0x0300; - res->io.access = acc_rw; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_isa; - hd->base_class.id = bc_isdn; - hd->vendor.id = MAKE_ID(TAG_EISA, 0x1593); - hd->device.id = MAKE_ID(TAG_EISA, 0x0133); // type, subtype - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = 0x0240; - res->io.access = acc_rw; - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->irq.type = res_irq; - res->irq.enabled = 1; - res->irq.base = 99; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_isa; - hd->base_class.id = bc_isdn; - hd->vendor.id = MAKE_ID(TAG_EISA, 0x0e98); - hd->device.id = MAKE_ID(TAG_EISA, 0x0000); // type, subtype - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = 0x0180; - res->io.access = acc_rw; - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = 0x0540; - res->io.access = acc_rw; - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->irq.type = res_irq; - res->irq.enabled = 1; - res->irq.base = 77; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_pci; - hd->base_class.id = bc_isdn; - hd->vendor.id = MAKE_ID(TAG_PCI, 0x1244); - hd->device.id = MAKE_ID(TAG_PCI, 0x0a00); // type, subtype - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = 0xe000; - res->io.access = acc_rw; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_isa; - hd->base_class.id = bc_isdn; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x3001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0100); // type, subtype - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = 0xe80; - res->io.access = acc_rw; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_isa; - hd->base_class.id = bc_isdn; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x3000); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1a00); // type, subtype - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = 0x400; - res->io.access = acc_rw; - - - } -#endif - - for(hd = hd_data->hd; hd; hd = hd->next) { - if((cic = get_isdn_info(hd))) { - hd->base_class.id = bc_isdn; - hd->sub_class.id = 0; - free_mem(cic); - } - } - - -} - -cdb_isdn_card *get_isdn_info(hd_t *hd) -{ - cdb_isdn_card *cic0, *cic; - unsigned u0, u1; - - if(hd->bus.id == bus_pci || - hd->bus.id == bus_isa || - hd->bus.id == bus_usb || - hd->bus.id == bus_pcmcia || - hd->bus.id == bus_cardbus) { - - cic = NULL; - u0 = ID_VALUE(hd->vendor.id); - if( - hd->bus.id == bus_isa && - ID_TAG(hd->vendor.id) == TAG_SPECIAL && - u0 >= 0x3000 && u0 <= 0x3006 && - ID_TAG(hd->device.id) == TAG_SPECIAL - ) { - u0 = ID_VALUE(hd->device.id); - cic = hd_cdbisdn_get_card_from_type(u0 >> 8, u0 & 0xff); - } - - if( - hd->bus.id == bus_isa && - ID_TAG(hd->vendor.id) == TAG_EISA && - ID_TAG(hd->device.id) == TAG_EISA - ) { - u0 = ID_VALUE(hd->vendor.id); - u1 = ID_VALUE(hd->device.id); - cic = hd_cdbisdn_get_card_from_id(((u0 & 0xff) << 8) + ((u0 >> 8) & 0xff), - ((u1 & 0xff) << 8) + ((u1 >> 8) & 0xff), - 0xffff,0xffff); - } - - if(hd->bus.id == bus_pci) { - cic = hd_cdbisdn_get_card_from_id(ID_VALUE(hd->vendor.id), ID_VALUE(hd->device.id), - ID_VALUE(hd->sub_vendor.id), ID_VALUE(hd->sub_device.id)); - } - - if(hd->bus.id == bus_usb && - ID_TAG(hd->vendor.id) == TAG_USB && - ID_TAG(hd->device.id) == TAG_USB) { - - if (hd->revision.id == 0 && hd->revision.name) { - /* the revision is usually saved as string (1.00) */ - sscanf(hd->revision.name, "%x.%x", &u1, &u0); - u0 = u0 | u1 << 8; - } else - u0 = ID_VALUE(hd->revision.id); - - cic = hd_cdbisdn_get_card_from_id(ID_VALUE(hd->vendor.id), ID_VALUE(hd->device.id), - u0, 0xffff); - if (!cic) /* to get cards without revision info in database */ - cic = hd_cdbisdn_get_card_from_id(ID_VALUE(hd->vendor.id), ID_VALUE(hd->device.id), - 0xffff, 0xffff); - } - - if((hd->bus.id == bus_pcmcia || hd->bus.id == bus_cardbus) && - (hd->base_class.id == bc_network || hd->base_class.id == bc_isdn)) { - if (hd->drivers && hd->drivers->str) { - if (0 == strcmp(hd->drivers->str, "teles_cs")) { - cic = hd_cdbisdn_get_card_from_type(8, 0); - } else if (0 == strcmp(hd->drivers->str, "sedlbauer_cs")) { - cic = hd_cdbisdn_get_card_from_type(22, 2); - } else if (0 == strcmp(hd->drivers->str, "avma1_cs")) { - cic = hd_cdbisdn_get_card_from_type(26, 0); - } else if (0 == strcmp(hd->drivers->str, "fcpcmcia_cs")) { - cic = hd_cdbisdn_get_card_from_type(8002, 5); - } else if (0 == strcmp(hd->drivers->str, "elsa_cs")) { - cic = hd_cdbisdn_get_card_from_type(10, 11); - } else if (0 == strcmp(hd->drivers->str, "avm_cs")) { - cic = hd_cdbisdn_get_card_from_type(8001, 2); - } - } - } - - if (cic && cic->Class && strcmp(cic->Class, "DSL")) { - cic0 = new_mem(sizeof *cic0); - memcpy(cic0, cic, sizeof *cic0); - return cic0; - } - } - return NULL; -} - -void hd_scan_dsl(hd_data_t *hd_data) -{ - hd_t *hd; - cdb_isdn_card *cic; - - if(!hd_probe_feature(hd_data, pr_isdn)) return; - - hd_data->module = mod_dsl; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "list"); - -#ifdef DSL_TEST - { - hd_res_t *res; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_pci; - hd->base_class.id = bc_dsl; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x1244); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x2700); // type, subtype - - } -#endif - - for(hd = hd_data->hd; hd; hd = hd->next) { - if((cic = get_dsl_info(hd))) { - free_mem(cic); - } - } - - -} - -cdb_isdn_card *get_dsl_info(hd_t *hd) -{ - cdb_isdn_card *cic0, *cic; - cdb_isdn_vario *civ; - unsigned u0, u1; - - if(hd->bus.id == bus_pci || - hd->bus.id == bus_usb) { - - cic = NULL; - - if(hd->bus.id == bus_pci) { - cic = hd_cdbisdn_get_card_from_id(ID_VALUE(hd->vendor.id), ID_VALUE(hd->device.id), - ID_VALUE(hd->sub_vendor.id), ID_VALUE(hd->sub_device.id)); - } - - if(hd->bus.id == bus_usb && - ID_TAG(hd->vendor.id) == TAG_USB && - ID_TAG(hd->device.id) == TAG_USB) { - - if (hd->revision.id == 0 && hd->revision.name) { - /* the revision is usually saved as string (1.00) */ - sscanf(hd->revision.name, "%x.%x", &u1, &u0); - u0 = u0 | u1 << 8; - } else - u0 = ID_VALUE(hd->revision.id); - - cic = hd_cdbisdn_get_card_from_id(ID_VALUE(hd->vendor.id), ID_VALUE(hd->device.id), - u0, 0xffff); - if (!cic) /* to get cards without revision info in database */ - cic = hd_cdbisdn_get_card_from_id(ID_VALUE(hd->vendor.id), ID_VALUE(hd->device.id), - 0xffff, 0xffff); - } - - if (cic && cic->Class && !strcmp(cic->Class, "DSL")) { - hd->base_class.id = bc_dsl; - hd->sub_class.id = sc_dsl_unknown; - civ = hd_cdbisdn_get_vario(cic->vario); - if (civ && civ->interface) { - if (0 == strncmp(civ->interface, "CAPI20", 6)) { - hd->sub_class.id = sc_dsl_capi; - } else if (0 == strncmp(civ->interface, "pppoe", 5)) { - hd->sub_class.id = sc_dsl_pppoe; - } - } - cic0 = new_mem(sizeof *cic0); - memcpy(cic0, cic, sizeof *cic0); - return cic0; - } - } - return NULL; -} - -#endif /* !defined(__s390__) && !defined(__s390x__) && !defined(__alpha__) */ - -#endif /* !defined(LIBHD_TINY) */ - diff --git a/src/hwinfo/src/hd/isdn.h b/src/hwinfo/src/hd/isdn.h deleted file mode 100644 index 3e5cc42363..0000000000 --- a/src/hwinfo/src/hd/isdn.h +++ /dev/null @@ -1,4 +0,0 @@ -void hd_scan_isdn(hd_data_t *hd_data); -void hd_scan_dsl(hd_data_t *hd_data); -cdb_isdn_card *get_isdn_info(hd_t *hd); -cdb_isdn_card *get_dsl_info(hd_t *hd); diff --git a/src/hwinfo/src/hd/kbd.c b/src/hwinfo/src/hd/kbd.c deleted file mode 100644 index 58384e7d2d..0000000000 --- a/src/hwinfo/src/hd/kbd.c +++ /dev/null @@ -1,308 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef __sparc__ - -struct serial_struct { - int type; - int line; - unsigned long port; - int irq; - int flags; - int xmit_fifo_size; - int custom_divisor; - int baud_base; - unsigned short close_delay; - char io_type; - char reserved_char[1]; - int hub6; - unsigned short closing_wait; /* time to wait before closing */ - unsigned short closing_wait2; /* no longer used... */ - unsigned char *iomem_base; - unsigned short iomem_reg_shift; - int reserved[2]; -}; - -#ifdef DIET -typedef unsigned int u_int; -#endif - -#include -#include -#endif - -#include "hd.h" -#include "hd_int.h" -#include "kbd.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * - * Look for keyboards not covered by kernel input device driver, mainly - * some sort of serial consoles. - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#ifdef __sparc__ -static void add_sun_console(hd_data_t *hd_data); -#else -static void add_serial_console(hd_data_t *hd_data); -#endif - - -void hd_scan_kbd(hd_data_t *hd_data) -{ - hd_t *hd; - - if(!hd_probe_feature(hd_data, pr_kbd)) return; - - hd_data->module = mod_kbd; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(2, 0, "uml"); - - if(hd_is_uml(hd_data)) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_keyboard; - hd->sub_class.id = sc_keyboard_kbd; - hd->bus.id = bus_none; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0201); - hd->device.id = MAKE_ID(TAG_SPECIAL, 2); - } - - PROGRESS(3, 0, "serial console"); - -#ifdef __sparc__ - add_sun_console(hd_data); -#else - add_serial_console(hd_data); -#endif -} - - -#ifndef __sparc__ - -void add_serial_console(hd_data_t *hd_data) -{ - hd_t *hd; - hd_res_t *res = NULL; - int fd, i; - str_list_t *cmd, *cmd0, *sl; - unsigned u, u1; - struct serial_struct ser_info; - unsigned tty_major = 0, tty_minor = 0; - char c, *dev = NULL, *s; - - /* first, try console= option */ - cmd = cmd0 = get_cmdline(hd_data, "console"); - - /* use last console entry */ - if(cmd) while(cmd->next) cmd = cmd->next; - - if( - cmd && - ( - /* everything != "ttyN" */ - strncmp(cmd->str, "tty", 3) || - !(cmd->str[3] == 0 || (cmd->str[3] >= '0' && cmd->str[3] <= '9')) - ) - ) { - sl = hd_split(',', cmd->str); - s = sl->str; - if(!strncmp(s, "/dev/", sizeof "/dev/" - 1)) s += sizeof "/dev/" - 1; - dev = new_str(s); - if(sl->next && (i = sscanf(sl->next->str, "%u%c%u", &u, &c, &u1)) >= 1) { - res = add_res_entry(&res, new_mem(sizeof *res)); - res->baud.type = res_baud; - res->baud.speed = u; - if(i >= 2) res->baud.parity = c; - if(i >= 3) res->baud.bits = u1; - } - free_str_list(sl); - } - -#ifdef __UCLIBC__ - if(!dev && (fd = open(DEV_CONSOLE, O_RDWR | O_NONBLOCK | O_NOCTTY)) >= 0) { -/* - if(ioctl(fd, TIOCGDEV, &u) != -1) { - tty_major = (u >> 8) & 0xfff; - tty_minor = (u & 0xff) | ((u >> 12) & 0xfff00); - ADD2LOG(DEV_CONSOLE ": major %u, minor %u\n", tty_major, tty_minor); - } -*/ - - if(tty_major == 229 /* iseries hvc */) { - if (tty_minor >= 128) { - str_printf(&dev, 0, "hvsi%u", tty_minor-128); - } else { - str_printf(&dev, 0, "hvc%u", tty_minor); - } - } - else if(!ioctl(fd, TIOCGSERIAL, &ser_info)) { - ADD2LOG("serial console at line %d\n", ser_info.line); - str_printf(&dev, 0, "ttyS%d", ser_info.line); - } - close(fd); - } -#endif - - if(dev) { - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_keyboard; - hd->sub_class.id = sc_keyboard_console; - hd->bus.id = bus_serial; - hd->device.name = new_str("serial console"); - - if(*dev) str_printf(&hd->unix_dev_name, 0, "/dev/%s", dev); - - hd->res = res; - - free_mem(dev); - } - - free_str_list(cmd0); -} - - -#else /* defined(__sparc__) */ - - -void add_sun_console(hd_data_t *hd_data) -{ - int fd, kid, kid2, klay, ser_cons, i; - unsigned u, u1, u2; - char c1, c2; - struct serial_struct ser_info; - unsigned char buf[OPROMMAXPARAM]; - struct openpromio *opio = (struct openpromio *) buf; - hd_t *hd; - hd_res_t *res; - - if((fd = open(DEV_CONSOLE, O_RDWR | O_NONBLOCK | O_NOCTTY)) >= 0) - { - if(ioctl(fd, TIOCGSERIAL, &ser_info)) - { - ser_cons = -1; - } - else - { - ser_cons = ser_info.line; - ADD2LOG("serial console at line %d\n", ser_cons); - } - close(fd); - - if(ser_cons >= 0 && (fd = open(DEV_OPENPROM, O_RDWR | O_NONBLOCK)) >= 0) - { - sprintf(opio->oprom_array, "tty%c-mode", (ser_cons & 1) + 'a'); - opio->oprom_size = sizeof buf - 0x100; - if(!ioctl(fd, OPROMGETOPT, opio)) - { - if(opio->oprom_size < 0x100) - { - opio->oprom_array[opio->oprom_size] = 0; - ADD2LOG( - "prom(tty%c-mode) = \"%s\" (%d bytes)\n", - (ser_cons & 1) + 'a', opio->oprom_array, - opio->oprom_size - ); - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_keyboard; - hd->sub_class.id = sc_keyboard_console; - hd->bus.id = bus_serial; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0203); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0000); - str_printf(&hd->unix_dev_name, 0, "/dev/ttyS%d", ser_cons); - if((i = sscanf(opio->oprom_array, "%u,%u,%c,%u,%c", - &u, &u1, &c1, &u2, &c2)) >= 1) - { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->baud.type = res_baud; - res->baud.speed = u; - if(i >= 2) res->baud.bits = u1; - if(i >= 3) res->baud.parity = c1; - if(i >= 4) res->baud.stopbits = u2; - if(i >= 5) res->baud.handshake = c2; - } - } - } - close(fd); - /* We have a serial console, so don't test for keyboard. Else - we will always find a PS/2 keyboard */ - return; - } - } - - PROGRESS(1, 0, "sun kbd"); - - if((fd = open(DEV_KBD, O_RDWR | O_NONBLOCK | O_NOCTTY)) >= 0) - { - if(ioctl(fd, KIOCTYPE, &kid)) kid = -1; - if(ioctl(fd, KIOCLAYOUT, &klay)) klay = -1; - close(fd); - - if(kid != -1) - { - ADD2LOG("sun keyboard: type %d, layout %d\n", kid, klay); - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_keyboard; - hd->sub_class.id = sc_keyboard_kbd; - hd->bus.id = bus_serial; - if(kid == 4 && klay >= 0) - hd->prog_if.id = klay; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0202); - kid2 = kid; - if(kid == 4 && klay > 0x20) - kid2 = 5; - hd->device.id = MAKE_ID(TAG_SPECIAL, kid2); - if(kid2 == 5) { - if(klay == 0x22 || klay == 0x51) - { - hd->sub_vendor.id = MAKE_ID(TAG_SPECIAL, 0x0202); - hd->sub_device.id = MAKE_ID(TAG_SPECIAL, 0x0001); - } - else if(!( - klay == 0x21 || (klay >= 0x2f && klay <= 0x31) || - klay == 0x50 || (klay >= 0x5e && klay <= 0x60) - )) - { - hd->sub_vendor.id = MAKE_ID(TAG_SPECIAL, 0x0202); - hd->sub_device.id = MAKE_ID(TAG_SPECIAL, 0x0002); - } - } - } - } - else - { - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == bc_keyboard) break; - } - if(!hd) { - /* We must have a PS/2 Keyboard */ - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_keyboard; - hd->sub_class.id = sc_keyboard_kbd; - hd->bus.id = bus_ps2; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0201); - hd->device.id = MAKE_ID(TAG_SPECIAL, 1); - } - } -} - -#endif /* __sparc__ */ - - diff --git a/src/hwinfo/src/hd/kbd.h b/src/hwinfo/src/hd/kbd.h deleted file mode 100644 index 8fe84479ce..0000000000 --- a/src/hwinfo/src/hd/kbd.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_kbd(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/klog.c b/src/hwinfo/src/hd/klog.c deleted file mode 100644 index 4f7ec2f6cb..0000000000 --- a/src/hwinfo/src/hd/klog.c +++ /dev/null @@ -1,153 +0,0 @@ -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "klog.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * kernel log info - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -static int str_ok(str_list_t *sl); -static int str_list_cmp(str_list_t *sl1, str_list_t *sl2); - - -/* - * Check if a string starts with '<[0-9]>'. - */ -int str_ok(str_list_t *sl) -{ - return sl->str[0] == '<' && sl->str[2] == '>' && sl->str[1] >= '0' && sl->str[1] <= '9'; -} - -/* - * Check if sl1 is idential to sl2; sl1 may be shorter as sl2. - * - * Returns 0/1 if they are equal/not equal. If sl1 is NULL, 0 is returned. - */ -int str_list_cmp(str_list_t *sl1, str_list_t *sl2) -{ - for(; sl1; sl1 = sl1->next, sl2 = sl2->next) { - if(!sl2 || strcmp(sl1->str, sl2->str)) return 1; - } - - return 0; -} - -/* - * Read kernel log info. Combine with /var/log/boot.msg. - */ -void read_klog(hd_data_t *hd_data) -{ - char buf[0x2000 + 1], *s; - int i, j, len, n; - str_list_t *sl, *sl1, *sl2, *sl_last, **ssl, *sl_next; - - /* some clean-up */ - hd_data->klog = free_str_list(hd_data->klog); - - sl1 = read_file(KLOG_BOOT, 0, 0); - sl2 = NULL; - - /* - * remove non-canonical lines (not starting with <[0-9]>) at the start and - * at the end - */ - - /* note: the implementations assumes that at least *one* line is ok */ - for(sl_last = NULL, sl = sl1; sl; sl = (sl_last = sl)->next) { - if(str_ok(sl)) { - if(sl_last) { - sl_last->next = NULL; - free_str_list(sl1); - sl1 = sl; - } - break; - } - } - - for(sl_last = NULL, sl = sl1; sl; sl = (sl_last = sl)->next) { - if(!str_ok(sl)) { - if(sl_last) { - sl_last->next = NULL; - free_str_list(sl); - } - break; - } - } - - n = klogctl(3, buf, sizeof buf - 1); - if(n <= 0) { - hd_data->klog = sl1; - return; - } - - if(n > (int) sizeof buf - 1) n = sizeof buf - 1; - buf[n] = 0; - for(i = j = 0; i < n; i++) { - if(buf[i] == '\n') { - len = i - j + 1; - s = new_mem(len + 1); - memcpy(s, buf + j, len); - add_str_list(&sl2, s); - s = free_mem(s); - j = i + 1; - } - } - - /* the 1st line may be incomplete */ - if(sl2 && !str_ok(sl2)) { - sl_next = sl2->next; - sl2->next = NULL; - free_str_list(sl2); - sl2 = sl_next; - } - - if(!sl1) { - hd_data->klog = sl2; - return; - } - - if(sl1 && !sl2) { - hd_data->klog = sl1; - return; - } - - /* now, try to join sl1 & sl2 */ - for(sl_last = NULL, sl = sl1; sl; sl = (sl_last = sl)->next) { - if(!str_list_cmp(sl, sl2)) { - free_str_list(sl); - if(sl_last) - sl_last->next = NULL; - else - sl1 = NULL; - break; - } - } - - /* append sl2 to sl1 */ - for(ssl = &sl1; *ssl; ssl = &(*ssl)->next); - *ssl = sl2; - - hd_data->klog = sl1; -} - - -/* - * Add some klog data to the global log. - */ -void dump_klog(hd_data_t *hd_data) -{ - str_list_t *sl; - - ADD2LOG("----- kernel log -----\n"); - for(sl = hd_data->klog; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- kernel log end -----\n"); -} diff --git a/src/hwinfo/src/hd/klog.h b/src/hwinfo/src/hd/klog.h deleted file mode 100644 index 3119b109a3..0000000000 --- a/src/hwinfo/src/hd/klog.h +++ /dev/null @@ -1,2 +0,0 @@ -void read_klog(hd_data_t *hd_data); -void dump_klog(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/manual.c b/src/hwinfo/src/hd/manual.c deleted file mode 100644 index c8b9afa5fe..0000000000 --- a/src/hwinfo/src/hd/manual.c +++ /dev/null @@ -1,1549 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "manual.h" -#include "hddb.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * - * hardware in /var/lib/hardware/ - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -typedef struct { - int key; - char *value; -} hash_t; - -/* corresponds to hd_status_value_t */ -static hash_t status_names[] = { - { status_no, "no" }, - { status_yes, "yes" }, - { status_unknown, "unknown" }, - { status_new, "new" }, - { 0, NULL } -}; - -/* corresponds to hd_hw_item_t */ -static hash_t hw_items[] = { - { hw_sys, "system" }, - { hw_cpu, "cpu" }, - { hw_keyboard, "keyboard" }, - { hw_braille, "braille" }, - { hw_mouse, "mouse" }, - { hw_joystick, "joystick" }, - { hw_printer, "printer" }, - { hw_scanner, "scanner" }, - { hw_chipcard, "chipcard" }, - { hw_monitor, "monitor" }, - { hw_tv, "tv card" }, - { hw_display, "graphics card" }, - { hw_framebuffer, "framebuffer" }, - { hw_camera, "camera" }, - { hw_sound, "sound" }, - { hw_storage_ctrl, "storage" }, - { hw_network_ctrl, "network" }, - { hw_isdn, "isdn adapter" }, - { hw_modem, "modem" }, - { hw_network, "network interface" }, - { hw_disk, "disk" }, - { hw_partition, "partition" }, - { hw_cdrom, "cdrom" }, - { hw_floppy, "floppy" }, - { hw_manual, "manual" }, - { hw_usb_ctrl, "usb controller" }, - { hw_usb, "usb" }, - { hw_bios, "bios" }, - { hw_pci, "pci" }, - { hw_isapnp, "isapnp" }, - { hw_bridge, "bridge" }, - { hw_hub, "hub" }, - { hw_scsi, "scsi" }, - { hw_ide, "ide" }, - { hw_memory, "memory" }, - { hw_dvb, "dvb card" }, - { hw_pcmcia, "pcmcia" }, - { hw_pcmcia_ctrl, "pcmcia controller" }, - { hw_ieee1394, "firewire" }, - { hw_ieee1394_ctrl, "firewire controller" }, - { hw_hotplug, "hotplug" }, - { hw_hotplug_ctrl, "hotplug controller" }, - { hw_zip, "zip" }, - { hw_pppoe, "pppoe" }, - { hw_wlan, "wlan card" }, - { hw_dsl, "DSL adapter" }, - { hw_block, "block device" }, - { hw_tape, "tape" }, - { hw_vbe, "vesa bios" }, - { hw_bluetooth, "bluetooth" }, - { hw_unknown, "unknown" }, - { 0, NULL } -}; - -typedef enum { - hw_id_unique = 1, hw_id_parent, hw_id_child, hw_id_hwclass, hw_id_model, - hw_id_configured, hw_id_available, hw_id_needed, hw_id_cfgstring, hw_id_active -} hw_id_t; - -#ifndef LIBHD_TINY - -#define MAN_SECT_GENERAL "General" -#define MAN_SECT_STATUS "Status" -#define MAN_SECT_HARDWARE "Hardware" - -static hash_t hw_ids_general[] = { - { hw_id_unique, "UniqueID" }, - { hw_id_parent, "ParentID" }, - { hw_id_child, "ChildIDs" }, - { hw_id_hwclass, "HWClass" }, - { hw_id_model, "Model" }, - { 0, NULL } -}; - -static hash_t hw_ids_status[] = { - { hw_id_configured, "Configured" }, - { hw_id_available, "Available" }, - { hw_id_needed, "Needed" }, - { hw_id_cfgstring, "ConfigString" }, - { hw_id_active, "Active" }, - { 0, NULL } -}; - -/* structure elements from hd_t */ -typedef enum { - hwdi_bus = 1, hwdi_slot, hwdi_func, hwdi_base_class, hwdi_sub_class, - hwdi_prog_if, hwdi_dev, hwdi_vend, hwdi_sub_dev, hwdi_sub_vend, hwdi_rev, - hwdi_compat_dev, hwdi_compat_vend, hwdi_dev_name, hwdi_vend_name, - hwdi_sub_dev_name, hwdi_sub_vend_name, hwdi_rev_name, hwdi_serial, - hwdi_unix_dev_name, hwdi_unix_dev_name2, hwdi_unix_dev_names, hwdi_rom_id, - hwdi_broken, hwdi_usb_guid, hwdi_res_mem, hwdi_res_phys_mem, hwdi_res_io, - hwdi_res_irq, hwdi_res_dma, hwdi_res_size, hwdi_res_baud, hwdi_res_cache, - hwdi_res_disk_geo, hwdi_res_monitor, hwdi_res_framebuffer, hwdi_features, - hwdi_hotplug, hwdi_class_list, hwdi_drivers, hwdi_sysfs_id, - hwdi_sysfs_busid, hwdi_sysfs_link -} hw_hd_items_t; - -static hash_t hw_ids_hd_items[] = { - { hwdi_bus, "Bus" }, - { hwdi_slot, "Slot" }, - { hwdi_func, "Function" }, - { hwdi_base_class, "BaseClass" }, - { hwdi_sub_class, "SubClass" }, - { hwdi_prog_if, "ProgIF" }, - { hwdi_dev, "DeviceID" }, - { hwdi_vend, "VendorID" }, - { hwdi_sub_dev, "SubDeviceID" }, - { hwdi_sub_vend, "SubVendorID" }, - { hwdi_rev, "RevisionID" }, - { hwdi_compat_dev, "CompatDeviceID" }, - { hwdi_compat_vend, "CompatVendorID" }, - { hwdi_dev_name, "DeviceName" }, - { hwdi_vend_name, "VendorName" }, - { hwdi_sub_dev_name, "SubDeviceName" }, - { hwdi_sub_vend_name, "SubVendorName" }, - { hwdi_rev_name, "RevisionName" }, - { hwdi_serial, "Serial" }, - { hwdi_unix_dev_name, "UnixDevice" }, - { hwdi_unix_dev_name2, "UnixDeviceAlt" }, - { hwdi_unix_dev_names, "UnixDeviceList" }, - { hwdi_rom_id, "ROMID" }, - { hwdi_broken, "Broken" }, - { hwdi_usb_guid, "USBGUID" }, - { hwdi_res_phys_mem, "Res.PhysMemory" }, - { hwdi_res_mem, "Res.Memory" }, - { hwdi_res_io, "Res.IO" }, - { hwdi_res_irq, "Res.Interrupts" }, - { hwdi_res_dma, "Res.DMA" }, - { hwdi_res_size, "Res.Size" }, - { hwdi_res_baud, "Res.Baud" }, - { hwdi_res_cache, "Res.Cache" }, - { hwdi_res_disk_geo, "Res.DiskGeometry" }, - { hwdi_res_monitor, "Res.Monitor" }, - { hwdi_res_framebuffer, "Res.Framebuffer" }, - { hwdi_features, "Features" }, - { hwdi_hotplug, "Hotplug" }, - { hwdi_class_list, "HWClassList" }, - { hwdi_drivers, "Drivers" }, - { hwdi_sysfs_id, "SysfsID" }, - { hwdi_sysfs_busid, "SysfsBusID" }, - { hwdi_sysfs_link, "SysfsLink" }, - { 0, NULL } -}; -#endif - -static char *key2value(hash_t *hash, int id); - -#ifndef LIBHD_TINY - -static int value2key(hash_t *hash, char *str); -static void dump_manual(hd_data_t *hd_data); -static unsigned str2id(char *str); -static void manual2hd(hd_data_t *hd_data, hd_manual_t *entry, hd_t *hd); -static void hd2manual(hd_t *hd, hd_manual_t *entry); - -void hd_scan_manual(hd_data_t *hd_data) -{ - DIR *dir; - struct dirent *de; - hd_manual_t *entry, **entry_next; - int i; - hd_t *hd, *hd1; - - if(!hd_probe_feature(hd_data, pr_manual)) return; - - hd_data->module = mod_manual; - - /* some clean-up */ - remove_hd_entries(hd_data); - - hd_data->manual = hd_free_manual(hd_data->manual); - entry_next = &hd_data->manual; - - if((dir = opendir(HARDWARE_UNIQUE_KEYS))) { - i = 0; - while((de = readdir(dir))) { - if(*de->d_name == '.') continue; - PROGRESS(1, ++i, "read"); - if((entry = hd_manual_read_entry(hd_data, de->d_name))) { - ADD2LOG(" got %s\n", entry->unique_id); - *entry_next = entry; - entry_next = &entry->next; - } - } - closedir(dir); - } - - /* for compatibility: read old files, too */ - if((dir = opendir(HARDWARE_DIR))) { - i = 0; - while((de = readdir(dir))) { - if(*de->d_name == '.') continue; - for(entry = hd_data->manual; entry; entry = entry->next) { - if(entry->unique_id && !strcmp(entry->unique_id, de->d_name)) break; - } - if(entry) continue; - PROGRESS(2, ++i, "read"); - if((entry = hd_manual_read_entry(hd_data, de->d_name))) { - ADD2LOG(" got %s\n", entry->unique_id); - *entry_next = entry; - entry_next = &entry->next; - } - } - closedir(dir); - } - - if(hd_data->debug) dump_manual(hd_data); - - /* initialize some useful status value */ - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - !hd->status.configured && - !hd->status.available && - !hd->status.needed && - !hd->status.active && - !hd->status.invalid - ) { - hd->status.configured = status_new; - hd->status.available = hd->module == mod_manual ? status_unknown : status_yes; - hd->status.needed = status_no; - hd->status.active = status_unknown; - } - } - - hd_data->flags.keep_kmods = 1; - for(entry = hd_data->manual; entry; entry = entry->next) { - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->unique_id && !strcmp(hd->unique_id, entry->unique_id)) break; - } - - if(hd) { - /* just update config status */ - hd->status = entry->status; - hd->status.available = status_yes; - - hd->config_string = new_str(entry->config_string); - } - else { - /* add new entry */ - hd = add_hd_entry(hd_data, __LINE__, 0); - - manual2hd(hd_data, entry, hd); - - if(hd->status.available != status_unknown) hd->status.available = status_no; - - if(hd->parent_id) { - for(hd1 = hd_data->hd; hd1; hd1 = hd1->next) { - if(hd1->unique_id && !strcmp(hd1->unique_id, hd->parent_id)) { - hd->attached_to = hd1->idx; - break; - } - } - } - } - } - hd_data->flags.keep_kmods = 0; - -} - - -void hd_scan_manual2(hd_data_t *hd_data) -{ - hd_t *hd, *hd1; - - /* check if it's necessary to reconfigure this hardware */ - for(hd = hd_data->hd; hd; hd = hd->next) { - hd->status.reconfig = status_no; - - if(hd->status.needed != status_yes) continue; - - if(hd->status.available == status_no) { - hd->status.reconfig = status_yes; - continue; - } - - if(hd->status.available != status_unknown) continue; - - for(hd1 = hd_data->hd; hd1; hd1 = hd1->next) { - if(hd1 == hd) continue; - - if( - hd1->hw_class == hd->hw_class && - hd1->status.configured == status_new && - hd1->status.available == status_yes - ) break; - } - - if(hd1) hd->status.reconfig = status_yes; - } -} - - -int value2key(hash_t *hash, char *str) -{ - for(; hash->value; hash++) { - if(!strcmp(hash->value, str)) break; - } - - return hash->key; -} - -#endif - -char *key2value(hash_t *hash, int id) -{ - for(; hash->value; hash++) { - if(hash->key == id) break; - } - - return hash->value; -} - -char *hd_hw_item_name(hd_hw_item_t item) -{ - return key2value(hw_items, item); -} - - -#ifndef LIBHD_TINY - -char *hd_status_value_name(hd_status_value_t status) -{ - return key2value(status_names, status); -} - -/* - * read an entry - */ -hd_manual_t *hd_manual_read_entry(hd_data_t *hd_data, const char *id) -{ - char path[PATH_MAX]; - int i, j, line; - str_list_t *sl, *sl0; - hd_manual_t *entry; - hash_t *sect; - char *s, *s1, *s2; - int err = 0; - - snprintf(path, sizeof path, "%s/%s", HARDWARE_UNIQUE_KEYS, id); - - if(!(sl0 = read_file(path, 0, 0))) { - /* try old location, too */ - snprintf(path, sizeof path, "%s/%s", HARDWARE_DIR, id); - if(!(sl0 = read_file(path, 0, 0))) return NULL; - } - - entry = new_mem(sizeof *entry); - - // default list: no valid entries - sect = hw_ids_general + sizeof hw_ids_general / sizeof *hw_ids_general - 1; - - for(line = 1, sl = sl0; sl; sl = sl->next, line++) { - s = sl->str; - while(isspace(*s)) s++; - if(!*s || *s == '#' || *s == ';') continue; /* empty lines & comments */ - - s2 = s; - s1 = strsep(&s2, "="); - - if(!s2 && *s == '[') { - s2 = s + 1; - s1 = strsep(&s2, "]"); - if(s1) { - if(!strcmp(s1, MAN_SECT_GENERAL)) { - sect = hw_ids_general; - continue; - } - if(!strcmp(s1, MAN_SECT_STATUS)) { - sect = hw_ids_status; - continue; - } - if(!strcmp(s1, MAN_SECT_HARDWARE)) { - sect = NULL; - continue; - } - } - s2 = NULL; - } - - if(!s2) { - ADD2LOG(" %s: invalid line %d\n", id, line); - err = 1; - break; - } - - if(sect) { - i = value2key(sect, s1); - if(!i) { - ADD2LOG(" %s: invalid line %d\n", id, line); - err = 1; - break; - } - s = canon_str(s2, strlen(s2)); - switch(i) { - case hw_id_unique: - entry->unique_id = s; - s = NULL; - break; - - case hw_id_parent: - entry->parent_id = s; - s = NULL; - break; - - case hw_id_child: - entry->child_ids = s; - s = NULL; - break; - - case hw_id_hwclass: - j = value2key(hw_items, s); - entry->hw_class = j; - if(!j) err = 1; - break; - - case hw_id_model: - entry->model = s; - s = NULL; - break; - - case hw_id_configured: - j = value2key(status_names, s); - entry->status.configured = j; - if(!j) err = 1; - break; - - case hw_id_available: - j = value2key(status_names, s); - entry->status.available_orig = - entry->status.available = j; - if(!j) err = 1; - break; - - case hw_id_needed: - j = value2key(status_names, s); - entry->status.needed = j; - if(!j) err = 1; - break; - - case hw_id_active: - j = value2key(status_names, s); - entry->status.active = j; - if(!j) err = 1; - break; - - case hw_id_cfgstring: - entry->config_string = s; - s = NULL; - break; - - default: - err = 1; - } - - free_mem(s); - - if(err) { - ADD2LOG(" %s: invalid line %d\n", id, line); - break; - } - } - else { - add_str_list(&entry->key, s1); - s = canon_str(s2, strlen(s2)); - add_str_list(&entry->value, s); - free_mem(s); - } - } - - free_str_list(sl0); - - /* - * do some basic consistency checks - */ - - if(!entry->unique_id || strcmp(entry->unique_id, id)) { - ADD2LOG(" %s: unique id does not match file name\n", id); - err = 1; - } - - /* - * if the status info is completely missing, fake some: - * new hardware, not autodetectable, not needed - */ - if( - !entry->status.configured && - !entry->status.available && - !entry->status.needed && - !entry->status.invalid - ) { - entry->status.configured = status_new; - entry->status.available = status_unknown; - entry->status.needed = status_no; - } - - if(!entry->status.active) entry->status.active = status_unknown; - - if( - !entry->status.configured || - !entry->status.available || - !entry->status.needed || - !entry->status.active - ) { - ADD2LOG(" %s: incomplete status\n", id); - err = 1; - } - - if(!entry->hw_class) { - ADD2LOG(" %s: no class\n", id); - err = 1; - } - - if(!entry->model) { - ADD2LOG(" %s: no model\n", id); - err = 1; - } - - if(err) { - entry = hd_free_manual(entry); - } - - return entry; -} - - -/* - * write an entry - */ - -int hd_manual_write_entry(hd_data_t *hd_data, hd_manual_t *entry) -{ - FILE *f; - char path[PATH_MAX]; - int error = 0; - struct stat sbuf; - str_list_t *sl1, *sl2; - - if(!entry) return 0; - if(!entry->unique_id || entry->status.invalid) return 1; - - snprintf(path, sizeof path, "%s/%s", HARDWARE_UNIQUE_KEYS, entry->unique_id); - - if(!(f = fopen(path, "w"))) { - /* maybe we have to create the HARDWARE_UNIQUE_KEYS directory first... */ - - if(lstat(HARDWARE_DIR, &sbuf)) { - mkdir(HARDWARE_DIR, 0755); - } - - if(lstat(HARDWARE_UNIQUE_KEYS, &sbuf)) { - mkdir(HARDWARE_UNIQUE_KEYS, 0755); - } - - if(!(f = fopen(path, "w"))) return 2; - } - - fprintf(f, "[%s]\n", MAN_SECT_GENERAL); - - if( - !fprintf(f, "%s=%s\n", - key2value(hw_ids_general, hw_id_unique), - entry->unique_id - ) - ) error = 3; - - if( - entry->parent_id && - !fprintf(f, "%s=%s\n", - key2value(hw_ids_general, hw_id_parent), - entry->parent_id - ) - ) error = 3; - - if( - entry->child_ids && - !fprintf(f, "%s=%s\n", - key2value(hw_ids_general, hw_id_child), - entry->child_ids - ) - ) error = 3; - - if( - (entry->hw_class && key2value(hw_items, entry->hw_class)) && - !fprintf(f, "%s=%s\n", - key2value(hw_ids_general, hw_id_hwclass), - key2value(hw_items, entry->hw_class) - ) - ) error = 3; - - if( - entry->model && - !fprintf(f, "%s=%s\n", - key2value(hw_ids_general, hw_id_model), - entry->model - ) - ) error = 3; - - fprintf(f, "\n[%s]\n", MAN_SECT_STATUS); - - if( - (entry->status.configured && key2value(status_names, entry->status.configured)) && - !fprintf(f, "%s=%s\n", - key2value(hw_ids_status, hw_id_configured), - key2value(status_names, entry->status.configured) - ) - ) error = 4; - - if( - (entry->status.available && key2value(status_names, entry->status.available)) && - !fprintf(f, "%s=%s\n", - key2value(hw_ids_status, hw_id_available), - key2value(status_names, entry->status.available) - ) - ) error = 4; - - if( - (entry->status.needed && key2value(status_names, entry->status.needed)) && - !fprintf(f, "%s=%s\n", - key2value(hw_ids_status, hw_id_needed), - key2value(status_names, entry->status.needed) - ) - ) error = 4; - - if( - (entry->status.active && key2value(status_names, entry->status.active)) && - !fprintf(f, "%s=%s\n", - key2value(hw_ids_status, hw_id_active), - key2value(status_names, entry->status.active) - ) - ) error = 4; - - if( - entry->config_string && - !fprintf(f, "%s=%s\n", - key2value(hw_ids_status, hw_id_cfgstring), - entry->config_string - ) - ) error = 4; - - fprintf(f, "\n[%s]\n", MAN_SECT_HARDWARE); - - for( - sl1 = entry->key, sl2 = entry->value; - sl1 && sl2; - sl1 = sl1->next, sl2 = sl2->next - ) { - if(!fprintf(f, "%s=%s\n", sl1->str, sl2->str)) { - error = 5; - break; - } - } - - fputs("\n", f); - - fclose(f); - - /* remove old file */ - if(!error) { - snprintf(path, sizeof path, "%s/%s", HARDWARE_DIR, entry->unique_id); - unlink(path); - } - - return error; -} - - -void dump_manual(hd_data_t *hd_data) -{ - hd_manual_t *entry; - static const char *txt = "manually configured hardware"; - str_list_t *sl1, *sl2; - - if(!hd_data->manual) return; - - ADD2LOG("----- %s -----\n", txt); - for(entry = hd_data->manual; entry; entry = entry->next) { - ADD2LOG(" %s=%s\n", - key2value(hw_ids_general, hw_id_unique), - entry->unique_id - ); - if(entry->parent_id) - ADD2LOG(" %s=%s\n", - key2value(hw_ids_general, hw_id_parent), - entry->parent_id - ); - if(entry->child_ids) - ADD2LOG(" %s=%s\n", - key2value(hw_ids_general, hw_id_child), - entry->child_ids - ); - ADD2LOG(" %s=%s\n", - key2value(hw_ids_general, hw_id_hwclass), - key2value(hw_items, entry->hw_class) - ); - ADD2LOG(" %s=%s\n", - key2value(hw_ids_general, hw_id_model), - entry->model - ); - ADD2LOG(" %s=%s\n", - key2value(hw_ids_status, hw_id_configured), - key2value(status_names, entry->status.configured) - ); - ADD2LOG(" %s=%s\n", - key2value(hw_ids_status, hw_id_available), - key2value(status_names, entry->status.available) - ); - ADD2LOG(" %s=%s\n", - key2value(hw_ids_status, hw_id_needed), - key2value(status_names, entry->status.needed) - ); - ADD2LOG(" %s=%s\n", - key2value(hw_ids_status, hw_id_active), - key2value(status_names, entry->status.active) - ); - if(entry->config_string) - ADD2LOG(" %s=%s\n", - key2value(hw_ids_status, hw_id_cfgstring), - entry->config_string - ); - for( - sl1 = entry->key, sl2 = entry->value; - sl1 && sl2; - sl1 = sl1->next, sl2 = sl2->next - ) { - ADD2LOG(" %s=%s\n", sl1->str, sl2->str); - } - } - ADD2LOG("----- %s end -----\n", txt); -} - - -unsigned str2id(char *str) -{ - unsigned id; - unsigned tag = 0; - - if(strlen(str) == 3) return name2eisa_id(str); - - switch(*str) { - case 'p': - tag = TAG_PCI; str++; break; - - case 'r': - str++; break; - - case 'u': - tag = TAG_USB; str++; break; - - case 's': - tag = TAG_SPECIAL; str++; break; - - case 'P': - tag = TAG_PCMCIA; str++; break; - - } - - id = strtoul(str, &str, 16); - if(*str) return 0; - - return MAKE_ID(tag, ID_VALUE(id)); -} - - -/* - * move info from hd_manual_t to hd_t - */ -void manual2hd(hd_data_t *hd_data, hd_manual_t *entry, hd_t *hd) -{ - str_list_t *sl1, *sl2; - hw_hd_items_t item; - unsigned tag, u0, u1, u2, u3, u4; - hd_res_t *res; - uint64_t u64_0, u64_1; - char *s; - int i; - - if(!hd || !entry) return; - - hd->unique_id = new_str(entry->unique_id); - hd->parent_id = new_str(entry->parent_id); - hd->child_ids = hd_split(',', entry->child_ids); - hd->model = new_str(entry->model); - hd->hw_class = entry->hw_class; - - hd->config_string = new_str(entry->config_string); - - hd->status = entry->status; - - for( - sl1 = entry->key, sl2 = entry->value; - sl1 && sl2; - sl1 = sl1->next, sl2 = sl2->next - ) { - switch(item = value2key(hw_ids_hd_items, sl1->str)) { - case hwdi_bus: - hd->bus.id = strtoul(sl2->str, NULL, 0); - break; - - case hwdi_slot: - hd->slot = strtoul(sl2->str, NULL, 0); - break; - - case hwdi_func: - hd->func = strtoul(sl2->str, NULL, 0); - break; - - case hwdi_base_class: - hd->base_class.id = strtoul(sl2->str, NULL, 0); - break; - - case hwdi_sub_class: - hd->sub_class.id = strtoul(sl2->str, NULL, 0); - break; - - case hwdi_prog_if: - hd->prog_if.id = strtoul(sl2->str, NULL, 0); - break; - - case hwdi_dev: - hd->device.id = str2id(sl2->str); - break; - - case hwdi_vend: - hd->vendor.id = str2id(sl2->str); - break; - - case hwdi_sub_dev: - hd->sub_device.id = str2id(sl2->str); - break; - - case hwdi_sub_vend: - hd->sub_vendor.id = str2id(sl2->str); - break; - - case hwdi_rev: - hd->revision.id = strtoul(sl2->str, NULL, 0); - break; - - case hwdi_compat_dev: - hd->compat_device.id = str2id(sl2->str); - break; - - case hwdi_compat_vend: - hd->compat_vendor.id = str2id(sl2->str); - break; - - case hwdi_dev_name: - hd->device.name = new_str(sl2->str); - break; - - case hwdi_vend_name: - hd->vendor.name = new_str(sl2->str); - break; - - case hwdi_sub_dev_name: - hd->sub_device.name = new_str(sl2->str); - break; - - case hwdi_sub_vend_name: - hd->sub_vendor.name = new_str(sl2->str); - break; - - case hwdi_rev_name: - hd->revision.name = new_str(sl2->str); - break; - - case hwdi_serial: - hd->serial = new_str(sl2->str); - break; - - case hwdi_unix_dev_name: - hd->unix_dev_name = new_str(sl2->str); - break; - - case hwdi_unix_dev_name2: - hd->unix_dev_name2 = new_str(sl2->str); - break; - - case hwdi_unix_dev_names: - hd->unix_dev_names = hd_split(' ', sl2->str); - break; - - case hwdi_drivers: - hd->drivers = hd_split('|', sl2->str); - break; - - case hwdi_sysfs_id: - hd->sysfs_id = new_str(sl2->str); - break; - - case hwdi_sysfs_busid: - hd->sysfs_bus_id = new_str(sl2->str); - break; - - case hwdi_sysfs_link: - hd->sysfs_device_link = new_str(sl2->str); - break; - - case hwdi_rom_id: - hd->rom_id = new_str(sl2->str); - break; - - case hwdi_broken: - hd->broken = strtoul(sl2->str, NULL, 0); - break; - - case hwdi_usb_guid: - hd->usb_guid = new_str(sl2->str); - break; - - case hwdi_hotplug: - hd->hotplug = strtol(sl2->str, NULL, 0); - break; - - case hwdi_class_list: - for( - u0 = 0, s = sl2->str; - u0 < sizeof hd->hw_class_list / sizeof *hd->hw_class_list; - u0++ - ) { - if(*s && s[1] && (i = hex(s, 2)) >= 0) { - hd->hw_class_list[u0] = i; - s += 2; - } - else { - break; - } - } - break; - - case hwdi_res_mem: - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->any.type = res_mem; - if(sscanf(sl2->str, "0x%"SCNx64",0x%"SCNx64",%u,%u,%u", &u64_0, &u64_1, &u0, &u1, &u2) == 5) { - res->mem.base = u64_0; - res->mem.range = u64_1; - res->mem.enabled = u0; - res->mem.access = u1; - res->mem.prefetch = u2; - } - break; - - case hwdi_res_phys_mem: - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->any.type = res_phys_mem; - if(sscanf(sl2->str, "0x%"SCNx64"", &u64_0) == 1) { - res->phys_mem.range = u64_0; - } - break; - - case hwdi_res_io: - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->any.type = res_io; - if(sscanf(sl2->str, "0x%"SCNx64",0x%"SCNx64",%u,%u", &u64_0, &u64_1, &u0, &u1) == 4) { - res->io.base = u64_0; - res->io.range = u64_1; - res->io.enabled = u0; - res->io.access = u1; - } - break; - - case hwdi_res_irq: - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->any.type = res_irq; - if(sscanf(sl2->str, "%u,%u,%u", &u0, &u1, &u2) == 3) { - res->irq.base = u0; - res->irq.triggered = u1; - res->irq.enabled = u2; - } - break; - - case hwdi_res_dma: - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->any.type = res_dma; - if(sscanf(sl2->str, "%u,%u", &u0, &u1) == 2) { - res->dma.base = u0; - res->dma.enabled = u1; - } - break; - - case hwdi_res_size: - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->any.type = res_size; - if(sscanf(sl2->str, "%u,%u,%u", &u0, &u1, &u2) == 3) { - res->size.unit = u0; - res->size.val1 = u1; - res->size.val2 = u2; - } - break; - - case hwdi_res_baud: - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->any.type = res_baud; - if(sscanf(sl2->str, "%u,%u,%u,%u,%u", &u0, &u1, &u2, &u3, &u4) == 5) { - res->baud.speed = u0; - res->baud.bits = u1; - res->baud.stopbits = u2; - res->baud.parity = (char) u3; - res->baud.handshake = (char) u4; - } - break; - - case hwdi_res_cache: - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->any.type = res_cache; - if(sscanf(sl2->str, "%u", &u0) == 1) { - res->cache.size = u0; - } - break; - - case hwdi_res_disk_geo: - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->any.type = res_disk_geo; - if(sscanf(sl2->str, "%u,%u,%u,%u", &u0, &u1, &u2, &u3) == 4) { - res->disk_geo.cyls = u0; - res->disk_geo.heads = u1; - res->disk_geo.sectors = u2; - res->disk_geo.geotype = u3; - } - break; - - case hwdi_res_monitor: - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->any.type = res_monitor; - if(sscanf(sl2->str, "%u,%u,%u,%u", &u0, &u1, &u2, &u3) == 4) { - res->monitor.width = u0; - res->monitor.height = u1; - res->monitor.vfreq = u2; - res->monitor.interlaced = u3; - } - break; - - case hwdi_res_framebuffer: - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->any.type = res_framebuffer; - if(sscanf(sl2->str, "%u,%u,%u,%u,%u", &u0, &u1, &u2, &u3, &u4) == 5) { - res->framebuffer.width = u0; - res->framebuffer.height = u1; - res->framebuffer.bytes_p_line = u2; - res->framebuffer.colorbits = u3; - res->framebuffer.mode = u4; - } - break; - - case hwdi_features: - u0 = strtoul(sl2->str, NULL, 0); - if(u0 & (1 << 0)) hd->is.agp = 1; - if(u0 & (1 << 1)) hd->is.isapnp = 1; - if(u0 & (1 << 2)) hd->is.softraiddisk = 1; - if(u0 & (1 << 3)) hd->is.zip = 1; - if(u0 & (1 << 4)) hd->is.cdr = 1; - if(u0 & (1 << 5)) hd->is.cdrw = 1; - if(u0 & (1 << 6)) hd->is.dvd = 1; - if(u0 & (1 << 7)) hd->is.dvdr = 1; - if(u0 & (1 << 8)) hd->is.dvdram = 1; - if(u0 & (1 << 9)) hd->is.pppoe = 1; - if(u0 & (1 << 10)) hd->is.wlan = 1; - break; - } - } - - if(hd->device.id || hd->vendor.id) { - tag = ID_TAG(hd->device.id); - tag = tag ? tag : ID_TAG(hd->vendor.id); - tag = tag ? tag : TAG_PCI; - hd->device.id = MAKE_ID(tag, ID_VALUE(hd->device.id)); - hd->vendor.id = MAKE_ID(tag, ID_VALUE(hd->vendor.id)); - } - - if(hd->sub_device.id || hd->sub_vendor.id) { - tag = ID_TAG(hd->sub_device.id); - tag = tag ? tag : ID_TAG(hd->sub_vendor.id); - tag = tag ? tag : TAG_PCI; - hd->sub_device.id = MAKE_ID(tag, ID_VALUE(hd->sub_device.id)); - hd->sub_vendor.id = MAKE_ID(tag, ID_VALUE(hd->sub_vendor.id)); - } - - if(hd->compat_device.id || hd->compat_vendor.id) { - tag = ID_TAG(hd->compat_device.id); - tag = tag ? tag : ID_TAG(hd->compat_vendor.id); - tag = tag ? tag : TAG_PCI; - hd->compat_device.id = MAKE_ID(tag, ID_VALUE(hd->compat_device.id)); - hd->compat_vendor.id = MAKE_ID(tag, ID_VALUE(hd->compat_vendor.id)); - } - - if(hd->status.available == status_unknown) hd->is.manual = 1; - - /* create some entries, if missing */ - - if(!hd->device.id && !hd->vendor.id && !hd->device.name) { - hd->device.name = new_str(hd->model); - } - - if(hd->hw_class && !hd->base_class.id) { - switch(hd->hw_class) { - case hw_cdrom: - hd->base_class.id = bc_storage_device; - hd->sub_class.id = sc_sdev_cdrom; - break; - - case hw_mouse: - hd->base_class.id = bc_mouse; - hd->sub_class.id = sc_mou_other; - break; - - default: - break; - } - } - - hddb_add_info(hd_data, hd); -} - - -void hd2manual(hd_t *hd, hd_manual_t *entry) -{ - char *s, *t; - hd_res_t *res; - str_list_t *sl; - unsigned u; - - if(!hd || !entry) return; - - entry->unique_id = new_str(hd->unique_id); - entry->parent_id = new_str(hd->parent_id); - entry->child_ids = hd_join(",", hd->child_ids); - entry->model = new_str(hd->model); - entry->hw_class = hd->hw_class; - - entry->config_string = new_str(hd->config_string); - - entry->status = hd->status; - - if( - !entry->status.configured && - !entry->status.available && - !entry->status.needed && - !entry->status.active && - !entry->status.invalid - ) { - entry->status.configured = status_new; - entry->status.available = hd->module == mod_manual ? status_unknown : status_yes; - entry->status.needed = status_no; - entry->status.active = status_unknown; - } - - s = NULL; - - if(hd->broken) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_broken)); - str_printf(&s, 0, "0x%x", hd->broken); - add_str_list(&entry->value, s); - } - - if(hd->bus.id) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_bus)); - str_printf(&s, 0, "0x%x", hd->bus.id); - add_str_list(&entry->value, s); - } - - if(hd->slot) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_slot)); - str_printf(&s, 0, "0x%x", hd->slot); - add_str_list(&entry->value, s); - } - - if(hd->func) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_func)); - str_printf(&s, 0, "0x%x", hd->func); - add_str_list(&entry->value, s); - } - - if(hd->base_class.id) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_base_class)); - str_printf(&s, 0, "0x%x", hd->base_class.id); - add_str_list(&entry->value, s); - } - - if(hd->sub_class.id) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_sub_class)); - str_printf(&s, 0, "0x%x", hd->sub_class.id); - add_str_list(&entry->value, s); - } - - if(hd->prog_if.id) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_prog_if)); - str_printf(&s, 0, "0x%x", hd->prog_if.id); - add_str_list(&entry->value, s); - } - - if(hd->device.id || hd->vendor.id) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_vend)); - add_str_list(&entry->value, vend_id2str(hd->vendor.id)); - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_dev)); - str_printf(&s, 0, "%04x", ID_VALUE(hd->device.id)); - add_str_list(&entry->value, s); - } - - if(hd->sub_device.id || hd->sub_vendor.id) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_sub_vend)); - add_str_list(&entry->value, vend_id2str(hd->sub_vendor.id)); - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_sub_dev)); - str_printf(&s, 0, "%04x", ID_VALUE(hd->sub_device.id)); - add_str_list(&entry->value, s); - } - - if(hd->revision.id) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_rev)); - str_printf(&s, 0, "0x%x", hd->revision.id); - add_str_list(&entry->value, s); - } - - if(hd->compat_device.id || hd->compat_vendor.id) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_compat_vend)); - add_str_list(&entry->value, vend_id2str(hd->compat_vendor.id)); - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_compat_dev)); - str_printf(&s, 0, "%04x", ID_VALUE(hd->compat_device.id)); - add_str_list(&entry->value, s); - } - - if(hd->device.name) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_dev_name)); - add_str_list(&entry->value, hd->device.name); - } - - if(hd->vendor.name) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_vend_name)); - add_str_list(&entry->value, hd->vendor.name); - } - - if(hd->sub_device.name) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_sub_dev_name)); - add_str_list(&entry->value, hd->sub_device.name); - } - - if(hd->sub_vendor.name) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_sub_vend_name)); - add_str_list(&entry->value, hd->sub_vendor.name); - } - - if(hd->revision.name) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_rev_name)); - add_str_list(&entry->value, hd->revision.name); - } - - if(hd->serial) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_serial)); - add_str_list(&entry->value, hd->serial); - } - - if(hd->unix_dev_name) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_unix_dev_name)); - add_str_list(&entry->value, hd->unix_dev_name); - } - - if(hd->unix_dev_name2) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_unix_dev_name2)); - add_str_list(&entry->value, hd->unix_dev_name2); - } - - if(hd->unix_dev_names) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_unix_dev_names)); - s = free_mem(s); - s = hd_join(" ", hd->unix_dev_names); - add_str_list(&entry->value, s); - } - - if(hd->drivers) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_drivers)); - s = free_mem(s); - s = hd_join("|", hd->drivers); - add_str_list(&entry->value, s); - } - - if(hd->sysfs_id) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_sysfs_id)); - add_str_list(&entry->value, hd->sysfs_id); - } - - if(hd->sysfs_bus_id) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_sysfs_busid)); - add_str_list(&entry->value, hd->sysfs_bus_id); - } - - if(hd->sysfs_device_link) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_sysfs_link)); - add_str_list(&entry->value, hd->sysfs_device_link); - } - - if(hd->rom_id) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_rom_id)); - add_str_list(&entry->value, hd->rom_id); - } - - if(hd->usb_guid) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_usb_guid)); - add_str_list(&entry->value, hd->usb_guid); - } - - if(hd->hotplug) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_hotplug)); - str_printf(&s, 0, "%d", hd->hotplug); - add_str_list(&entry->value, s); - } - - s = free_mem(s); - for(u = 0; u < sizeof hd->hw_class_list / sizeof *hd->hw_class_list; u++) { - str_printf(&s, -1, "%02x", hd->hw_class_list[u]); - } - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_class_list)); - add_str_list(&entry->value, s); - - u = 0; - if(hd->is.agp) u |= 1 << 0; - if(hd->is.isapnp) u |= 1 << 1; - if(hd->is.softraiddisk) u |= 1 << 2; - if(hd->is.zip) u |= 1 << 3; - if(hd->is.cdr) u |= 1 << 4; - if(hd->is.cdrw) u |= 1 << 5; - if(hd->is.dvd) u |= 1 << 6; - if(hd->is.dvdr) u |= 1 << 7; - if(hd->is.dvdram) u |= 1 << 8; - if(hd->is.pppoe) u |= 1 << 9; - if(hd->is.wlan) u |= 1 << 10; - - if(u) { - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_features)); - str_printf(&s, 0, "0x%x", u); - add_str_list(&entry->value, s); - } - - for(res = hd->res; res; res = res->next) { - sl = NULL; - switch(res->any.type) { - case res_mem: - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_res_mem)); - str_printf(&s, 0, "0x%"PRIx64"", res->mem.base); - add_str_list(&sl, s); - str_printf(&s, 0, "0x%"PRIx64"", res->mem.range); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->mem.enabled); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->mem.access); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->mem.prefetch); - add_str_list(&sl, s); - break; - - case res_phys_mem: - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_res_phys_mem)); - str_printf(&s, 0, "0x%"PRIx64"", res->phys_mem.range); - add_str_list(&sl, s); - break; - - case res_io: - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_res_io)); - str_printf(&s, 0, "0x%"PRIx64"", res->io.base); - add_str_list(&sl, s); - str_printf(&s, 0, "0x%"PRIx64"", res->io.range); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->io.enabled); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->io.access); - add_str_list(&sl, s); - break; - - case res_irq: - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_res_irq)); - str_printf(&s, 0, "%u", res->irq.base); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->irq.triggered); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->irq.enabled); - add_str_list(&sl, s); - break; - - case res_dma: - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_res_dma)); - str_printf(&s, 0, "%u", res->dma.base); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->dma.enabled); - add_str_list(&sl, s); - break; - - case res_size: - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_res_size)); - str_printf(&s, 0, "%u", res->size.unit); - add_str_list(&sl, s); - str_printf(&s, 0, "%"PRIu64, res->size.val1); - add_str_list(&sl, s); - str_printf(&s, 0, "%"PRIu64, res->size.val2); - add_str_list(&sl, s); - break; - - case res_baud: - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_res_baud)); - str_printf(&s, 0, "%u", res->baud.speed); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->baud.bits); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->baud.stopbits); - add_str_list(&sl, s); - str_printf(&s, 0, "0x%02x", (unsigned) res->baud.parity); - add_str_list(&sl, s); - str_printf(&s, 0, "0x%02x", (unsigned) res->baud.handshake); - add_str_list(&sl, s); - break; - - case res_cache: - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_res_cache)); - str_printf(&s, 0, "%u", res->cache.size); - add_str_list(&sl, s); - break; - - case res_disk_geo: - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_res_disk_geo)); - str_printf(&s, 0, "%u", res->disk_geo.cyls); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->disk_geo.heads); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->disk_geo.sectors); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->disk_geo.geotype); - add_str_list(&sl, s); - break; - - case res_monitor: - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_res_monitor)); - str_printf(&s, 0, "%u", res->monitor.width); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->monitor.height); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->monitor.vfreq); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->monitor.interlaced); - add_str_list(&sl, s); - break; - - case res_framebuffer: - add_str_list(&entry->key, key2value(hw_ids_hd_items, hwdi_res_framebuffer)); - str_printf(&s, 0, "%u", res->framebuffer.width); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->framebuffer.height); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->framebuffer.bytes_p_line); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->framebuffer.colorbits); - add_str_list(&sl, s); - str_printf(&s, 0, "%u", res->framebuffer.mode); - add_str_list(&sl, s); - break; - - default: - break; - } - /* keep entry->key & entry->value symmetrical! */ - if(sl) { - t = hd_join(",", sl); - add_str_list(&entry->value, t); - free_mem(t); - free_str_list(sl); - } - } - - free_mem(s); -} - - -hd_t *hd_read_config(hd_data_t *hd_data, const char *id) -{ - hd_t *hd = NULL; - hd_manual_t *entry; - - hddb_init(hd_data); - - entry = hd_manual_read_entry(hd_data, id); - - if(entry) { - hd = new_mem(sizeof *hd); - hd->module = hd_data->module; - hd->line = __LINE__; - hd->tag.freeit = 1; /* make it a 'stand alone' entry */ - manual2hd(hd_data, entry, hd); - hd_free_manual(entry); - } - - return hd; -} - - -int hd_write_config(hd_data_t *hd_data, hd_t *hd) -{ - int err = 0; - hd_manual_t *entry; - - if(!hd_report_this(hd_data, hd)) return 0; - - entry = new_mem(sizeof *entry); - - hd2manual(hd, entry); - - err = entry->unique_id ? hd_manual_write_entry(hd_data, entry) : 5; - - hd_free_manual(entry); - - return err; -} - - -#endif /* LIBHD_TINY */ - diff --git a/src/hwinfo/src/hd/manual.h b/src/hwinfo/src/hd/manual.h deleted file mode 100644 index a08e642c37..0000000000 --- a/src/hwinfo/src/hd/manual.h +++ /dev/null @@ -1,2 +0,0 @@ -void hd_scan_manual(hd_data_t *hd_data); -void hd_scan_manual2(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/memory.c b/src/hwinfo/src/hd/memory.c deleted file mode 100644 index d2f394869c..0000000000 --- a/src/hwinfo/src/hd/memory.c +++ /dev/null @@ -1,206 +0,0 @@ -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "memory.h" -#include "klog.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * memory stuff - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -uint64_t kcore_mem(hd_data_t *hd_data); -uint64_t klog_mem(hd_data_t *hd_data, uint64_t *alt); -uint64_t klog_mem2(hd_data_t *hd_data); -uint64_t meminfo_mem(hd_data_t *hd_data); - -void hd_scan_memory(hd_data_t *hd_data) -{ - hd_t *hd; - uint64_t kcore, klog, klog_alt, klog2, meminfo, msize0, msize1, u; - hd_res_t *res; - int i; - int exact; - - if(!hd_probe_feature(hd_data, pr_memory)) return; - - hd_data->module = mod_memory; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "main memory size"); - - kcore = kcore_mem(hd_data); - klog = klog_mem(hd_data, &klog_alt); - klog2 = klog_mem2(hd_data); - if(klog2 > klog) klog = klog2; - meminfo = meminfo_mem(hd_data); - - msize0 = meminfo > klog ? meminfo : klog; - if(!msize0) msize0 = kcore; - - exact = 0; - if(msize0 && kcore >= msize0 && ((kcore - msize0) << 4) / msize0 == 0) { - /* trust kcore value if it's approx. msize0 */ - msize0 = kcore; - exact = 1; - } - msize1 = msize0; - if(meminfo > msize1) { msize1 = meminfo; exact = 0; } - if(klog_alt > msize0) msize0 = klog_alt; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_internal; - hd->sub_class.id = sc_int_main_mem; - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->mem.type = res_mem; - res->mem.range = msize0; - res->mem.access = acc_rw; - res->mem.enabled = 1; - - /* round it somewhat */ - for(i = 0, u = msize1; u; i++) { - u >>= 1; - } - if(i > 10) { /* We *do* have at least 1k memory, do we? */ - msize1 >>= i - (exact ? 8 : 5); - msize1++; - msize1 >>= 1; - msize1 <<= i - (exact ? 7 : 4); - } - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->phys_mem.type = res_phys_mem; - res->phys_mem.range = msize1; -} - -uint64_t kcore_mem(hd_data_t *hd_data) -{ - uint64_t u = 0; - size_t ps = getpagesize(); - struct stat sb; - - if(!stat(PROC_KCORE, &sb)) { - u = sb.st_size; - if(u > ps) u -= ps; - -#if 0 - /* we'll assume no mem modules with less than 256k */ - u += 1 << 17; - u &= -1 << 18; -#endif - } - - ADD2LOG(" kcore mem: 0x%"PRIx64"\n", u); - - return u; -} - - -uint64_t klog_mem(hd_data_t *hd_data, uint64_t *alt) -{ - uint64_t u = 0, u0, u1, u2, u3, mem0 = 0, mem1 = 0; - str_list_t *sl; - char *s; - int i; - - if(!hd_data->klog) read_klog(hd_data); - - for(sl = hd_data->klog; sl; sl = sl->next) { - if(strstr(sl->str, "<6>Memory: ") == sl->str) { - if(sscanf(sl->str, "<6>Memory: %"SCNu64"k/%"SCNu64"k", &u0, &u1) == 2) { - mem0 = u1 << 10; - } - if( - (i = sscanf(sl->str, "<6>Memory: %"SCNu64"k available (%"SCNu64"k kernel code, %"SCNu64"k data, %"SCNu64"k", &u0, &u1, &u2, &u3)) == 4 || i == 1 - ) { - mem0 = (i == 1 ? u0 : u0 + u1 + u2 + u3) << 10; - } - if( - (s = strstr(sl->str, "[")) && - sscanf(s, "[%"SCNx64",%"SCNx64"]", &u0, &u1) == 2 && - u1 > u0 - ) { - mem1 = u1 - u0; - } - break; - } - } - - u = mem0 ? mem0 : mem1; - -#if 0 - /* round it somewhat */ - for(i = 0, u0 = u; u0; i++) { - u0 >>= 1; - } - if(i > 10) { /* We *do* have at least 1k memory, do we? */ - u >>= i - 6; - u++; - u >>= 1; - u <<= i - 5; - } -#endif - - ADD2LOG(" klog mem 0: 0x%"PRIx64"\n", mem0); - ADD2LOG(" klog mem 1: 0x%"PRIx64"\n", mem1); - ADD2LOG(" klog mem: 0x%"PRIx64"\n", u); - - *alt = mem1; - - return u; -} - -uint64_t klog_mem2(hd_data_t *hd_data) -{ - uint64_t u0, u1, mem = 0; - str_list_t *sl; - char buf[64]; - - if(!hd_data->klog) read_klog(hd_data); - - for(sl = hd_data->klog; sl; sl = sl->next) { - if(strstr(sl->str, "<6>BIOS-provided physical RAM map:") == sl->str) { - for(sl = sl->next ; sl; sl = sl->next) { - ADD2LOG(" -- %s", sl->str); - if(sscanf(sl->str, "<4> BIOS-e820: %"SCNx64" - %"SCNx64" (%63s", &u0, &u1, buf) != 3) break; - if(strcmp(buf, "usable)")) continue; - if(u1 < u0) break; - mem += u1 - u0; - } - break; - } - } - - ADD2LOG(" bios mem: 0x%"PRIx64"\n", mem); - - return mem; -} - -uint64_t meminfo_mem(hd_data_t *hd_data) -{ - uint64_t u = 0, u0; - str_list_t *sl; - - sl = read_file(PROC_MEMINFO, 0, 1); - - if(sl && sscanf(sl->str, "MemTotal: %"SCNu64"", &u0) == 1) { - u = u0 << 10; - } - - free_str_list(sl); - - ADD2LOG(" meminfo: 0x%"PRIx64"\n", u); - - return u; -} - - diff --git a/src/hwinfo/src/hd/memory.h b/src/hwinfo/src/hd/memory.h deleted file mode 100644 index f76aa78e0f..0000000000 --- a/src/hwinfo/src/hd/memory.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_memory(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/misc.c b/src/hwinfo/src/hd/misc.c deleted file mode 100644 index 1780ccd691..0000000000 --- a/src/hwinfo/src/hd/misc.c +++ /dev/null @@ -1,742 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "hd.h" -#include "hd_int.h" -#include "misc.h" -#include "klog.h" - -static void read_ioports(misc_t *m); -static void read_dmas(misc_t *m); -static void read_irqs(misc_t *m); -static int active_vga_card(hd_t *); - -static void dump_misc_proc_data(hd_data_t *hd_data); -static void dump_misc_data(hd_data_t *hd_data); - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * misc info - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -void hd_scan_misc(hd_data_t *hd_data) -{ - hd_t *hd; - hd_res_t *res; - int fd, i; - char *s = NULL; - bios_info_t *bt = NULL; - char par[] = "parport0"; - int fd_ser0, fd_ser1; - - if(!hd_probe_feature(hd_data, pr_misc)) return; - - hd_data->module = mod_misc; - - /* some clean-up */ - remove_hd_entries(hd_data); - hd_data->misc = free_misc(hd_data->misc); - - PROGRESS(9, 0, "kernel log"); - read_klog(hd_data); - if((hd_data->debug & HD_DEB_MISC)) dump_klog(hd_data); - - PROGRESS(1, 0, "misc data"); - hd_data->misc = new_mem(sizeof *hd_data->misc); - - /* this is enough to load the module */ - fd_ser0 = fd_ser1 = -1; - -#if !defined(__sparc__) - /* On sparc, the close needs too long */ - if(hd_probe_feature(hd_data, pr_misc_serial)) { - PROGRESS(1, 1, "open serial"); - fd_ser0 = open("/dev/ttyS0", O_RDONLY | O_NONBLOCK); - fd_ser1 = open("/dev/ttyS1", O_RDONLY | O_NONBLOCK); - /* keep the devices open until the resources have been read */ - } -#endif - - /* this is enough to load the module */ - if(!hd_data->flags.no_parport && hd_probe_feature(hd_data, pr_misc_par)) { - PROGRESS(1, 2, "open parallel"); - /* what can the BIOS tell us? */ - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_internal && - hd->sub_class.id == sc_int_bios && - hd->detail && - hd->detail->type == hd_detail_bios && - hd->detail->bios.data - ) break; - } - if(hd) { - bt = hd->detail->bios.data; - if(bt->par_port0) { - str_printf(&s, 0, "io=0x%x", bt->par_port0); - if(bt->par_port1) { - str_printf(&s, -1, ",0x%x", bt->par_port1); - if(bt->par_port2) str_printf(&s, -1, ",0x%x", bt->par_port2); - } - str_printf(&s, -1, " irq=none,none,none"); - } - unload_module(hd_data, "parport_probe"); - unload_module(hd_data, "lp"); - unload_module(hd_data, "parport_pc"); - unload_module(hd_data, "parport"); - - /* now load it with the right io */ - load_module(hd_data, "parport"); - load_module_with_params(hd_data, "parport_pc", s); - free_mem(s); - } - /* now load the rest of the modules */ - fd = open("/dev/lp0", O_RDONLY | O_NONBLOCK); - if(fd >= 0) close(fd); - } - - /* - * floppy driver resources are allocated only temporarily, - * so we access it just before we read the resources - */ - if(hd_probe_feature(hd_data, pr_misc_floppy)) { - /* look for a floppy *device* entry... */ - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage_device && - hd->sub_class.id == sc_sdev_floppy && - hd->unix_dev_name && - !strncmp(hd->unix_dev_name, "/dev/fd", sizeof "/dev/fd" - 1) - ) { - - PROGRESS(1, 3, "read floppy"); - i = 5; - hd->block0 = read_block0(hd_data, hd->unix_dev_name, &i); - hd->is.notready = hd->block0 ? 0 : 1; - if(i < 0) { - hd->tag.remove = 1; - ADD2LOG("misc.floppy: removing floppy entry %u (timed out)\n", hd->idx); - } - - if(!hd->is.notready) { - struct hd_geometry geo; - int fd; - unsigned size, blk_size = 0x200; - - fd = open(hd->unix_dev_name, O_RDONLY | O_NONBLOCK); - if(fd >= 0) { - if(!ioctl(fd, HDIO_GETGEO, &geo)) { - ADD2LOG("floppy ioctl(geo) ok\n"); - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->disk_geo.type = res_disk_geo; - res->disk_geo.cyls = geo.cylinders; - res->disk_geo.heads = geo.heads; - res->disk_geo.sectors = geo.sectors; - res->disk_geo.geotype = geo_logical; - size = geo.cylinders * geo.heads * geo.sectors; - for(res = hd->res; res; res = res->next) { - if(res->any.type == res_size && res->size.unit == size_unit_sectors) { - res->size.val1 = size; res->size.val2 = blk_size; - break; - } - } - if(!res) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->size.type = res_size; - res->size.unit = size_unit_sectors; - res->size.val1 = size; res->size.val2 = blk_size; - } - } - close(fd); - } - } - - break; - } - } - remove_tagged_hd_entries(hd_data); - } - - PROGRESS(2, 1, "io"); - read_ioports(hd_data->misc); - - PROGRESS(2, 2, "dma"); - read_dmas(hd_data->misc); - - PROGRESS(2, 3, "irq"); - read_irqs(hd_data->misc); - - if((hd_data->debug & HD_DEB_MISC)) dump_misc_proc_data(hd_data); - - if(fd_ser0 >= 0) close(fd_ser0); - if(fd_ser1 >= 0) close(fd_ser1); - - /* now create some system generic entries */ - - /* FPU */ - PROGRESS(3, 0, "FPU"); - res = NULL; - gather_resources(hd_data->misc, &res, "fpu", 0); - if(res) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_internal; - hd->sub_class.id = sc_int_fpu; - hd->res = res; - } - - /* DMA */ - PROGRESS(3, 1, "DMA"); - res = NULL; - gather_resources(hd_data->misc, &res, "dma1", 0); - gather_resources(hd_data->misc, &res, "dma2", 0); - gather_resources(hd_data->misc, &res, "dma page reg", 0); - gather_resources(hd_data->misc, &res, "cascade", W_DMA); - if(res) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_system; - hd->sub_class.id = sc_sys_dma; - hd->res = res; - } - - /* PIC */ - PROGRESS(3, 2, "PIC"); - res = NULL; - gather_resources(hd_data->misc, &res, "pic1", 0); - gather_resources(hd_data->misc, &res, "pic2", 0); - gather_resources(hd_data->misc, &res, "cascade", W_IRQ); - if(res) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_system; - hd->sub_class.id = sc_sys_pic; - hd->res = res; - } - - /* timer */ - PROGRESS(3, 3, "timer"); - res = NULL; - gather_resources(hd_data->misc, &res, "timer", 0); - if(res) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_system; - hd->sub_class.id = sc_sys_timer; - hd->res = res; - } - - /* real time clock */ - PROGRESS(3, 4, "RTC"); - res = NULL; - gather_resources(hd_data->misc, &res, "rtc", 0); - if(res) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_system; - hd->sub_class.id = sc_sys_rtc; - hd->res = res; - } - - /* keyboard */ - res = NULL; - gather_resources(hd_data->misc, &res, "keyboard", 0); - if(res) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_input; - hd->sub_class.id = sc_inp_keyb; - hd->res = res; - } - - /* parallel ports */ - for(i = 0; i < 1; i++, par[sizeof par - 2]++) { - res = NULL; - gather_resources(hd_data->misc, &res, par, 0); - if(res) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_comm; - hd->sub_class.id = sc_com_par; - str_printf(&hd->unix_dev_name, 0, "/dev/lp%d", i); - hd->res = res; - } - } - - /* floppy controller */ - res = NULL; - gather_resources(hd_data->misc, &res, "floppy", 0); - gather_resources(hd_data->misc, &res, "floppy DIR", 0); - if(res) { - /* look for an existing entry */ - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == bc_storage && hd->sub_class.id == sc_sto_floppy) break; - } - - /* missing, so create one */ - if(!hd) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_floppy; - } - - hd->res = res; - } - - /* - * look for PS/2 port - * - * The catch is, that sometimes /dev/psaux is accessible only for root, - * so the open() may fail but there are irq events registered. - * - */ - fd = open(DEV_PSAUX, O_RDONLY | O_NONBLOCK); - if(fd >= 0) close(fd); - - res = NULL; - gather_resources(hd_data->misc, &res, "PS/2 Mouse", 0); - - if(res || fd >= 0) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_ps2; - - if(res) { - hd->res = res; - } - } -} - - -void hd_scan_misc2(hd_data_t *hd_data) -{ - hd_t *hd, *hd1; - misc_t *m; - hd_res_t *res, *res1, *res2; - int i; - - if(!hd_probe_feature(hd_data, pr_misc)) return; - - hd_data->module = mod_misc; - - PROGRESS(5, 0, "misc data"); - - /* create some more system generic entries */ - - /* IDE */ - -// ###### add special ide detail to hd_t!!! - res = NULL; - gather_resources(hd_data->misc, &res, "ide0", 0); - gather_resources(hd_data->misc, &res, "ide1", 0); - gather_resources(hd_data->misc, &res, "ide2", 0); - gather_resources(hd_data->misc, &res, "ide3", 0); - if(res) { - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_storage && - hd->sub_class.id == sc_sto_ide && - have_common_res(hd->res, res) - ) break; - } - if(!hd) { - /* eg. non-PCI IDE controller */ - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_ide; - /* use join_res to join the i/o ranges of ide0/1 */ - join_res_io(&hd->res, res); - join_res_irq(&hd->res, res); - join_res_dma(&hd->res, res); - free_res_list(res); - } - else { - /* eg. PCI IDE controller, add resources */ - join_res_io(&hd->res, res); - join_res_irq(&hd->res, res); - join_res_dma(&hd->res, res); - free_res_list(res); - } - } - - /* VGA */ - res = NULL; - gather_resources(hd_data->misc, &res, "vga+", 0); - gather_resources(hd_data->misc, &res, "vesafb", 0); - if(res) { - for(i = 0, hd1 = NULL, hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == bc_display && hd->sub_class.id == sc_dis_vga) { - i++; - hd1 = hd; - } - } - if(i == 0) { - /* non-PCI VGA card ??? - really, we shouldn't care... */ - /* FIX THIS !!! ############### */ -#ifdef __alpha__ - free_res_list(res); -#else - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->res = res; -#endif - } - else if(i == 1) { - /* 1 PCI vga card, add resources */ - join_res_io(&hd1->res, res); - join_res_irq(&hd1->res, res); - join_res_dma(&hd1->res, res); - free_res_list(res); - hd_data->display = hd1->idx; - } - else { - /* more than 1: look again, now only 'active' cards */ - for(i = 0, hd1 = NULL, hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_display && - hd->sub_class.id == sc_dis_vga && - active_vga_card(hd) - ) { - i++; - hd1 = hd; - } - } - if(i == 1) { - /* 'the' active PCI vga card, add resources */ - join_res_io(&hd1->res, res); - join_res_irq(&hd1->res, res); - join_res_dma(&hd1->res, res); - hd_data->display = hd1->idx; - } - else { - /* now, what??? */ - ADD2LOG("Oopy, could not figure out *the* active display adapter!\n"); - } - free_res_list(res); - } - } - - /* serial ports */ - res = NULL; - gather_resources(hd_data->misc, &res, "serial(auto)", 0); - gather_resources(hd_data->misc, &res, "serial(set)", 0); - gather_resources(hd_data->misc, &res, "serial", 0); - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == bc_comm && hd->sub_class.id == sc_com_ser) { - for(res1 = hd->res; res1; res1 = res1->next) { - for(res2 = res; res2; res2 = res2->next) { - if(res1->any.type == res2->any.type) { - switch(res1->any.type) { - case res_irq: - if(res1->irq.base == res2->irq.base) { - res2->any.type = res_any; - } - break; - case res_io: - if( - res1->io.base == res2->io.base && - (!res1->io.range || res1->io.range == res2->io.range) - ) { - res1->io.range = res2->io.range; - res2->any.type = res_any; - } - break; - default: /* gcc -Wall */ - break; - } - } - } - } - } - } - - /* if any of the serial resources are unaccounted for, make an extra entry */ - for(res2 = res; res2; res2 = res2->next) { - if(res2->any.type != res_any) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_comm; - hd->sub_class.id = sc_com_ser; - hd->prog_if.id = 0x80; - for(; res2; res2 = res2->next) { - if(res2->any.type != res_any) { - res1 = add_res_entry(&hd->res, new_mem(sizeof *res)); - *res1 = *res2; - res1->next = NULL; - } - } - break; - } - } - free_res_list(res); - - /* go through our list and assign event counts to irq entries */ - m = hd_data->misc; - for(hd = hd_data->hd; hd; hd = hd->next) { - for(res = hd->res; res; res = res->next) { - if(res->irq.type == res_irq) { - for(i = 0; (unsigned) i < m->irq_len; i++) { - if(res->irq.base == m->irq[i].irq) { - res->irq.triggered = m->irq[i].events; - break; - } - } - } - } - } - - /* look for entries with matching start address */ - m = hd_data->misc; - for(hd = hd_data->hd; hd; hd = hd->next) { - for(res = hd->res; res; res = res->next) { - if(res->io.type == res_io) { - for(i = 0; (unsigned) i < m->io_len; i++) { - if(res->io.base == m->io[i].addr && res->io.range < m->io[i].size) { - res->io.range = m->io[i].size; - break; - } - } - } - } - } - - if((hd_data->debug & HD_DEB_MISC)) dump_misc_data(hd_data); -} - - -/* - * read /proc/ioports - */ -void read_ioports(misc_t *m) -{ - char buf[100]; - misc_io_t *r; - uint64_t u, v; - str_list_t *sl; - - if(!(m->proc_io = read_file(PROC_IOPORTS, 0, 0))) return; - - for(sl = m->proc_io; sl; sl = sl->next) { - if(sscanf(sl->str, " %"PRIx64" - %"PRIx64" : %99[^\n]", &u, &v, buf) == 3) { - m->io = add_mem(m->io, sizeof *m->io, m->io_len); - r = m->io + m->io_len++; - r->addr = u; - r->size = v >= u ? v - u + 1 : 0; - r->dev = new_str(buf); - } - } -} - -/* - * read /proc/dma - */ -void read_dmas(misc_t *m) -{ - char buf[100]; - misc_dma_t *d; - unsigned u; - str_list_t *sl; - - if(!(m->proc_dma = read_file(PROC_DMA, 0, 0))) return; - - for(sl = m->proc_dma; sl; sl = sl->next) { - if(sscanf(sl->str, " %u : %99[^\n]", &u, buf) == 2) { - m->dma = add_mem(m->dma, sizeof *m->dma, m->dma_len); - d = m->dma + m->dma_len++; - d->channel = u; - d->dev = new_str(buf); - } - } -} - - -/* - * read /proc/interrupts - * - * This is somewhat more tricky, as the irq event counts are done separately - * per cpu *and* there may be irq sharing. - */ -void read_irqs(misc_t *m) -{ - char buf[100], buf2[100], *s; - misc_irq_t *ir; - int i, j; - unsigned u, v, k; - str_list_t *sl; - - if(!(m->proc_irq = read_file(PROC_INTERRUPTS, 1, 0))) return; - - for(sl = m->proc_irq; sl; sl = sl->next) { - /* irq */ - i = 0; - if(sscanf(sl->str, " %u: %n", &u, &i) < 1) continue; - v = 0; - j = i; - /* add up all event counters */ - while(j < (int) strlen(sl->str) && sscanf(sl->str + j, " %u %n", &k, &i) >= 1) { - if(!i) break; - v += k; - j += i; - } - /* device driver name string */ -#if defined(__PPC__) - if( - sscanf(sl->str + j, " %*s Edge %99[^\n]", buf) == 1 || - sscanf(sl->str + j, " %*s Level %99[^\n]", buf) == 1 || - sscanf(sl->str + j, " %*s %99[^\n]", buf) == 1 - ) { -#else -#if defined(__alpha__) || defined(__sparc__) - if(sscanf(sl->str + j, " %99[^\n]", buf) == 1) { -#else /* __i386__ || __x86_64__ || __ia64__ */ - if(sscanf(sl->str + j, " %*s %99[^\n]", buf) == 1) { -#endif -#endif - m->irq = add_mem(m->irq, sizeof *m->irq, m->irq_len); - ir = m->irq + m->irq_len++; - ir->irq = u; - ir->events = v; - - /* split device driver names (separated by ',') */ - s = buf; - while(*s && sscanf(s, " %99[^,] %n", buf2, &j) >= 1) { - ir->dev = add_mem(ir->dev, sizeof *ir->dev, ir->devs); - ir->dev[ir->devs++] = new_str(buf2); - s += j; - if(*s) s++; /* skip ',' */ - } - } - } -} - -void gather_resources(misc_t *m, hd_res_t **r, char *name, unsigned which) -{ - int i, j; - hd_res_t *res; - - if(!m) return; - - if(!which) which = W_IO | W_DMA | W_IRQ; - - if((which & W_IO)) for(i = 0; (unsigned) i < m->io_len; i++) { - if(!strcmp(name, m->io[i].dev)) { - res = add_res_entry(r, new_mem(sizeof **r)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = m->io[i].addr; - res->io.range = m->io[i].size; - res->io.access = acc_rw; - m->io[i].tag++; - } - } - - if((which & W_DMA)) for(i = 0; (unsigned) i < m->dma_len; i++) { - if(!strcmp(name, m->dma[i].dev)) { - res = add_res_entry(r, new_mem(sizeof **r)); - res->dma.type = res_dma; - res->dma.enabled = 1; - res->dma.base = m->dma[i].channel; - m->dma[i].tag++; - } - } - - if((which & W_IRQ)) for(i = 0; (unsigned) i < m->irq_len; i++) { - for(j = 0; j < m->irq[i].devs; j++) { - if(!strcmp(name, m->irq[i].dev[j])) { - res = add_res_entry(r, new_mem(sizeof **r)); - res->irq.type = res_irq; - res->irq.enabled = 1; - res->irq.base = m->irq[i].irq; - res->irq.triggered = m->irq[i].events; - m->irq[i].tag++; - } - } - } -} - - -int active_vga_card(hd_t *hd) -{ - hd_res_t *res; - - if(hd->bus.id != bus_pci) return 1; - - for(res = hd->res; res; res = res->next) { - if( - (res->mem.type == res_mem && res->mem.enabled) || - (res->io.type == res_io && res->io.enabled) - ) return 1; - } - - return 0; -} - - -/* - * Add some proc info to the global log. - */ -void dump_misc_proc_data(hd_data_t *hd_data) -{ - str_list_t *sl; - - ADD2LOG("----- /proc/ioports -----\n"); - for(sl = hd_data->misc->proc_io; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- /proc/ioports end -----\n"); - - ADD2LOG("----- /proc/interrupts -----\n"); - for(sl = hd_data->misc->proc_irq; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- /proc/interrupts end -----\n"); - - ADD2LOG("----- /proc/dma -----\n"); - for(sl = hd_data->misc->proc_dma; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- /proc/dma end -----\n"); - -} - - -/* - * Add the resource usage to the global log. - */ -void dump_misc_data(hd_data_t *hd_data) -{ - misc_t *m = hd_data->misc; - int i, j; - - ADD2LOG("----- misc resources -----\n"); - - for(i = 0; (unsigned) i < m->io_len; i++) { - ADD2LOG( - "i/o:%u 0x%04"PRIx64" - 0x%04"PRIx64" (0x%02"PRIx64") \"%s\"\n", - m->io[i].tag, - m->io[i].addr, m->io[i].addr + m->io[i].size - 1, - m->io[i].size, m->io[i].dev - ); - } - - for(i = 0; (unsigned) i < m->irq_len; i++) { - ADD2LOG( - "irq:%u %2u (%9u)", - m->irq[i].tag, m->irq[i].irq, m->irq[i].events - ); - for(j = 0; j < m->irq[i].devs; j++) { - ADD2LOG(" \"%s\"", m->irq[i].dev[j]); - } - ADD2LOG("\n"); - } - - for(i = 0; (unsigned) i < m->dma_len; i++) { - ADD2LOG( - "dma:%u %u \"%s\"\n", - m->dma[i].tag, m->dma[i].channel, m->dma[i].dev - ); - } - - ADD2LOG("----- misc resources end -----\n"); -} diff --git a/src/hwinfo/src/hd/misc.h b/src/hwinfo/src/hd/misc.h deleted file mode 100644 index 10b1ef04a9..0000000000 --- a/src/hwinfo/src/hd/misc.h +++ /dev/null @@ -1,2 +0,0 @@ -void hd_scan_misc(hd_data_t *hd_data); -void hd_scan_misc2(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/modem.c b/src/hwinfo/src/hd/modem.c deleted file mode 100644 index e6f8aab08e..0000000000 --- a/src/hwinfo/src/hd/modem.c +++ /dev/null @@ -1,1083 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "hddb.h" -#include "modem.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * modem info - * - * - * Note: what about modem speed? - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#ifndef LIBHD_TINY - -static struct speeds_s { - unsigned baud; - speed_t mask; -} speeds[] = { - { 1200, B1200 }, - { 1800, B1800 }, - { 2400, B2400 }, - { 4800, B4800 }, - { 9600, B9600 }, - { 19200, B19200 }, - { 38400, B38400 }, - { 57600, B57600 }, - { 115200, B115200 } -#if !defined(__sparc__) - ,{ 230400, B230400 } - ,{ 460800, B460800 } - ,{ 500000, B500000 } - ,{ 1000000, B1000000 } - ,{ 2000000, B2000000 } - ,{ 4000000, B4000000 } -#endif -}; - -#define MAX_SPEED (sizeof speeds / sizeof *speeds) - -static char *init_strings[] = { - "Q0 V1 E1", - "S0=0", - "&C1", - "&D2", - "+FCLASS=0" -}; - -#define MAX_INIT_STRING (sizeof init_strings / sizeof *init_strings) - -static void get_serial_modem(hd_data_t* hd_data); -static void add_serial_modem(hd_data_t* hd_data); -static int dev_name_duplicate(hd_data_t *hd_data, char *dev_name); -static void guess_modem_name(hd_data_t *hd_data, ser_device_t *sm); -static void at_cmd(hd_data_t *hd_data, char *at, int raw, int log_it); -static void write_modem(hd_data_t *hd_data, char *msg); -static void read_modem(hd_data_t *hd_data); -static ser_device_t *add_ser_modem_entry(ser_device_t **sm, ser_device_t *new_sm); -static int set_modem_speed(ser_device_t *sm, unsigned baud); -static int init_modem(ser_device_t *mi); -static unsigned chk4id(ser_device_t *mi); -static void dump_ser_modem_data(hd_data_t *hd_data); - -void hd_scan_modem(hd_data_t *hd_data) -{ - ser_device_t *sm, *sm_next; - - if(!hd_probe_feature(hd_data, pr_modem)) return; - - hd_data->module = mod_modem; - - /* some clean-up */ - remove_hd_entries(hd_data); - hd_data->ser_modem = NULL; - - PROGRESS(1, 0, "serial"); - - hd_fork(hd_data, 15, 120); - - if(hd_data->flags.forked) { - get_serial_modem(hd_data); - hd_move_to_shm(hd_data); - if((hd_data->debug & HD_DEB_MODEM)) dump_ser_modem_data(hd_data); - } - else { - /* take data from shm */ - hd_data->ser_modem = ((hd_data_t *) (hd_data->shm.data))->ser_modem; - if((hd_data->debug & HD_DEB_MODEM)) dump_ser_modem_data(hd_data); - } - - hd_fork_done(hd_data); - - add_serial_modem(hd_data); - - hd_shm_clean(hd_data); - - for(sm = hd_data->ser_modem; sm; sm = sm_next) { - sm_next = sm->next; - - free_str_list(sm->at_resp); - - free_mem(sm->dev_name); - free_mem(sm->serial); - free_mem(sm->class_name); - free_mem(sm->dev_id); - free_mem(sm->user_name); - free_mem(sm->vend); - free_mem(sm->init_string1); - free_mem(sm->init_string2); - - free_mem(sm); - } - hd_data->ser_modem = NULL; - -} - -int check_for_responce(str_list_t *str_list, char *str, int len) -{ - for(; str_list != NULL; str_list = str_list->next) { - if(!strncmp(str_list->str, str, len)) return 1; - } - - return 0; -} - -str_list_t *str_list_dup(str_list_t *orig) -{ - str_list_t *dup = NULL; - - for(; orig != NULL; orig = orig->next) { - add_str_list(&dup, orig->str); - } - - return dup; -} - -void get_serial_modem(hd_data_t *hd_data) -{ - hd_t *hd; - int i, j, fd; - unsigned modem_info, baud; - char *command; - ser_device_t *sm; - int chk_usb = hd_probe_feature(hd_data, pr_modem_usb); - - /* serial modems & usb modems */ - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - ( - ( - hd->base_class.id == bc_comm && - hd->sub_class.id == sc_com_ser && - !hd->tag.ser_skip && - hd->tag.ser_device != 2 && /* cf. serial.c */ - !has_something_attached(hd_data, hd) - ) || - ( - chk_usb && - hd->bus.id == bus_usb && - hd->base_class.id == bc_modem - ) - ) && hd->unix_dev_name - ) { - if(dev_name_duplicate(hd_data, hd->unix_dev_name)) continue; - if((fd = open(hd->unix_dev_name, O_RDWR | O_NONBLOCK)) >= 0) { - sm = add_ser_modem_entry(&hd_data->ser_modem, new_mem(sizeof *sm)); - sm->dev_name = new_str(hd->unix_dev_name); - sm->fd = fd; - sm->hd_idx = hd->idx; - sm->do_io = 1; - init_modem(sm); - } - } - } - - if(!hd_data->ser_modem) return; - - PROGRESS(2, 0, "init"); - - usleep(300000); /* PnP protocol; 200ms seems to be too fast */ - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - modem_info = TIOCM_DTR | TIOCM_RTS; - ioctl(sm->fd, TIOCMBIS, &modem_info); - ioctl(sm->fd, TIOCMGET, &modem_info); - if(!(modem_info & (TIOCM_DSR | TIOCM_CD))) { - sm->do_io = 0; - } - } - - /* just a quick test if we get a response to an AT command */ - - for(i = 0; i < 4; i++) { - PROGRESS(3, i + 1, "at test"); - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(!sm->is_modem) - set_modem_speed(sm, i == 0 ? 115200 : i == 1 ? 38400 : i == 2 ? 9600 : 1200); - } - - at_cmd(hd_data, "AT\r", 1, 1); - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(strstr(sm->buf, "OK") || strstr(sm->buf, "0")) { - sm->is_modem = 1; - sm->do_io = 0; - } - sm->buf_len = 0; /* clear buffer */ - } - } - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if((sm->do_io = sm->is_modem)) { - sm->max_baud = sm->cur_baud; - } - } - - /* check for init string */ - PROGRESS(4, 0, "init string"); - - command = NULL; - for(i = 0; (unsigned) i < MAX_INIT_STRING; i++) { - str_printf(&command, 0, "AT %s\r", init_strings[i]); - at_cmd(hd_data, command, 1, 1); - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(strstr(sm->buf, "OK") || strstr(sm->buf, "0")) { - str_printf(&sm->init_string2, -1, - "%s %s", sm->init_string2 ? "" : "AT", init_strings[i] - ); - } - } - } - command = free_mem(command); - - for(sm = hd_data->ser_modem; sm; sm = sm->next) - if(sm->is_modem) - str_printf(&sm->init_string1, -1, "ATZ"); - - { - int cmds[] = { 1, 3, 4, 5, 6 }; - char at[10]; - int i, j, ModemsCount = 0; - str_list_t **responces = NULL; - for(sm = hd_data->ser_modem; sm; sm = sm->next) - if(sm->is_modem) - ModemsCount++; - responces = new_mem(ModemsCount * sizeof *responces); - - at_cmd(hd_data, "ATI\r", 0, 1); - for(j = 0, sm = hd_data->ser_modem; sm; sm = sm->next) { - if(sm->is_modem) - responces[j++] = str_list_dup(sm->at_resp); - } - - for(i = 0; (unsigned) i < sizeof cmds / sizeof *cmds; i++) { - int atx = cmds[i]; - sprintf(at, "ATI%d\r", atx); - at_cmd(hd_data, at, 0, 1); - for(j = 0, sm = hd_data->ser_modem; sm; sm = sm->next) { - if(sm->is_modem) { - if(atx == 1 && check_for_responce(responces[j], "Hagenuk", 7) && - (check_for_responce(sm->at_resp, "Speed Dragon", 12) || - check_for_responce(sm->at_resp, "Power Dragon", 12))) { - free_mem(sm->init_string1); - free_mem(sm->init_string2); - sm->init_string1 = new_str("AT&F"); - sm->init_string2 = new_str("ATB8"); - } - if(atx == 3 && check_for_responce(responces[j], "346900", 6) && - check_for_responce(sm->at_resp, "3Com U.S. Robotics ISDN", 23)) { - free_mem(sm->init_string1); - free_mem(sm->init_string2); - sm->init_string1 = new_str("AT&F"); - sm->init_string2 = new_str("AT*PPP=1"); - } - if(atx == 4 && check_for_responce(responces[j], "SP ISDN", 7) && - check_for_responce(sm->at_resp, "Sportster ISDN TA", 17)) { - free_mem(sm->init_string1); - free_mem(sm->init_string2); - sm->init_string1 = new_str("AT&F"); - sm->init_string2 = new_str("ATB3"); - } - if(atx == 6 && check_for_responce(responces[j], "644", 3) && - check_for_responce(sm->at_resp, "ELSA MicroLink ISDN", 19)) { - free_mem(sm->init_string1); - free_mem(sm->init_string2); - sm->init_string1 = new_str("AT&F"); - sm->init_string2 = new_str("AT$IBP=HDLCP"); - free_mem(sm->pppd_option); - sm->pppd_option = new_str("default-asyncmap"); - } - if(atx == 6 && check_for_responce(responces[j], "643", 3) && - check_for_responce(sm->at_resp, "MicroLink ISDN/TLV.34", 21)) { - free_mem(sm->init_string1); - free_mem(sm->init_string2); - sm->init_string1 = new_str("AT&F"); - sm->init_string2 = new_str("AT\\N10%P1"); - } - if(atx == 5 && check_for_responce(responces[j], "ISDN TA", 6) && - check_for_responce(sm->at_resp, "ISDN TA;ASU", 4)) { - free_mem(sm->vend); - sm->vend = new_str("ASUS"); - free_mem(sm->user_name); - sm->user_name = new_str("ISDNLink TA"); - free_mem(sm->init_string1); - free_mem(sm->init_string2); - sm->init_string1 = new_str("AT&F"); - sm->init_string2 = new_str("ATB40"); - } - if(atx==3 && check_for_responce(responces[j], "128000", 6) && - check_for_responce(sm->at_resp, "Lasat Speed", 11)) { - free_mem(sm->init_string1); - free_mem(sm->init_string2); - sm->init_string1 = new_str("AT&F"); - sm->init_string2 = new_str("AT\\P1&B2X3"); - } - if(atx == 1 && - (check_for_responce(responces[j], "28642", 5) || - check_for_responce(responces[j], "1281", 4) || - check_for_responce(responces[j], "1282", 4) || - check_for_responce(responces[j], "1283", 4) || - check_for_responce(responces[j], "1291", 4) || - check_for_responce(responces[j], "1292", 4) || - check_for_responce(responces[j], "1293", 4)) && - (check_for_responce(sm->at_resp, "Elite 2864I", 11) || - check_for_responce(sm->at_resp, "ZyXEL omni", 10))) { - free_mem(sm->init_string1); - free_mem(sm->init_string2); - sm->init_string1 = new_str("AT&F"); - sm->init_string2 = new_str("AT&O2B40"); - } - j++; - } - } - } - - for(i = 0; i < ModemsCount; i++) free_str_list(responces[i]); - free_mem(responces); - } - - /* now, go for the maximum speed... */ - PROGRESS(5, 0, "speed"); - - for(i = MAX_SPEED - 1; i >= 0; i--) { - baud = speeds[i].baud; - for(j = 0, sm = hd_data->ser_modem; sm; sm = sm->next) { - if(sm->is_modem) { - if(baud > sm->max_baud) { - sm->do_io = set_modem_speed(sm, baud) ? 0 : 1; - if(sm->do_io) j++; - } - } - } - - /* no modems */ - if(!j) continue; - - at_cmd(hd_data, "AT\r", 1, 0); - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(strstr(sm->buf, "OK") || strstr(sm->buf, "0")) { - sm->max_baud = sm->cur_baud; - } - else { - sm->do_io = 0; - } - sm->buf_len = 0; /* clear buffer */ - } - } - - /* now, fix it all up... */ - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(sm->is_modem) { - set_modem_speed(sm, sm->max_baud); - sm->do_io = 1; - } - } - -#if 0 - /* just for testing */ - if((hd_data->debug & HD_DEB_MODEM)) { - int i; - int cmds[] = { 0, 1, 2, 3, 6 }; - char at[10]; - - PROGRESS(8, 0, "testing"); - - at_cmd(hd_data, "ATI\r", 0, 1); - for(i = 0; (unsigned) i < sizeof cmds / sizeof *cmds; i++) { - sprintf(at, "ATI%d\r", cmds[i]); - at_cmd(hd_data, at, 0, 1); - } - at_cmd(hd_data, "AT\r", 0, 1); - } -#endif - - PROGRESS(5, 0, "pnp id"); - - at_cmd(hd_data, "ATI9\r", 1, 1); - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(sm->is_modem) { - chk4id(sm); - - if(!sm->user_name) guess_modem_name(hd_data, sm); - } - - /* reset serial lines */ - tcflush(sm->fd, TCIOFLUSH); - tcsetattr(sm->fd, TCSAFLUSH, &sm->tio); - close(sm->fd); - } -} - - -void add_serial_modem(hd_data_t *hd_data) -{ - hd_t *hd; - char buf[4]; - ser_device_t *sm; - hd_res_t *res; - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(!sm->is_modem) continue; - - hd = hd_get_device_by_idx(hd_data, sm->hd_idx); - if(hd && hd->base_class.id == bc_modem) { - /* just *add* info */ - - } - else { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_modem; - hd->bus.id = bus_serial; - hd->unix_dev_name = new_str(sm->dev_name); - hd->attached_to = sm->hd_idx; - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->baud.type = res_baud; - res->baud.speed = sm->max_baud; - if(sm->pppd_option) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->pppd_option.type = res_pppd_option; - res->pppd_option.option = new_str(sm->pppd_option); - } - if(*sm->pnp_id) { - strncpy(buf, sm->pnp_id, 3); - buf[3] = 0; - hd->vendor.id = name2eisa_id(buf); - hd->device.id = MAKE_ID(TAG_EISA, strtol(sm->pnp_id + 3, NULL, 16)); - } - hd->serial = new_str(sm->serial); - if(sm->user_name) hd->device.name = new_str(sm->user_name); - if(sm->vend) hd->vendor.name = new_str(sm->vend); - - if(sm->dev_id && strlen(sm->dev_id) >= 7) { - char buf[5], *s; - unsigned u1, u2; - - u1 = name2eisa_id(sm->dev_id); - if(u1) { - strncpy(buf, sm->dev_id + 3, 4); - buf[4] = 0; - u2 = strtol(sm->dev_id + 3, &s, 16); - if(!*s) { - hd->compat_vendor.id = u1; - hd->compat_device.id = MAKE_ID(TAG_EISA, u2); - } - } - } - - if(!(hd->device.id || hd->device.name || hd->vendor.id || hd->vendor.name)) { - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x2000); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0001); - } - } - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->init_strings.type = res_init_strings; - res->init_strings.init1 = new_str(sm->init_string1); - res->init_strings.init2 = new_str(sm->init_string2); - } -} - - -int dev_name_duplicate(hd_data_t *hd_data, char *dev_name) -{ - ser_device_t *sm; - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(!strcmp(sm->dev_name, dev_name)) return 1; - } - - return 0; -} - -void guess_modem_name(hd_data_t *hd_data, ser_device_t *modem) -{ - ser_device_t *sm; - str_list_t *sl; - char *s; -#ifdef __PPC__ - char *s1, *s2; - unsigned u; -#endif - - for(sm = hd_data->ser_modem; sm; sm = sm->next) sm->do_io = 0; - - (sm = modem)->do_io = 1; - -#ifdef __PPC__ - at_cmd(hd_data, "ATI0\r", 0, 1); - sl = sm->at_resp; - if(sl && !strcmp(sl->str, "ATI0")) sl = sl->next; /* skip AT cmd echo */ - - s1 = NULL; - if(sl) { - if(strstr(sl->str, "PowerBook")) { - sm->vend = new_str("Apple"); - sm->user_name = new_str(sl->str); - - return; - } - s1 = new_str(sl->str); - } - - at_cmd(hd_data, "ATI1\r", 0, 1); - sl = sm->at_resp; - if(sl && !strcmp(sl->str, "ATI1")) sl = sl->next; /* skip AT cmd echo */ - - if(sl) { - if(strstr(sl->str, "APPLE")) { - sm->vend = new_str("Apple"); - str_printf(&sm->user_name, 0, "AT Modem"); - if(s1) { - u = strtoul(s1, &s2, 10); - if(u && !*s2 && !(u % 1000)) { - str_printf(&sm->user_name, 0, "%uk AT Modem", u / 1000); - } - } - s1 = free_mem(s1); - - return; - } - } - s1 = free_mem(s1); - -#endif - - /* ATI3 command */ - at_cmd(hd_data, "ATI3\r", 0, 1); - sl = sm->at_resp; - if(sl && !strcmp(sl->str, "ATI3")) sl = sl->next; /* skip AT cmd echo */ - - if(sl) { - if(*sl->str == 'U' && strstr(sl->str, "Robotics ")) { - /* looks like an U.S. Robotics... */ - - sm->vend = new_str("U.S. Robotics, Inc."); - /* strip revision code */ - if((s = strstr(sl->str, " Rev. "))) *s = 0; - sm->user_name = canon_str(sl->str, strlen(sl->str)); - - return; - } - - if(strstr(sl->str, "3Com U.S. Robotics ") == sl->str) { - /* looks like an 3Com U.S. Robotics... */ - - sm->vend = new_str("3Com U.S. Robotics, Inc."); - sm->user_name = canon_str(sl->str, strlen(sl->str)); - - return; - } - - if(strstr(sl->str, "-V34_DS -d Z201 2836")) { - /* looks like a Zoom V34X */ - - sm->vend = new_str("Zoom Telephonics, Inc."); - sm->user_name = new_str("Zoom FaxModem V.34X Plus Model 2836"); - - return; - } - - if(strstr(sl->str, "FM560 VER 3.01 V.90")) { - /* looks like a Microcom DeskPorte 56K Voice ... */ - - sm->vend = new_str("Microcom"); - sm->user_name = new_str("TravelCard 56K"); - - return; - } - - if(strstr(sl->str, "Compaq Microcom 550 56K Modem")) { - /* looks like a Microcom DeskPorte Pocket ... */ - - sm->vend = new_str("Compaq"); - sm->user_name = new_str("Microcom 550 56K Modem"); - - return; - } - } - - /* ATI0 command */ - at_cmd(hd_data, "ATI0\r", 0, 1); - sl = sm->at_resp; - if(sl && !strcmp(sl->str, "ATI0")) sl = sl->next; /* skip AT cmd echo */ - - if(sl) { - if(strstr(sl->str, "DP Pocket")) { - /* looks like a Microcom DeskPorte Pocket ... */ - - sm->vend = new_str("Microcom"); - sm->user_name = new_str("DeskPorte Pocket"); - - return; - } - } - - /* ATI6 command */ - at_cmd(hd_data, "ATI6\r", 0, 1); - sl = sm->at_resp; - if(sl && !strcmp(sl->str, "ATI6")) sl = sl->next; /* skip AT cmd echo */ - - if(sl) { - if(strstr(sl->str, "RCV56DPF-PLL L8571A")) { - /* looks like a Microcom DeskPorte 56K Voice ... */ - - sm->vend = new_str("Microcom"); - sm->user_name = new_str("DeskPorte 56K Voice"); - - return; - } - } - - /* ATI2 command */ - at_cmd(hd_data, "ATI2\r", 0, 1); - sl = sm->at_resp; - if(sl && !strcmp(sl->str, "ATI2")) sl = sl->next; /* skip AT cmd echo */ - - if(sl) { - if(strstr(sl->str, "ZyXEL ")) { - /* looks like a ZyXEL... */ - - sm->vend = new_str("ZyXEL"); - - at_cmd(hd_data, "ATI1\r", 0, 1); - sl = sm->at_resp; - if(sl && !strcmp(sl->str, "ATI1")) sl = sl->next; - - if(sl && sl->next) { - sl = sl->next; - if((s = strstr(sl->str, " V "))) *s = 0; - sm->user_name = canon_str(sl->str, strlen(sl->str)); - } - - return; - } - } - -} - -void at_cmd(hd_data_t *hd_data, char *at, int raw, int log_it) -{ - static unsigned u = 1; - char *s, *s0; - ser_device_t *sm; - str_list_t *sl; - int modems = 0; - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(sm->do_io) { - sm->buf_len = 0; - modems++; - } - } - - if(modems == 0) return; - - PROGRESS(9, u, "write at cmd"); - write_modem(hd_data, at); - PROGRESS(9, u, "read at resp"); - usleep (200000); - read_modem(hd_data); - PROGRESS(9, u, "read ok"); - u++; - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(sm->do_io) { - sm->at_resp = free_str_list(sm->at_resp); - if(sm->buf_len == 0 || raw) continue; - s0 = sm->buf; - while((s = strsep(&s0, "\r\n"))) { - if(*s) add_str_list(&sm->at_resp, s); - } - } - } - - if(!(hd_data->debug & HD_DEB_MODEM) || !log_it) return; - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(sm->do_io) { - ADD2LOG("%s@%u: %s\n", sm->dev_name, sm->cur_baud, at); - if(raw) { - ADD2LOG(" "); - hexdump(&hd_data->log, 1, sm->buf_len, sm->buf); - ADD2LOG("\n"); - } - else { - for(sl = sm->at_resp; sl; sl = sl->next) ADD2LOG(" %s\n", sl->str); - } - } - } -} - - -void write_modem(hd_data_t *hd_data, char *msg) -{ - ser_device_t *sm; - int i, len = strlen(msg); - - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(sm->do_io) { - i = write(sm->fd, msg, len); - if(i != len) { - ADD2LOG("%s write oops: %d/%d (\"%s\")\n", sm->dev_name, i, len, msg); - } - } - } -} - -void read_modem(hd_data_t *hd_data) -{ - int i, sel, fd_max = -1; - fd_set set, set0; - struct timeval to; - ser_device_t *sm; - - FD_ZERO(&set0); - - for(i = 0, sm = hd_data->ser_modem; sm; sm = sm->next) { - if(sm->do_io) { - FD_SET(sm->fd, &set0); - if(sm->fd > fd_max) fd_max = sm->fd; - i++; - } - } - - if(!i) return; /* nothing selected */ - - for(;;) { - to.tv_sec = 0; to.tv_usec = 1000000; - set = set0; - if((sel = select(fd_max + 1, &set, NULL, NULL, &to)) > 0) { -// fprintf(stderr, "sel: %d\n", sel); - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(FD_ISSET(sm->fd, &set)) { - if((i = read(sm->fd, sm->buf + sm->buf_len, sizeof sm->buf - sm->buf_len)) > 0) - sm->buf_len += i; -// fprintf(stderr, "%s: got %d\n", sm->dev_name, i); - if(i <= 0) FD_CLR(sm->fd, &set0); - } - } - } - else { - break; - } - } - - /* make the strings \000 terminated */ - for(sm = hd_data->ser_modem; sm; sm = sm->next) { - if(sm->buf_len == sizeof sm->buf) sm->buf_len--; - sm->buf[sm->buf_len] = 0; - } -} - -int set_modem_speed(ser_device_t *sm, unsigned baud) -{ - int i; - speed_t st; - struct termios tio; - - for(i = 0; (unsigned) i < MAX_SPEED; i++) if(speeds[i].baud == baud) break; - - if(i == MAX_SPEED) return 1; - - if(tcgetattr(sm->fd, &tio)) return errno; - - cfsetospeed(&tio, speeds[i].mask); - cfsetispeed(&tio, speeds[i].mask); - - if(tcsetattr(sm->fd, TCSAFLUSH, &tio)) return errno; - - /* tcsetattr() returns ok even if it couldn't set the speed... */ - - if(tcgetattr(sm->fd, &tio)) return errno; - - st = cfgetospeed(&tio); - - for(i = 0; (unsigned) i < MAX_SPEED; i++) if(speeds[i].mask == st) break; - - if(i == MAX_SPEED) return 2; - - sm->cur_baud = speeds[i].baud; - - return baud == speeds[i].baud ? 0 : 3; -} - - -int init_modem(ser_device_t *sm) -{ - struct termios tio; - - if(tcgetattr(sm->fd, &tio)) return errno; - - sm->tio = tio; - - tio.c_iflag = IGNBRK | IGNPAR; - tio.c_oflag = 0; - tio.c_lflag = 0; - tio.c_line = 0; - tio.c_cc[VTIME] = 0; - tio.c_cc[VMIN] = 1; - - tio.c_cflag = CREAD | CLOCAL | HUPCL | B1200 | CS8; - - if(tcsetattr(sm->fd, TCSAFLUSH, &tio)) return errno; - - return 0; -} - - -/* - * Check for a PnP info field starting at ofs; - * returns either the length of the field or 0 if none was found. - * - * the minfo_t struct is updated with the PnP data - */ -int is_pnpinfo(ser_device_t *mi, int ofs) -{ - int i, j, k, l; - unsigned char c, *s = mi->buf + ofs, *t; - int len = mi->buf_len - ofs; - unsigned serial, class_name, dev_id, user_name; - - if(len <= 0) return 0; - - switch(*s) { - case 0x08: - mi->bits = 6; break; - case 0x28: - mi->bits = 7; break; - default: - return 0; - } - - if(len < 11) return 0; - - i = 1; - - /* six bit values */ - if((s[i] & ~0x3f) || (s[i + 1] & ~0x3f)) return 0; - mi->pnp_rev = (s[i] << 6) + s[i + 1]; - - /* pnp_rev may *optionally* be given as a string!!! (e.g. "1.0")*/ - if(mi->bits == 7) { - j = 0; - if(s[i + 2] < 'A') { - j++; - if(s[i + 3] < 'A') j++; - } - if(j) { - if(s[i] < '0' || s[i] > '9') return 0; - if(s[i + 1] != '.') return 0; - for(k = 0; k < j; k++) - if(s[i + 2 + k] < '0' || s[i + 2 + k] > '9') return 0; - mi->pnp_rev = (s[i] - '0') * 100; - mi->pnp_rev += s[i + 2] * 10; - if(j == 2) mi->pnp_rev += s[i + 3]; - i += j; - } - } - - i += 2; - - /* the eisa id */ - for(j = 0; j < 7; j++) { - mi->pnp_id[j] = s[i + j]; - if(mi->bits == 6) mi->pnp_id[j] += 0x20; - } - mi->pnp_id[7] = 0; - - i += 7; - - /* now check the id */ - for(j = 0; j < 3; j++) { - if( - /* numbers are not really allowed, but... */ - (mi->pnp_id[j] < '0' || mi->pnp_id[j] > '9') && - (mi->pnp_id[j] < 'A' || mi->pnp_id[j] > 'Z') && - mi->pnp_id[j] != '_' - ) return 0; - } - - for(j = 3; j < 7; j++) { - if( - (mi->pnp_id[j] < '0' || mi->pnp_id[j] > '9') && - (mi->pnp_id[j] < 'A' || mi->pnp_id[j] > 'F') - ) return 0; - } - - - if((mi->bits == 6 && s[i] == 0x09) || (mi->bits == 7 && s[i] == 0x29)) { - return i + 1; - } - - if((mi->bits != 6 || s[i] != 0x3c) && (mi->bits != 7 || s[i] != 0x5c)) { - return 0; - } - - /* parse extended info */ - serial = class_name = dev_id = user_name = 0; - for(j = 0; i < len; i++) { - if((mi->bits == 6 && s[i] == 0x09) || (mi->bits == 7 && s[i] == 0x29)) { - - if(serial) for(k = serial; k < len; k++) { - c = s[k]; - if(mi->bits == 6) c += 0x20; - if(c == '\\') break; - str_printf(&mi->serial, -1, "%c", c); - } - - if(class_name) for(k = class_name; k < len; k++) { - c = s[k]; - if(mi->bits == 6) c += 0x20; - if(c == '\\') break; - str_printf(&mi->class_name, -1, "%c", c); - } - - if(dev_id) for(k = dev_id; k < len; k++) { - c = s[k]; - if(mi->bits == 6) c += 0x20; - if(c == '\\') break; - str_printf(&mi->dev_id, -1, "%c", c); - } - - if(user_name) { - for(k = user_name; k < len; k++) { - c = s[k]; - if(mi->bits == 6) c += 0x20; - if(c == '\\' || c == ')') break; - str_printf(&mi->user_name, -1, "%c", c); - } - if(mi->user_name && (l = strlen(mi->user_name)) >= 2) { - /* skip *optional*(!!!) 2 char checksum */ - t = mi->user_name + l - 2; - if( - ((t[0] >= '0' && t[0] <= '9') || (t[0] >= 'A' && t[0] <= 'F')) && - ((t[1] >= '0' && t[1] <= '9') || (t[1] >= 'A' && t[1] <= 'F')) - ) { - /* OK, *might* be a hex number... */ - mi->user_name[l - 2] = 0; - - /* - * A better check would be to look for the complete name string - * in the output from another AT command, e.g AT3, AT6 or AT11. - * If it's there -> no checksum field. - */ - } - } - } - - return i + 1; - } - - if(((mi->bits == 6 && s[i] == 0x3c) || (mi->bits == 7 && s[i] == 0x5c)) && i < len - 1) { - switch(j) { - case 0: - serial = i + 1; j++; break; - case 1: - class_name = i + 1; j++; break; - case 2: - dev_id = i + 1; j++; break; - case 3: - user_name = i + 1; j++; break; - default: - fprintf(stderr, "PnP-ID oops\n"); - } - } - } - - /* no end token... */ - - return 0; -} - - -unsigned chk4id(ser_device_t *mi) -{ - int i; - - if(!mi->buf_len) return 0; - - for(i = 0; i < mi->buf_len; i++) { - if((mi->pnp = is_pnpinfo(mi, i))) break; - } - if(i == mi->buf_len) return 0; - - mi->garbage = i; - - return 1; -} - -ser_device_t *add_ser_modem_entry(ser_device_t **sm, ser_device_t *new_sm) -{ - while(*sm) sm = &(*sm)->next; - return *sm = new_sm; -} - -void dump_ser_modem_data(hd_data_t *hd_data) -{ - int j; - ser_device_t *sm; - - if(!(sm = hd_data->ser_modem)) return; - - ADD2LOG("----- serial modems -----\n"); - - for(; sm; sm = sm->next) { - ADD2LOG("%s\n", sm->dev_name); - if(sm->serial) ADD2LOG("serial: \"%s\"\n", sm->serial); - if(sm->class_name) ADD2LOG("class_name: \"%s\"\n", sm->class_name); - if(sm->dev_id) ADD2LOG("dev_id: \"%s\"\n", sm->dev_id); - if(sm->user_name) ADD2LOG("user_name: \"%s\"\n", sm->user_name); - - if(sm->garbage) { - ADD2LOG(" pre_garbage[%u]: ", sm->garbage); - hexdump(&hd_data->log, 1, sm->garbage, sm->buf); - ADD2LOG("\n"); - } - - if(sm->pnp) { - ADD2LOG(" pnp[%u]: ", sm->pnp); - hexdump(&hd_data->log, 1, sm->pnp, sm->buf + sm->garbage); - ADD2LOG("\n"); - } - - if((j = sm->buf_len - (sm->garbage + sm->pnp))) { - ADD2LOG(" post_garbage[%u]: ", j); - hexdump(&hd_data->log, 1, j, sm->buf + sm->garbage + sm->pnp); - ADD2LOG("\n"); - } - - if(sm->is_modem) - ADD2LOG(" is modem\n"); - else - ADD2LOG(" not a modem\n"); - - if(sm->pnp) { - ADD2LOG(" bits: %u\n", sm->bits); - ADD2LOG(" PnP Rev: %u.%02u\n", sm->pnp_rev / 100, sm->pnp_rev % 100); - ADD2LOG(" PnP ID: \"%s\"\n", sm->pnp_id); - } - - if(sm->next) ADD2LOG("\n"); - } - - ADD2LOG("----- serial modems end -----\n"); -} - -#endif /* ifndef LIBHD_TINY */ diff --git a/src/hwinfo/src/hd/modem.h b/src/hwinfo/src/hd/modem.h deleted file mode 100644 index f19599d1ec..0000000000 --- a/src/hwinfo/src/hd/modem.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_modem(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/monitor.c b/src/hwinfo/src/hd/monitor.c deleted file mode 100644 index 110d897893..0000000000 --- a/src/hwinfo/src/hd/monitor.c +++ /dev/null @@ -1,600 +0,0 @@ -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "hddb.h" -#include "monitor.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * monitor info - * - * Read the info out of the 'SuSE=' entry in /proc/cmdline. It contains - * (among others) info from the EDID record got by our syslinux extension. - * - * We will try to look up our monitor id in the id file to get additional - * info. - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#ifdef __PPC__ -static void add_old_mac_monitor(hd_data_t *hd_data); -static void add_monitor(hd_data_t *hd_data, devtree_t *dt); -#endif -static int chk_edid_info(hd_data_t *hd_data, unsigned char *edid); -#if !defined(__PPC__) -static void add_lcd_info(hd_data_t *hd_data, hd_t *hd, bios_info_t *bt); -#endif -static void add_edid_info(hd_data_t *hd_data, hd_t *hd, unsigned char *edid); -static void add_monitor_res(hd_t *hd, unsigned x, unsigned y, unsigned hz, unsigned il); -static void fix_edid_info(hd_data_t *hd_data, unsigned char *edid); - -#if !defined(__PPC__) -void hd_scan_monitor(hd_data_t *hd_data) -{ - hd_t *hd; - int i, j, k; - char *s, *s0, *s1, *se, m[8], *t; - unsigned u; - hd_res_t *res; - monitor_info_t *mi = NULL; - bios_info_t *bt; - - if(!hd_probe_feature(hd_data, pr_monitor)) return; - - hd_data->module = mod_monitor; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "ddc"); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == bc_internal && hd->sub_class.id == sc_int_bios) break; - } - - /* first, see if we got the full edid record from bios */ - bt = NULL; - -#if 0 - /* for testing: LIBHD_EDID points to a file with valid edid record */ - { - char *s = getenv("LIBHD_EDID"); - unsigned char edid[0x80]; - FILE *f; - - if(s && (f = fopen(s, "r"))) { - if(fread(edid, sizeof edid, 1, f) == 1) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_monitor; - add_edid_info(hd_data, hd, edid); - } - fclose(f); - return; - } - } -#endif - - if( - hd && - hd->detail && - hd->detail->type == hd_detail_bios && - (bt = hd->detail->bios.data) && - bt->vbe.ok - ) { - if(chk_edid_info(hd_data, bt->vbe.ddc)) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_monitor; - - hd_set_hw_class(hd, hw_vbe); - - add_edid_info(hd_data, hd, bt->vbe.ddc); - - return; - } - } - - /* Maybe a LCD panel? */ - if(bt && bt->lcd.width) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_monitor; - hd->sub_class.id = sc_mon_lcd; - - hd_set_hw_class(hd, hw_vbe); - - add_lcd_info(hd_data, hd, bt); - - return; - } - - /* Maybe we have hidden edid info here? */ - if(!(s = s0 = t = get_cmd_param(hd_data, 0))) return; /* no :-( */ - - s = strsep(&t, "^"); - - se = s + strlen(s); - - if(se - s < 7 + 2 * 4) { - free_mem(s0); - return; - } - - /* Ok, we've got it. Now we split the fields. */ - - memcpy(m, s, 7); m[7] = 0; s += 7; - - hd = add_hd_entry(hd_data, __LINE__, 0); - - hd->base_class.id = bc_monitor; - hd->vendor.id = name2eisa_id(m); - if(sscanf(m + 3, "%x", &u) == 1) hd->device.id = MAKE_ID(TAG_EISA, u); - if((u = device_class(hd_data, hd->vendor.id, hd->device.id))) { - if((u >> 8) == bc_monitor) hd->sub_class.id = u & 0xff; - } - - i = hex(s, 2); j = hex(s + 2, 2); s += 4; - if(i > 0 && j > 0) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->size.type = res_size; - res->size.unit = size_unit_cm; - res->size.val1 = i; /* width */ - res->size.val2 = j; /* height */ - } - - i = hex(s, 2); s+= 2; - if(i & (1 << 7)) add_monitor_res(hd, 720, 400, 70, 0); - if(i & (1 << 6)) add_monitor_res(hd, 720, 400, 88, 0); - if(i & (1 << 5)) add_monitor_res(hd, 640, 480, 60, 0); - if(i & (1 << 4)) add_monitor_res(hd, 640, 480, 67, 0); - if(i & (1 << 3)) add_monitor_res(hd, 640, 480, 72, 0); - if(i & (1 << 2)) add_monitor_res(hd, 640, 480, 75, 0); - if(i & (1 << 1)) add_monitor_res(hd, 800, 600, 56, 0); - if(i & (1 << 0)) add_monitor_res(hd, 800, 600, 60, 0); - - i = hex(s, 2); s+= 2; - if(i & (1 << 7)) add_monitor_res(hd, 800, 600, 72, 0); - if(i & (1 << 6)) add_monitor_res(hd, 800, 600, 75, 0); - if(i & (1 << 5)) add_monitor_res(hd, 832, 624, 75, 0); - if(i & (1 << 4)) add_monitor_res(hd, 1024, 768, 87, 1); - if(i & (1 << 3)) add_monitor_res(hd, 1024, 768, 60, 0); - if(i & (1 << 2)) add_monitor_res(hd, 1024, 768, 70, 0); - if(i & (1 << 1)) add_monitor_res(hd, 1024, 768, 75, 0); - if(i & (1 << 0)) add_monitor_res(hd, 1280, 1024, 75, 0); - - if(((se - s) & 1) || se - s > 8 * 4 + 2) { - ADD2LOG(" ddc oops: %d bytes left?\n", (int) (se - s)); - free_mem(s0); - return; - } - - while(s + 4 <= se) { - i = (hex(s, 2) + 31) * 8; j = hex(s + 2, 2); s += 4; - k = 0; - switch((j >> 6) & 3) { - case 1: k = (i * 3) / 4; break; - case 2: k = (i * 4) / 5; break; - case 3: k = (i * 9) / 16; break; - } - if(k) add_monitor_res(hd, i, k, (j & 0x3f) + 60, 0); - } - - u = 0; - if(se - s == 2) u = hex(s, 2) + 1990; - - if(u || t) { - mi = new_mem(sizeof *mi); - if(u) mi->manu_year = u; - while((s = strsep(&t, "^"))) { - for(s1 = s; *s1++; ) if(*s1 == '_') *s1 = ' '; - switch(*s) { - case '0': - if(!mi->name && s[1]) mi->name = canon_str(s + 1, strlen(s + 1)); - break; - case '1': - u = 0; - if(strlen(s) == 9) { - i = hex(s + 1, 2); - j = hex(s + 3, 2); - if(i > j || !i) u = 1; - mi->min_vsync = i; - mi->max_vsync = j; - i = hex(s + 5, 2); - j = hex(s + 7, 2); - if(i > j || !i) u = 1; - mi->min_hsync = i; - mi->max_hsync = j; - } - else { - u = 1; - } - if(u) { - mi->min_vsync = mi->max_vsync = mi->min_hsync = mi->max_hsync = 0; - ADD2LOG(" ddc oops: invalid freq data\n"); - } - break; - case '2': - if(!mi->vendor && s[1]) mi->vendor = canon_str(s + 1, strlen(s + 1)); - break; - case '3': - if(!mi->serial && s[1]) mi->serial = canon_str(s + 1, strlen(s + 1)); - break; - default: - ADD2LOG(" ddc oops: invalid tag 0x%02x\n", *s); - } - } - } - - if(mi) { - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_monitor; - hd->detail->monitor.data = mi; - - hd->serial = new_str(mi->serial); - -#if 0 -// ########### FIXME - if( - mi->vendor && - ID_VALUE(hd->vendor.id) && - !hd_vendor_name(hd_data, hd->vendor.id) - ) { - add_vendor_name(hd_data, hd->vend, mi->vendor); - } -#endif - -#if 0 -// ########### FIXME - if( - mi->name && - (ID_VALUE(hd->vendor.id) || ID_VALUE(hd->device.id)) && - !hd_device_name(hd_data, hd->vend, hd->device.id) - ) { - add_device_name(hd_data, hd->vend, hd->dev, mi->name); - } -#endif - - if(hd_data->debug) { - ADD2LOG("----- DDC info -----\n"); - if(mi->vendor) { - ADD2LOG(" vendor: \"%s\"\n", mi->vendor); - } - if(mi->name) { - ADD2LOG(" model: \"%s\"\n", mi->name); - } - if(mi->serial) { - ADD2LOG(" serial: \"%s\"\n", mi->serial); - } - if(mi->min_hsync) { - ADD2LOG(" hsync: %u-%u kHz\n", mi->min_hsync, mi->max_hsync); - } - if(mi->min_vsync) { - ADD2LOG(" vsync: %u-%u Hz\n", mi->min_vsync, mi->max_vsync); - } - if(mi->manu_year) { - ADD2LOG(" manu. year: %u\n", mi->manu_year); - } - ADD2LOG("----- DDC info end -----\n"); - } - } - - free_mem(s0); -} -#endif /* !defined(__PPC__) */ - -#if defined(__PPC__) -void hd_scan_monitor(hd_data_t *hd_data) -{ - devtree_t *dt; - int found; - - if(!hd_probe_feature(hd_data, pr_monitor)) return; - - hd_data->module = mod_monitor; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "prom"); - - found = 0; - for(dt = hd_data->devtree; dt; dt = dt->next) { - if(dt->edid) { - add_monitor(hd_data, dt); - found = 1; - } - } - - if(!found) { - add_old_mac_monitor(hd_data); - } -} - -void add_old_mac_monitor(hd_data_t *hd_data) -{ - hd_t *hd; - unsigned u1, u2; - str_list_t *sl; - static struct { - unsigned width, height, vfreq, interlaced; - } mode_list[20] = { - { 512, 384, 60, 1 }, - { 512, 384, 60, 0 }, - { 640, 480, 50, 1 }, - { 640, 480, 60, 1 }, - { 640, 480, 60, 0 }, - { 640, 480, 67, 0 }, - { 640, 870, 75, 0 }, - { 768, 576, 50, 1 }, - { 800, 600, 56, 0 }, - { 800, 600, 60, 0 }, - { 800, 600, 72, 0 }, - { 800, 600, 75, 0 }, - { 832, 624, 75, 0 }, - { 1024, 768, 60, 0 }, - { 1024, 768, 70, 0 }, - { 1024, 768, 75, 0 }, - { 1024, 768, 75, 0 }, - { 1152, 870, 75, 0 }, - { 1280, 960, 75, 0 }, - { 1280, 1024, 75, 0 } - }; - - for(sl = hd_data->klog; sl; sl = sl->next) { - if(sscanf(sl->str, "<%*d>Monitor sense value = %i, using video mode %i", &u1, &u2) == 2) { - u2--; - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_monitor; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0401); - hd->device.id = MAKE_ID(TAG_SPECIAL, (u1 & 0xfff) + 0x1000); - - if((u1 = hd_display_adapter(hd_data))) { - hd->attached_to = u1; - } - - if(u2 < sizeof mode_list / sizeof *mode_list) { - add_monitor_res(hd, mode_list[u2].width, mode_list[u2].height, mode_list[u2].vfreq, mode_list[u2].interlaced); - } - - break; - } - } - -} - -void add_monitor(hd_data_t *hd_data, devtree_t *dt) -{ - hd_t *hd, *hd2; - unsigned char *edid = dt->edid; - - if(!chk_edid_info(hd_data, edid)) return; - - hd = add_hd_entry(hd_data, __LINE__, 0); - - hd->base_class.id = bc_monitor; - - for(hd2 = hd_data->hd; hd2; hd2 = hd2->next) { - if( - hd2->detail && - hd2->detail->type == hd_detail_devtree && - hd2->detail->devtree.data == dt - ) { - hd->attached_to = hd2->idx; - break; - } - } - - add_edid_info(hd_data, hd, edid); -} - -#endif /* defined(__PPC__) */ - -/* do some checks to ensure we got a reasonable block */ -int chk_edid_info(hd_data_t *hd_data, unsigned char *edid) -{ - // no vendor or model info - if(!(edid[0x08] || edid[0x09] || edid[0x0a] || edid[0x0b])) return 0; - - // no edid version or revision - if(!(edid[0x12] || edid[0x13])) return 0; - - return 1; -} - -#if !defined(__PPC__) -void add_lcd_info(hd_data_t *hd_data, hd_t *hd, bios_info_t *bt) -{ - monitor_info_t *mi = NULL; - - hd->vendor.name = new_str(bt->lcd.vendor); - hd->device.name = new_str(bt->lcd.name); - - add_monitor_res(hd, bt->lcd.width, bt->lcd.height, 60, 0); - - mi = new_mem(sizeof *mi); - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_monitor; - hd->detail->monitor.data = mi; - - mi->min_vsync = 50; - mi->min_hsync = 31; - mi->max_vsync = 75; - mi->max_hsync = (mi->max_vsync * bt->lcd.height * 12) / 10000; -} -#endif - -void add_edid_info(hd_data_t *hd_data, hd_t *hd, unsigned char *edid) -{ - hd_res_t *res; - monitor_info_t *mi = NULL; - int i; - unsigned u, u1, u2; - - fix_edid_info(hd_data, edid); - - u = (edid[8] << 8) + edid[9]; - hd->vendor.id = MAKE_ID(TAG_EISA, u); - u = (edid[0xb] << 8) + edid[0xa]; - hd->device.id = MAKE_ID(TAG_EISA, u); - if((u = device_class(hd_data, hd->vendor.id, hd->device.id))) { - if((u >> 8) == bc_monitor) hd->sub_class.id = u & 0xff; - } - - if(edid[0x15] > 0 && edid[0x16] > 0) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->size.type = res_size; - res->size.unit = size_unit_cm; - res->size.val1 = edid[0x15]; /* width */ - res->size.val2 = edid[0x16]; /* height */ - } - - u = edid[0x23]; - if(u & (1 << 7)) add_monitor_res(hd, 720, 400, 70, 0); - if(u & (1 << 6)) add_monitor_res(hd, 720, 400, 88, 0); - if(u & (1 << 5)) add_monitor_res(hd, 640, 480, 60, 0); - if(u & (1 << 4)) add_monitor_res(hd, 640, 480, 67, 0); - if(u & (1 << 3)) add_monitor_res(hd, 640, 480, 72, 0); - if(u & (1 << 2)) add_monitor_res(hd, 640, 480, 75, 0); - if(u & (1 << 1)) add_monitor_res(hd, 800, 600, 56, 0); - if(u & (1 << 0)) add_monitor_res(hd, 800, 600, 60, 0); - - u = edid[0x24]; - if(u & (1 << 7)) add_monitor_res(hd, 800, 600, 72, 0); - if(u & (1 << 6)) add_monitor_res(hd, 800, 600, 75, 0); - if(u & (1 << 5)) add_monitor_res(hd, 832, 624, 75, 0); - if(u & (1 << 4)) add_monitor_res(hd, 1024, 768, 87, 1); - if(u & (1 << 3)) add_monitor_res(hd, 1024, 768, 60, 0); - if(u & (1 << 2)) add_monitor_res(hd, 1024, 768, 70, 0); - if(u & (1 << 1)) add_monitor_res(hd, 1024, 768, 75, 0); - if(u & (1 << 0)) add_monitor_res(hd, 1280, 1024, 75, 0); - - for(i = 0; i < 4; i++) { - u1 = (edid[0x26 + 2 * i] + 31) * 8; - u2 = edid[0x27 + 2 * i]; - u = 0; - switch((u2 >> 6) & 3) { - case 1: u = (u1 * 3) / 4; break; - case 2: u = (u1 * 4) / 5; break; - case 3: u = (u1 * 9) / 16; break; - } - if(u) add_monitor_res(hd, u1, u, (u2 & 0x3f) + 60, 0); - } - - mi = new_mem(sizeof *mi); - mi->manu_year = 1990 + edid[0x11]; - - for(i = 0x36; i < 0x36 + 4 * 0x12; i += 0x12) { - if(!(edid[i] || edid[i + 1] || edid[i + 2])) { - switch(edid[i + 3]) { - case 0xfc: - if(edid[i + 5]) { - /* the name entry is splitted some times */ - str_printf(&mi->name, -1, "%s%s", mi->name ? " " : "", canon_str(edid + i + 5, 0xd)); - } - break; - - case 0xfd: - u = 0; - u1 = edid[i + 5]; - u2 = edid[i + 6]; - if(u1 > u2 || !u1) u = 1; - mi->min_vsync = u1; - mi->max_vsync = u2; - u1 = edid[i + 7]; - u2 = edid[i + 8]; - if(u1 > u2 || !u1) u = 1; - mi->min_hsync = u1; - mi->max_hsync = u2; - if(u) { - mi->min_vsync = mi->max_vsync = mi->min_hsync = mi->max_hsync = 0; - ADD2LOG(" ddc oops: invalid freq data\n"); - } - break; - - case 0xfe: - if(!mi->vendor && edid[i + 5]) mi->vendor = canon_str(edid + i + 5, 0xd); - break; - - case 0xff: - if(!mi->serial && edid[i + 5]) mi->serial = canon_str(edid + i + 5, 0xd); - break; - - default: - ADD2LOG(" ddc oops: invalid tag 0x%02x\n", edid[i + 3]); - } - } - } - - if(mi) { - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_monitor; - hd->detail->monitor.data = mi; - - hd->serial = new_str(mi->serial); - hd->vendor.name = new_str(mi->vendor); - hd->device.name = new_str(mi->name); - - if(hd_data->debug) { - ADD2LOG("----- DDC info -----\n"); - if(mi->vendor) { - ADD2LOG(" vendor: \"%s\"\n", mi->vendor); - } - if(mi->name) { - ADD2LOG(" model: \"%s\"\n", mi->name); - } - if(mi->serial) { - ADD2LOG(" serial: \"%s\"\n", mi->serial); - } - if(mi->min_hsync) { - ADD2LOG(" hsync: %u-%u kHz\n", mi->min_hsync, mi->max_hsync); - } - if(mi->min_vsync) { - ADD2LOG(" vsync: %u-%u Hz\n", mi->min_vsync, mi->max_vsync); - } - if(mi->manu_year) { - ADD2LOG(" manu. year: %u\n", mi->manu_year); - } - ADD2LOG("----- DDC info end -----\n"); - } - } -} - -void add_monitor_res(hd_t *hd, unsigned width, unsigned height, unsigned vfreq, unsigned il) -{ - hd_res_t *res; - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->monitor.type = res_monitor; - res->monitor.width = width; - res->monitor.height = height; - res->monitor.vfreq = vfreq; - res->monitor.interlaced = il; -} - -/* - * This looks evil, but some Mac displays really lie at us. - */ -void fix_edid_info(hd_data_t *hd_data, unsigned char *edid) -{ - unsigned vend, dev; - unsigned timing; - int fix = 0; - - vend = (edid[8] << 8) + edid[9]; - dev = (edid[0xb] << 8) + edid[0xa]; - - timing = (edid[0x24] << 8) + edid[0x23]; - - /* APP9214: Apple Studio Display */ - if(vend == 0x0610 && dev == 0x9214 && timing == 0x0800) { - timing = 0x1000; - fix = 1; - } - - if(fix) { - edid[0x23] = timing & 0xff; - edid[0x24] = (timing >> 8) & 0xff; - } -} - diff --git a/src/hwinfo/src/hd/monitor.h b/src/hwinfo/src/hd/monitor.h deleted file mode 100644 index a74a0bb372..0000000000 --- a/src/hwinfo/src/hd/monitor.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_monitor(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/mouse.c b/src/hwinfo/src/hd/mouse.c deleted file mode 100644 index 83a576bf63..0000000000 --- a/src/hwinfo/src/hd/mouse.c +++ /dev/null @@ -1,785 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "mouse.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * mouse info - * - * TODO: reset serial lines to old values (cf. modem.c) - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#ifndef LIBHD_TINY - -#if 0 -static unsigned read_data(hd_data_t *hd_data, int fd, unsigned char *buf, unsigned buf_size); -static void get_ps2_mouse(hd_data_t *hd_data); -static void test_ps2_open(void *arg); -#endif - -static void get_serial_mouse(hd_data_t* hd_data); -static void add_serial_mouse(hd_data_t* hd_data); -static int _setspeed(int fd, int old, int new, int needtowrite, unsigned short flags); -static void setspeed(int fd, int new, int needtowrite, unsigned short flags); -static unsigned chk4id(ser_device_t *mi); -static ser_device_t *add_ser_mouse_entry(ser_device_t **sm, ser_device_t *new_sm); -static void dump_ser_mouse_data(hd_data_t *hd_data); -#if 0 -static void get_sunmouse(hd_data_t *hd_data); -#endif - -void hd_scan_mouse(hd_data_t *hd_data) -{ - ser_device_t *sm, *sm_next; - - if(!hd_probe_feature(hd_data, pr_mouse)) return; - - hd_data->module = mod_mouse; - - /* some clean-up */ - remove_hd_entries(hd_data); - hd_data->ser_mouse = NULL; - -#if 0 - PROGRESS(1, 0, "ps/2"); - - get_ps2_mouse(hd_data); -#endif - - PROGRESS(2, 0, "serial"); - - hd_fork(hd_data, 20, 20); - - if(hd_data->flags.forked) { - get_serial_mouse(hd_data); - hd_move_to_shm(hd_data); - if((hd_data->debug & HD_DEB_MOUSE)) dump_ser_mouse_data(hd_data); - } - else { - /* take data from shm */ - hd_data->ser_mouse = ((hd_data_t *) (hd_data->shm.data))->ser_mouse; - if((hd_data->debug & HD_DEB_MOUSE)) dump_ser_mouse_data(hd_data); - } - - hd_fork_done(hd_data); - - add_serial_mouse(hd_data); - - hd_shm_clean(hd_data); - - for(sm = hd_data->ser_mouse; sm; sm = sm_next) { - sm_next = sm->next; - - free_mem(sm->dev_name); - free_mem(sm); - } - hd_data->ser_mouse = NULL; - -#if 0 - PROGRESS(3, 0, "sunmouse"); - - get_sunmouse(hd_data); -#endif -} - - -#if 0 -unsigned read_data(hd_data_t *hd_data, int fd, unsigned char *buf, unsigned buf_size) -{ - int k, len = 0; - unsigned char *bp; - - while( - (unsigned) len < buf_size && - (k = read(fd, buf + len, buf_size - len)) >= 0 - ) len += k; - - bp = buf; - if(len && (*bp == 0xfe || *bp == 0xfa)) { bp++; len--; } - - for(k = 0; k < len; k++) buf[k] = bp[k]; - - if((hd_data->debug & HD_DEB_MOUSE)) { - ADD2LOG("ps/2[%d]: ", len); - hexdump(&hd_data->log, 1, len, buf); - ADD2LOG("\n"); - } - - return len; -} - - -/* - * How it works: - * - * 1. There must exist a PS/2 controller entry (-> there is a PS/2 port). - * 2. If there are PS/2 mouse irq events, assume a PS/2 mouse is attached. - * 3. Otherwise: - * - open /dev/psaux - * - write the "get mouse info" command (0xe9) - * - read back the response, which should be either 0xfe "resend data" - * or, e.g. (0xfa) 0x20 0x02 0x3c (0xfa = "ACK" (should be swallowed - * by the psaux driver, but isn't), the rest are settings) - * - ignore the first byte if it is 0xfa or 0xfe - * - if there are at least 2 bytes left, assume a mouse is attached. - * - * Note1: we could use the command 0xfe "get mouse ID" instead. But that turned - * out to be less reliable, as this command returns only one byte, which - * is even 0. - * Note2: step 2 is mainly relevant if the mouse is already in use. In that - * case we would have problems reading back the respose of our command. - * (Typically the mouse driver will get it (and choke on it).) - */ - -static void get_ps2_mouse(hd_data_t *hd_data) -{ - hd_t *hd, *hd1; - hd_res_t *res; - int fd; - fd_set set; - struct timeval tv; - unsigned char cmd_mouse_info = 0xe9; /* read mouse info (3 bytes) */ - unsigned char cmd_mouse_id = 0xf2; /* read mouse id (1 byte) */ - unsigned char buf[100]; - unsigned mouse_id = -1; - static unsigned char intelli_init[] = { 0xf3, 200, 0xf3, 100, 0xf3, 80 }; - int buf_len = 0; -#ifdef __PPC__ - int always_ps2_mouse = 0; -#endif - - for(hd1 = hd_data->hd; hd1; hd1 = hd1->next) { - /* look for a PS/2 controller entry... */ - if(hd1->base_class.id == bc_ps2) { - /* ...and see if there were irq events... */ - for(res = hd1->res; res; res = res->next) { - if(res->irq.type == res_irq && res->irq.triggered) break; - } - -#ifdef __PPC__ - /* - * On PReP & CHRP, assume a PS/2 mouse to be attached. - * There seems to be no way to actually *detect* it. - */ - if(!res) { - hd_t *hd; - sys_info_t *st; - - if((hd = hd_list(hd_data, hw_sys, 0, NULL))) { - if( - hd->detail && - hd->detail->type == hd_detail_sys && - (st = hd->detail->sys.data) && - ( - !strcmp(st->system_type, "PReP") || - strstr(st->system_type, "CHRP") == st->system_type /* CHRP && CHRP64 */ - ) - ) { - always_ps2_mouse = 1; - } - } - } -#endif - - PROGRESS(1, 1, "ps/2"); - - /* open the mouse device... */ - if(hd_timeout(test_ps2_open, NULL, 2) > 0) { - ADD2LOG("ps/2: open(%s) timed out\n", DEV_PSAUX); - fd = -2; - } - else { - fd = open(DEV_PSAUX, O_RDWR | O_NONBLOCK); - } - - PROGRESS(1, 2, "ps/2"); - - if(fd >= 0) { - /* ...write the id command... */ - - PROGRESS(1, 3, "ps/2"); - - write(fd, intelli_init, sizeof intelli_init); - usleep(25000); - read_data(hd_data, fd, buf, sizeof buf); - - if(write(fd, &cmd_mouse_id, 1) == 1) { - - PROGRESS(1, 4, "ps/2"); - usleep(50000); /* ...give it a chance to react... */ - - /* ...read the response... */ - buf_len = read_data(hd_data, fd, buf, sizeof buf); - - if(buf_len >= 1) mouse_id = buf[buf_len - 1]; - - // if we didn't get any response, try this - if(buf_len == 0 || (hd_data->debug & HD_DEB_MOUSE)) { - PROGRESS(1, 5, "ps/2"); - if(write(fd, &cmd_mouse_info, 1) == 1) { - usleep(50000); - buf_len = read_data(hd_data, fd, buf, sizeof buf); - /* - * Assume a mouse to be attached if at least 2 bytes are - * returned. - */ - if(mouse_id == -1u && buf_len >= 2) mouse_id = 0; - } - } - - PROGRESS(1, 6, "ps/2"); - } - close(fd); - - PROGRESS(1, 7, "ps/2"); - - /* - * The following code is apparently necessary on some board/mouse - * combinations. Otherwise the PS/2 mouse won't work. - */ - if((fd = open(DEV_PSAUX, O_RDONLY | O_NONBLOCK)) >= 0) { - PROGRESS(1, 8, "ps/2"); - - FD_ZERO(&set); - FD_SET(fd, &set); - tv.tv_sec = 0; tv.tv_usec = 1; - if(select(fd + 1, &set, NULL, NULL, &tv) == 1) { - PROGRESS(1, 9, "ps/2"); - - read(fd, buf, sizeof buf); - - PROGRESS(1, 10, "ps/2"); - } - PROGRESS(1, 11, "ps/2"); - - close(fd); - - PROGRESS(1, 12, "ps/2"); - } - } - else { - ADD2LOG("open(" DEV_PSAUX "): %s\n", fd == -1 ? strerror(errno) : "timeout"); - } - - if(mouse_id == -1u) { - - /* - * Assume a PS/2 mouse is attached if the ps/2 controller has - * genetrated some events. - */ - - if( - res -#ifdef __PPC__ - || always_ps2_mouse -#endif - ) { - PROGRESS(1, 13, "ps/2"); - mouse_id = 0; - } - } - - if(mouse_id != -1u) { - PROGRESS(1, 14, "ps/2"); - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_mouse; - hd->sub_class.id = sc_mou_ps2; - hd->bus.id = bus_ps2; - hd->unix_dev_name = new_str(DEV_MICE); - hd->attached_to = hd1->idx; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0200); - switch(mouse_id) { - case 3: /* 3 buttons + wheel */ - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0004); - break; - - case 4: /* 5 buttons + wheel */ - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0005); - break; - - default: /* 0 */ - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0002); - } - } - - /* there can only be one... */ - break; - } - } -} - -void test_ps2_open(void *arg) -{ - open(DEV_PSAUX, O_RDWR | O_NONBLOCK); -} -#endif - -#if 0 -static void get_sunmouse(hd_data_t *hd_data) -{ - hd_t *hd; - int fd; - int found; - - found = 0; - - /* Only search for Sun mouse if we have a Sun keyboard */ - for(hd = hd_data->hd; hd; hd = hd->next) - { - if(hd->base_class.id == bc_keyboard && - hd->sub_class.id == sc_keyboard_kbd && - ID_TAG(hd->vendor.id) == TAG_SPECIAL && ID_VALUE(hd->vendor.id) == 0x0202) - found = 1; - } - - if (found) - { - if ((fd = open(DEV_SUNMOUSE, O_RDONLY)) != -1) - { - /* FIXME: Should probably talk to the mouse to see - if the connector is not empty. */ - close (fd); - - PROGRESS(1, 1, "Sun Mouse"); - - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_mouse; - hd->sub_class.id = sc_mou_sun; - hd->bus.id = bus_serial; - hd->unix_dev_name = new_str(DEV_SUNMOUSE); - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0202); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0000); - } - } -} -#endif - -/* - * Gather serial mouse data and put it into hd_data->ser_mouse. - */ -void get_serial_mouse(hd_data_t *hd_data) -{ - hd_t *hd; - int j, fd, fd_max = 0, sel, max_len; - unsigned modem_info; - fd_set set, set0; - struct timeval to; - ser_device_t *sm; - struct termios tio; - - FD_ZERO(&set); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_comm && - hd->sub_class.id == sc_com_ser && - hd->unix_dev_name && - !hd->tag.ser_skip && - !has_something_attached(hd_data, hd) - ) { - if((fd = open(hd->unix_dev_name, O_RDWR | O_NONBLOCK)) >= 0) { - if(tcgetattr(fd, &tio)) continue; - sm = add_ser_mouse_entry(&hd_data->ser_mouse, new_mem(sizeof *sm)); - sm->dev_name = new_str(hd->unix_dev_name); - sm->fd = fd; - sm->tio = tio; - sm->hd_idx = hd->idx; - if(fd > fd_max) fd_max = fd; - FD_SET(fd, &set); - - /* - * PnP COM spec black magic... - */ - setspeed(fd, 1200, 1, CS7); - modem_info = TIOCM_DTR | TIOCM_RTS; - ioctl(fd, TIOCMBIC, &modem_info); - } - } - } - - if(!hd_data->ser_mouse) return; - - /* - * 200 ms seems to be too fast for some mice... - */ - usleep(300000); /* PnP protocol */ - - for(sm = hd_data->ser_mouse; sm; sm = sm->next) { - modem_info = TIOCM_DTR | TIOCM_RTS; - ioctl(sm->fd, TIOCMBIS, &modem_info); - } - - /* smaller buffer size, otherwise we might wait really long... */ - max_len = sizeof sm->buf < 128 ? sizeof sm->buf : 128; - - to.tv_sec = 0; to.tv_usec = 300000; - - set0 = set; - for(;;) { - to.tv_sec = 0; to.tv_usec = 300000; - set = set0; - if((sel = select(fd_max + 1, &set, NULL, NULL, &to)) > 0) { - for(sm = hd_data->ser_mouse; sm; sm = sm->next) { - if(FD_ISSET(sm->fd, &set)) { - if((j = read(sm->fd, sm->buf + sm->buf_len, max_len - sm->buf_len)) > 0) - sm->buf_len += j; - if(j <= 0) FD_CLR(sm->fd, &set0); // ##### - } - } - } - else { - break; - } - } - - for(sm = hd_data->ser_mouse; sm; sm = sm->next) { - chk4id(sm); - /* reset serial lines */ - tcflush(sm->fd, TCIOFLUSH); - tcsetattr(sm->fd, TCSAFLUSH, &sm->tio); - close(sm->fd); - } -} - - -/* - * Go through serial mouse data and add hd entries. - */ -void add_serial_mouse(hd_data_t *hd_data) -{ - hd_t *hd; - char buf[4]; - ser_device_t *sm; - - for(sm = hd_data->ser_mouse; sm; sm = sm->next) { - if(sm->is_mouse) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_mouse; - hd->sub_class.id = sc_mou_ser; - hd->bus.id = bus_serial; - hd->unix_dev_name = new_str(sm->dev_name); - hd->attached_to = sm->hd_idx; - if(*sm->pnp_id) { - strncpy(buf, sm->pnp_id, 3); - buf[3] = 0; - hd->vendor.id = name2eisa_id(buf); - if(!hd->vendor.id) { /* in case it's a really strange one... */ - hd->vendor.name = new_str(buf); - } - hd->device.id = MAKE_ID(TAG_EISA, strtol(sm->pnp_id + 3, NULL, 16)); - - hd->serial = new_str(sm->serial); - if(sm->user_name) hd->device.name = new_str(sm->user_name); - if(sm->vend) { - free_mem(hd->vendor.name); - hd->vendor.name = new_str(sm->vend); - } - - if(sm->dev_id && strlen(sm->dev_id) >= 7) { - char buf[5], *s; - unsigned u1, u2; - - u1 = name2eisa_id(sm->dev_id); - if(u1) { - strncpy(buf, sm->dev_id + 3, 4); - buf[4] = 0; - u2 = strtol(sm->dev_id + 3, &s, 16); - if(!*s) { - hd->compat_vendor.id = u1; - hd->compat_device.id = MAKE_ID(TAG_EISA, u2); - } - } - } - } - else { - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0200); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0003); - } - } - } -} - - -/* - * Baud setting magic taken from gpm. - */ - -int _setspeed(int fd, int old, int new, int needtowrite, unsigned short flags) -{ - struct termios tty; - char *c; - int err = 0; - - flags |= CREAD | CLOCAL | HUPCL; - - if(tcgetattr(fd, &tty)) return errno; - - tty.c_iflag = IGNBRK | IGNPAR; - tty.c_oflag = 0; - tty.c_lflag = 0; - tty.c_line = 0; - tty.c_cc[VTIME] = 0; - tty.c_cc[VMIN] = 1; - - switch (old) - { - case 9600: tty.c_cflag = flags | B9600; break; - case 4800: tty.c_cflag = flags | B4800; break; - case 2400: tty.c_cflag = flags | B2400; break; - case 1200: - default: tty.c_cflag = flags | B1200; break; - } - - if(tcsetattr(fd, TCSAFLUSH, &tty)) return errno; - - switch (new) - { - case 9600: c = "*q"; tty.c_cflag = flags | B9600; break; - case 4800: c = "*p"; tty.c_cflag = flags | B4800; break; - case 2400: c = "*o"; tty.c_cflag = flags | B2400; break; - case 1200: - default: c = "*n"; tty.c_cflag = flags | B1200; break; - } - - if(needtowrite) { - err = 2 - write(fd, c, 2); - } - - usleep(100000); - - if(tcsetattr(fd, TCSAFLUSH, &tty)) return errno; - - return err; -} - - -void setspeed(int fd, int new, int needtowrite, unsigned short flags) -{ - int i, err; - - for(i = 9600; i >= 1200; i >>= 1) { - err = _setspeed(fd, i, new, needtowrite, flags); -#if 0 - if(err) { - fprintf(stderr, "%d, %d ", i, err); - perror(""); - } -#endif - } -} - - -#if 0 -/* - * Check for a PnP info field starting at ofs; - * returns either the length of the field or 0 if none was found. - * - * the minfo_t struct is updated with the PnP data - */ -int is_pnpinfo(ser_device_t *mi, int ofs) -{ - int i; - unsigned char *s = mi->buf + ofs; - int len = mi->buf_len - ofs; - - if(len <= 0) return 0; - - switch(*s) { - case 0x08: - mi->bits = 6; break; - case 0x28: - mi->bits = 7; break; - default: - return 0; - } - - if(len < 11) return 0; - - /* six bit values */ - if((s[1] & ~0x3f) || (s[2] & ~0x3f)) return 0; - mi->pnp_rev = (s[1] << 6) + s[2]; - - /* the eisa id */ - for(i = 0; i < 7; i++) { - mi->pnp_id[i] = s[i + 3]; - if(mi->bits == 6) mi->pnp_id[i] += 0x20; - } - mi->pnp_id[7] = 0; - - /* now check the id */ - for(i = 0; i < 3; i++) { - if( - (mi->pnp_id[i] < 'A' || mi->pnp_id[i] > 'Z') && - mi->pnp_id[i] != '_' - ) return 0; - } - - for(i = 3; i < 7; i++) { - if( - (mi->pnp_id[i] < '0' || mi->pnp_id[i] > '9') && - (mi->pnp_id[i] < 'A' || mi->pnp_id[i] > 'F') - ) return 0; - } - - if( - (mi->bits == 6 && s[10] == 0x09) || - (mi->bits == 7 && s[10] == 0x29) - ) { - return 11; - } - - if( - (mi->bits != 6 || s[10] != 0x3c) && - (mi->bits != 7 || s[10] != 0x5c) - ) { - return 0; - } - - /* skip extended info */ - for(i = 11; i < len; i++) { - if( - (mi->bits == 6 && s[i] == 0x09) || - (mi->bits == 7 && s[i] == 0x29) - ) { - return i + 1; - } - } - - /* - * some mice have problems providing the extended info -> return ok in - * these cases too - */ - if( - (mi->bits == 6 && s[10] == 0x3c) || - (mi->bits == 7 && s[10] == 0x5c) - ) { - return 11; - } - - /* no end token... */ - - return 0; -} -#endif - -unsigned chk4id(ser_device_t *mi) -{ - int i; - -#if 0 - unsigned char fake[] = - { - // fake pnp data - }; - - mi->buf_len = sizeof fake; - memcpy(mi->buf, fake, mi->buf_len); - // for(i = 0; i < mi->buf_len; i++) mi->buf[i] += ' '; -#endif - - if(!mi->buf_len) return 0; - - for(i = 0; i < mi->buf_len; i++) { - if((mi->pnp = is_pnpinfo(mi, i))) break; - } - if(i == mi->buf_len) { - /* non PnP, but MS compatible */ - if(*mi->buf == 'M') - mi->non_pnp = mi->buf_len - 1; - else - return 0; - } - - mi->garbage = i; - - for(i = 0; i < mi->garbage; i++) { - if(mi->buf[i] == 'M') { - mi->non_pnp = mi->garbage - i; - mi->garbage = i; - break; - } - } - - if(mi->non_pnp || mi->bits == 6) mi->is_mouse = 1; - - return mi->is_mouse; -} - -ser_device_t *add_ser_mouse_entry(ser_device_t **sm, ser_device_t *new_sm) -{ - while(*sm) sm = &(*sm)->next; - return *sm = new_sm; -} - - -void dump_ser_mouse_data(hd_data_t *hd_data) -{ - int j; - ser_device_t *sm; - - if(!(sm = hd_data->ser_mouse)) return; - - ADD2LOG("----- serial mice -----\n"); - - for(; sm; sm = sm->next) { - ADD2LOG("%s\n", sm->dev_name); - if(sm->serial) ADD2LOG("serial: \"%s\"\n", sm->serial); - if(sm->class_name) ADD2LOG("class_name: \"%s\"\n", sm->class_name); - if(sm->dev_id) ADD2LOG("dev_id: \"%s\"\n", sm->dev_id); - if(sm->user_name) ADD2LOG("user_name: \"%s\"\n", sm->user_name); - - if(sm->garbage) { - ADD2LOG(" garbage[%u]: ", sm->garbage); - hexdump(&hd_data->log, 1, sm->garbage, sm->buf); - ADD2LOG("\n"); - } - - if(sm->non_pnp) { - ADD2LOG(" non-pnp[%u]: ", sm->non_pnp); - hexdump(&hd_data->log, 1, sm->non_pnp, sm->buf + sm->garbage); - ADD2LOG("\n"); - } - - if(sm->pnp) { - ADD2LOG(" pnp[%u]: ", sm->pnp); - hexdump(&hd_data->log, 1, sm->pnp, sm->buf + sm->garbage + sm->non_pnp); - ADD2LOG("\n"); - } - - if((j = sm->buf_len - (sm->garbage + sm->non_pnp + sm->pnp))) { - ADD2LOG(" moves[%u]: ", j); - hexdump(&hd_data->log, 1, j, sm->buf + sm->garbage + sm->non_pnp + sm->pnp); - ADD2LOG("\n"); - } - - if(sm->is_mouse) ADD2LOG(" is mouse\n"); - - if(sm->pnp) { - ADD2LOG(" bits: %u\n", sm->bits); - ADD2LOG(" PnP Rev: %u.%02u\n", sm->pnp_rev / 100, sm->pnp_rev % 100); - ADD2LOG(" PnP ID: \"%s\"\n", sm->pnp_id); - } - - if(sm->next) ADD2LOG("\n"); - } - - ADD2LOG("----- serial mice end -----\n"); -} - -#endif /* !defined(LIBHD_TINY) */ diff --git a/src/hwinfo/src/hd/mouse.h b/src/hwinfo/src/hd/mouse.h deleted file mode 100644 index 10a038a55d..0000000000 --- a/src/hwinfo/src/hd/mouse.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_mouse(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/net.c b/src/hwinfo/src/hd/net.c deleted file mode 100644 index 955740fe2a..0000000000 --- a/src/hwinfo/src/hd/net.c +++ /dev/null @@ -1,546 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define u8 uint8_t -#define u16 uint16_t -#define u32 uint32_t -#define u64 uint64_t -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "net.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * gather network interface info - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -static void get_driverinfo(hd_data_t *hd_data, hd_t *hd); -static void get_linkstate(hd_data_t *hd_data, hd_t *hd); -static void add_xpnet(hd_data_t *hdata); -static void add_iseries(hd_data_t *hdata); -static void add_uml(hd_data_t *hdata); - -/* - * This is independent of the other scans. - */ - -void hd_scan_net(hd_data_t *hd_data) -{ - unsigned u; - int if_type; - hd_t *hd, *hd_card; - char *s, *hw_addr; - hd_res_t *res, *res1; - uint64_t ul0; - - struct sysfs_class *sf_class; - struct sysfs_class_device *sf_cdev; - struct sysfs_device *sf_dev; - struct sysfs_driver *sf_drv; - struct dlist *sf_cdev_list; - - if(!hd_probe_feature(hd_data, pr_net)) return; - - hd_data->module = mod_net; - - /* some clean-up */ - remove_hd_entries(hd_data); - hd_data->net = free_str_list(hd_data->net); - - PROGRESS(1, 0, "get network data"); - - sf_class = sysfs_open_class("net"); - - if(!sf_class) { - ADD2LOG("sysfs: no such class: net\n"); - return; - } - - sf_cdev_list = sysfs_get_class_devices(sf_class); - if(sf_cdev_list) dlist_for_each_data(sf_cdev_list, sf_cdev, struct sysfs_class_device) { - hd_card = NULL; - - ADD2LOG( - " net interface: name = %s, classname = %s, path = %s\n", - sf_cdev->name, - sf_cdev->classname, - hd_sysfs_id(sf_cdev->path) - ); - - if_type = -1; - if(hd_attr_uint(sysfs_get_classdev_attr(sf_cdev, "type"), &ul0, 0)) { - if_type = ul0; - ADD2LOG(" type = %d\n", if_type); - } - - hw_addr = NULL; - if((s = hd_attr_str(sysfs_get_classdev_attr(sf_cdev, "address")))) { - hw_addr = canon_str(s, strlen(s)); - ADD2LOG(" hw_addr = %s\n", hw_addr); - } - - sf_dev = sysfs_get_classdev_device(sf_cdev); - if(sf_dev) { - ADD2LOG(" net device: path = %s\n", hd_sysfs_id(sf_dev->path)); - } - - sf_drv = sysfs_get_classdev_driver(sf_cdev); - if(sf_drv) { - ADD2LOG( - " net driver: name = %s, path = %s\n", - sf_drv->name, - hd_sysfs_id(sf_drv->path) - ); - } - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_network_interface; - hd->sub_class.id = sc_nif_other; - - res1 = NULL; - if(hw_addr && strspn(hw_addr, "0:") != strlen(hw_addr)) { - res1 = new_mem(sizeof *res1); - res1->hwaddr.type = res_hwaddr; - res1->hwaddr.addr = new_str(hw_addr); - add_res_entry(&hd->res, res1); - } - - hw_addr = free_mem(hw_addr); - - hd->unix_dev_name = new_str(sf_cdev->name); - hd->sysfs_id = new_str(hd_sysfs_id(sf_cdev->path)); - - if(sf_drv) { - add_str_list(&hd->drivers, sf_drv->name); - } - else if(hd->res) { - get_driverinfo(hd_data, hd); - } - - if(sf_dev) { - hd->sysfs_device_link = new_str(hd_sysfs_id(sf_dev->path)); - - hd_card = hd_find_sysfs_id(hd_data, hd_sysfs_id(sf_dev->path)); - if(hd_card) { - hd->attached_to = hd_card->idx; - - /* for cards with strange pci classes */ - hd_set_hw_class(hd_card, hw_network_ctrl); - - /* add hw addr to network card */ - if(res1) { - u = 0; - for(res = hd_card->res; res; res = res->next) { - if( - res->any.type == res_hwaddr && - !strcmp(res->hwaddr.addr, res1->hwaddr.addr) - ) { - u = 1; - break; - } - } - if(!u) { - res = new_mem(sizeof *res); - res->hwaddr.type = res_hwaddr; - res->hwaddr.addr = new_str(res1->hwaddr.addr); - add_res_entry(&hd_card->res, res); - } - } - /* add interface names */ - if(hd->unix_dev_name) { - if(!search_str_list(hd_card->unix_dev_names, hd->unix_dev_name)) { - add_str_list(&hd_card->unix_dev_names, hd->unix_dev_name); - } - if(!hd_card->unix_dev_name) { - hd_card->unix_dev_name = new_str(hd->unix_dev_name); - } - } - } - } - -#if 0 - "ctc" sc_nif_ctc - "iucv" sc_nif_iucv - "hsi" sc_nif_hsi - "qeth" sc_nif_qeth - "escon" sc_nif_escon - "myri" sc_nif_myrinet - "wlan" sc_nif_wlan - "xp" sc_nif_xp - "usb" sc_nif_usb -#endif - switch(if_type) { - case ARPHRD_ETHER: /* eth */ - hd->sub_class.id = sc_nif_ethernet; - break; - case ARPHRD_LOOPBACK: /* lo */ - hd->sub_class.id = sc_nif_loopback; - break; - case ARPHRD_SIT: /* sit */ - hd->sub_class.id = sc_nif_sit; - break; - case ARPHRD_FDDI: /* fddi */ - hd->sub_class.id = sc_nif_fddi; - break; - case ARPHRD_IEEE802_TR: /* tr */ - hd->sub_class.id = sc_nif_tokenring; - break; -#if 0 - case ARPHRD_IEEE802: /* fc */ - hd->sub_class.id = sc_nif_fc; - break; -#endif - } - - if(!strcmp(hd->unix_dev_name, "lo")) { - hd->sub_class.id = sc_nif_loopback; - } - else if(sscanf(hd->unix_dev_name, "eth%u", &u) == 1) { - hd->sub_class.id = sc_nif_ethernet; - hd->slot = u; - } - else if(sscanf(hd->unix_dev_name, "tr%u", &u) == 1) { - hd->sub_class.id = sc_nif_tokenring; - hd->slot = u; - } - else if(sscanf(hd->unix_dev_name, "fddi%u", &u) == 1) { - hd->sub_class.id = sc_nif_fddi; - hd->slot = u; - } - else if(sscanf(hd->unix_dev_name, "ctc%u", &u) == 1) { - hd->sub_class.id = sc_nif_ctc; - hd->slot = u; - } - else if(sscanf(hd->unix_dev_name, "iucv%u", &u) == 1) { - hd->sub_class.id = sc_nif_iucv; - hd->slot = u; - } - else if(sscanf(hd->unix_dev_name, "hsi%u", &u) == 1) { - hd->sub_class.id = sc_nif_hsi; - hd->slot = u; - } - else if(sscanf(hd->unix_dev_name, "qeth%u", &u) == 1) { - hd->sub_class.id = sc_nif_qeth; - hd->slot = u; - } - else if(sscanf(hd->unix_dev_name, "escon%u", &u) == 1) { - hd->sub_class.id = sc_nif_escon; - hd->slot = u; - } - else if(sscanf(hd->unix_dev_name, "myri%u", &u) == 1) { - hd->sub_class.id = sc_nif_myrinet; - hd->slot = u; - } - else if(sscanf(hd->unix_dev_name, "sit%u", &u) == 1) { - hd->sub_class.id = sc_nif_sit; /* ipv6 over ipv4 tunnel */ - hd->slot = u; - } - else if(sscanf(hd->unix_dev_name, "wlan%u", &u) == 1) { - hd->sub_class.id = sc_nif_wlan; - hd->slot = u; - } - else if(sscanf(hd->unix_dev_name, "xp%u", &u) == 1) { - hd->sub_class.id = sc_nif_xp; - hd->slot = u; - } - else if(sscanf(hd->unix_dev_name, "usb%u", &u) == 1) { - hd->sub_class.id = sc_nif_usb; - hd->slot = u; - } - /* ##### add more interface names here */ - - hd->bus.id = bus_none; - - /* fix card type */ - if(hd_card) { - if( - (hd_card->base_class.id == 0 && hd_card->sub_class.id == 0) || - (hd_card->base_class.id == bc_network && hd_card->sub_class.id == 0x80) - ) { - switch(hd->sub_class.id) { - case sc_nif_ethernet: - hd_card->base_class.id = bc_network; - hd_card->sub_class.id = 0; - break; - - case sc_nif_usb: - hd_card->base_class.id = bc_network; - hd_card->sub_class.id = 0x91; - break; - } - } - } - } - - sysfs_close_class(sf_class); - - if(hd_is_sgi_altix(hd_data)) add_xpnet(hd_data); - if(hd_is_iseries(hd_data)) add_iseries(hd_data); - add_uml(hd_data); - - /* add link status info */ - for(hd = hd_data->hd ; hd; hd = hd->next) { - if( - hd->module == hd_data->module && - hd->base_class.id == bc_network_interface - ) { - get_linkstate(hd_data, hd); - - if(!(hd_card = hd_get_device_by_idx(hd_data, hd->attached_to))) continue; - - for(res = hd->res; res; res = res->next) { - if(res->any.type == res_link) break; - } - - if(res) { - for(res1 = hd_card->res; res1; res1 = res1->next) { - if(res1->any.type == res_link) break; - } - if(res && !res1) { - res1 = new_mem(sizeof *res1); - res1->link.type = res_link; - res1->link.state = res->link.state; - add_res_entry(&hd_card->res, res1); - } - } - } - } -} - - -/* - * Get it the classical way, for drivers that don't support sysfs (veth). - */ -void get_driverinfo(hd_data_t *hd_data, hd_t *hd) -{ - int fd; - struct ethtool_drvinfo drvinfo = { cmd:ETHTOOL_GDRVINFO }; - struct ifreq ifr; - - if(!hd->unix_dev_name) return; - - if(strlen(hd->unix_dev_name) > sizeof ifr.ifr_name - 1) return; - - if((fd = socket(PF_INET, SOCK_DGRAM, 0)) == -1) return; - - /* get driver info */ - memset(&ifr, 0, sizeof ifr); - strcpy(ifr.ifr_name, hd->unix_dev_name); - ifr.ifr_data = (caddr_t) &drvinfo; - if(ioctl(fd, SIOCETHTOOL, &ifr) == 0) { - ADD2LOG(" ethtool driver: %s\n", drvinfo.driver); - ADD2LOG(" ethtool bus: %s\n", drvinfo.bus_info); - - add_str_list(&hd->drivers, drvinfo.driver); - } - else { - ADD2LOG(" GDRVINFO ethtool error: %s\n", strerror(errno)); - } - - close(fd); -} - - -/* - * Check network link status. - */ -void get_linkstate(hd_data_t *hd_data, hd_t *hd) -{ - int fd; - struct ethtool_value linkstatus = { cmd:ETHTOOL_GLINK }; - struct ifreq ifr; - hd_res_t *res; - - if(!hd->unix_dev_name) return; - - if(strlen(hd->unix_dev_name) > sizeof ifr.ifr_name - 1) return; - - if((fd = socket(PF_INET, SOCK_DGRAM, 0)) == -1) return; - - /* get driver info */ - memset(&ifr, 0, sizeof ifr); - strcpy(ifr.ifr_name, hd->unix_dev_name); - ifr.ifr_data = (caddr_t) &linkstatus; - if(ioctl(fd, SIOCETHTOOL, &ifr) == 0) { - ADD2LOG(" %s: ethtool link state: %d\n", hd->unix_dev_name, linkstatus.data); - res = new_mem(sizeof *res); - res->link.type = res_link; - res->link.state = linkstatus.data ? 1 : 0; - add_res_entry(&hd->res, res); - } - else { - ADD2LOG(" %s: GLINK ethtool error: %s\n", hd->unix_dev_name, strerror(errno)); - } - - close(fd); -} - - -/* - * SGI Altix cross partition network. - */ -void add_xpnet(hd_data_t *hd_data) -{ - hd_t *hd, *hd_card; - hd_res_t *res, *res2; - - hd_card = add_hd_entry(hd_data, __LINE__, 0); - hd_card->base_class.id = bc_network; - hd_card->sub_class.id = 0x83; - - hd_card->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4002); - hd_card->device.id = MAKE_ID(TAG_SPECIAL, 1); - - if(hd_module_is_active(hd_data, "xpnet")) { - add_str_list(&hd_card->drivers, "xpnet"); - } - - for(hd = hd_data->hd ; hd; hd = hd->next) { - if( - hd->module == hd_data->module && - hd->base_class.id == bc_network_interface && - hd->sub_class.id == sc_nif_xp - ) { - hd->attached_to = hd_card->idx; - - for(res = hd->res; res; res = res->next) { - if(res->any.type == res_hwaddr) break; - } - - if(res) { - res2 = new_mem(sizeof *res2); - res2->hwaddr.type = res_hwaddr; - res2->hwaddr.addr = new_str(res->hwaddr.addr); - add_res_entry(&hd_card->res, res2); - } - - break; - } - } -} - - -/* - * iSeries veth devices. - */ -void add_iseries(hd_data_t *hd_data) -{ - hd_t *hd, *hd_card; - hd_res_t *res, *res2; - unsigned i, cardmask = 0, card_cnt = 0; - str_list_t *sl0, *sl; - - for(hd = hd_data->hd ; hd; hd = hd->next) { - if( - hd->module == hd_data->module && - hd->base_class.id == bc_network_interface && - search_str_list(hd->drivers, "veth") - ) { - hd_card = add_hd_entry(hd_data, __LINE__, 0); - hd_card->base_class.id = bc_network; - hd_card->sub_class.id = 0x00; - hd_card->vendor.id = MAKE_ID(TAG_SPECIAL, 0x6001); // IBM - hd_card->device.id = MAKE_ID(TAG_SPECIAL, 0x1000); - add_str_list(&hd_card->drivers, "iseries_veth"); - hd_card->slot = card_cnt++; - str_printf(&hd_card->device.name, 0, "Virtual Ethernet card"); - hd->attached_to = hd_card->idx; - - for(res = hd->res; res; res = res->next) { - if(res->any.type == res_hwaddr) break; - } - - if(res) { - unsigned int slotno; - - res2 = new_mem(sizeof *res2); - res2->hwaddr.type = res_hwaddr; - res2->hwaddr.addr = new_str(res->hwaddr.addr); - add_res_entry(&hd_card->res, res2); - if (sscanf(res->hwaddr.addr, "02:01:ff:%x:ff:", &slotno)) { - hd_card->slot = slotno; - str_printf(&hd_card->device.name, 0, "Virtual Ethernet card %d", hd_card->slot); - } - } - } - } - - if(!card_cnt) { - sl0 = read_file("/proc/iSeries/config", 0, 0); - for(sl = sl0; sl; sl = sl->next) { - if(sscanf(sl->str, "AVAILABLE_VETH=%x", &cardmask) == 1) - break; - } - free_str_list(sl0); - - for (i = 0; i < 16; i++) { - if ((0x8000 >> i) & cardmask) { - hd_card = add_hd_entry(hd_data, __LINE__, 0); - hd_card->base_class.id = bc_network; - hd_card->sub_class.id = 0x00; - hd_card->vendor.id = MAKE_ID(TAG_SPECIAL, 0x6001); // IBM - hd_card->device.id = MAKE_ID(TAG_SPECIAL, 0x1000); - hd_card->slot = i; - str_printf(&hd_card->device.name, 0, "Virtual Ethernet card %d", i); - } - } - } -} - - -/* - * UML veth devices. - */ -void add_uml(hd_data_t *hd_data) -{ - hd_t *hd, *hd_card; - hd_res_t *res, *res2; - unsigned card_cnt = 0; - - for(hd = hd_data->hd ; hd; hd = hd->next) { - if( - hd->module == hd_data->module && - hd->base_class.id == bc_network_interface && - search_str_list(hd->drivers, "uml virtual ethernet") - ) { - hd_card = add_hd_entry(hd_data, __LINE__, 0); - hd_card->base_class.id = bc_network; - hd_card->sub_class.id = 0x00; - hd_card->vendor.id = MAKE_ID(TAG_SPECIAL, 0x6010); // UML - hd_card->device.id = MAKE_ID(TAG_SPECIAL, 0x0001); - hd_card->slot = card_cnt++; - str_printf(&hd_card->device.name, 0, "Virtual Ethernet card %d", hd_card->slot); -// add_str_list(&hd_card->drivers, "veth"); - - hd->attached_to = hd_card->idx; - - for(res = hd->res; res; res = res->next) { - if(res->any.type == res_hwaddr) break; - } - - if(res) { - res2 = new_mem(sizeof *res2); - res2->hwaddr.type = res_hwaddr; - res2->hwaddr.addr = new_str(res->hwaddr.addr); - add_res_entry(&hd_card->res, res2); - } - } - } -} - - diff --git a/src/hwinfo/src/hd/net.h b/src/hwinfo/src/hd/net.h deleted file mode 100644 index 3e49379fe7..0000000000 --- a/src/hwinfo/src/hd/net.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_net(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/parallel.c b/src/hwinfo/src/hd/parallel.c deleted file mode 100644 index d9b5b32a20..0000000000 --- a/src/hwinfo/src/hd/parallel.c +++ /dev/null @@ -1,295 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "parallel.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * parallel port device info - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#ifndef LIBHD_TINY - -static void do_lp(hd_data_t *hd_data); -static void do_zip(hd_data_t *hd_data); -static void dump_parallel_data(hd_data_t *hd_data, str_list_t *sl); - -void hd_scan_parallel(hd_data_t *hd_data) -{ - if(!hd_probe_feature(hd_data, pr_parallel)) return; - - hd_data->module = mod_parallel; - - /* some clean-up */ - remove_hd_entries(hd_data); - - if(hd_probe_feature(hd_data, pr_parallel_lp)) do_lp(hd_data); - - if(hd_probe_feature(hd_data, pr_parallel_zip)) do_zip(hd_data); -} - -void do_lp(hd_data_t *hd_data) -{ - hd_t *hd, *hd_i; - str_list_t *sl, *sl0; - hd_res_t *res; - char *pp = NULL, buf[256], unix_dev[] = "/dev/lp0", *s = NULL; - char *base_class, *device, *vendor, *cmd_set; - int i, j, port; - str_list_t *log = NULL; - - PROGRESS(1, 0, "pp mod"); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == bc_comm && hd->sub_class.id == sc_com_par) break; - } - - /* ... if there seems to be a parallel interface, try to load it */ - if(hd || 1) { /* always load it */ - if(hd_data->kernel_version == KERNEL_22) { - unload_module(hd_data, "parport_probe"); - probe_module(hd_data, "parport_probe"); - } else { - unload_module(hd_data, "lp"); - unload_module(hd_data, "parport_pc"); - probe_module(hd_data, "parport_pc"); - } - } - - for(i = 0; i < 3; i++, unix_dev[sizeof unix_dev - 2]++) { - PROGRESS(2, 1 + i, "lp read info"); - - port = 0; - // ##### read modes as well? (e.g: SPP,ECP,ECPEPP,ECPPS2) - if(hd_data->kernel_version == KERNEL_22) - str_printf(&pp, 0, PROC_PARPORT_22 "%d/hardware", i); - else - str_printf(&pp, 0, PROC_PARPORT_24 "%d/base-addr", i); - sl0 = read_file(pp, 0, 0); - if(!sl0) continue; /* file doesn't exist -> no parport entry */ - str_printf(&s, 0, "%s\n", pp); - add_str_list(&log, s); - for(sl = sl0; sl; sl = sl->next) { - str_printf(&s, 0, " %s", sl->str); - add_str_list(&log, s); - if(hd_data->kernel_version == KERNEL_22) { - if(sscanf(sl->str, "base: %i", &j) == 1) port = j; - } else { - if(sscanf(sl->str, "%i", &j) == 1) port = j; - } - } - free_str_list(sl0); - - if(hd_data->kernel_version == KERNEL_22) - str_printf(&pp, 0, PROC_PARPORT_22 "%d/autoprobe", i); - else - str_printf(&pp, 0, PROC_PARPORT_24 "%d/autoprobe", i); - sl0 = read_file(pp, 0, 0); - str_printf(&s, 0, "%s\n", pp); - add_str_list(&log, s); - base_class = device = vendor = cmd_set = NULL; - for(sl = sl0; sl; sl = sl->next) { - str_printf(&s, 0, " %s", sl->str); - add_str_list(&log, s); -// fprintf(stderr, "str = \"%s\"\n", sl->str); - if(sscanf(sl->str, "CLASS: %255[^\n;]", buf) == 1) base_class = new_str(buf); - if(sscanf(sl->str, "MODEL: %255[^\n;]", buf) == 1) device = new_str(buf); - if(sscanf(sl->str, "MANUFACTURER: %255[^\n;]", buf) == 1) vendor = new_str(buf); - if(sscanf(sl->str, "COMMAND SET: %255[^\n;]", buf) == 1) cmd_set = new_str(buf); - } - free_str_list(sl0); - - /* default to printer */ - if(!base_class && vendor && device) base_class = new_str("printer"); - - s = free_mem(s); - -// fprintf(stderr, "port <0x%x\n", port); -// fprintf(stderr, "class <%s>\n", base_class); -// fprintf(stderr, "device <%s>\n", device); -// fprintf(stderr, "vendor <%s>\n", vendor); -// fprintf(stderr, "cmds <%s>\n", cmd_set); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_comm && - hd->sub_class.id == sc_com_par && - hd->unix_dev_name && - !strcmp(hd->unix_dev_name, unix_dev) - ) break; - } - - if(!hd) { - /* no entry ??? */ - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_comm; - hd->sub_class.id = sc_com_par; - hd->unix_dev_name = new_str(unix_dev); - if(port) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = port; - res->io.access = acc_rw; - } - } - - // ##### check if ports match? - - if( - base_class || - (device && strcmp(device, "Unknown device")) || - (vendor && strcmp(vendor, "Unknown vendor")) - ) { - hd_i = hd; - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->attached_to = hd_i->idx; - hd->unix_dev_name = new_str(hd_i->unix_dev_name); - hd->base_class.id = bc_none; - if(base_class && !strcasecmp(base_class, "printer")) hd->base_class.id = bc_printer; - hd->bus.id = bus_parallel; - - hd->vendor.name = new_str(vendor); - hd->device.name = new_str(device); - } - - free_mem(base_class); - free_mem(device); - free_mem(vendor); - free_mem(cmd_set); - } - - pp = free_mem(pp); - - if((hd_data->debug & HD_DEB_PARALLEL)) dump_parallel_data(hd_data, log); - - free_str_list(log); - -} - -void do_zip(hd_data_t *hd_data) -{ - hd_t *hd, *hd_i; - int i, j, port, is_imm, is_ppa, is_imm0, is_ppa0; - char *pp = NULL, *s = NULL, *unix_dev = NULL; - str_list_t *log = NULL, *sl, *sl0; - int do_imm = hd_probe_feature(hd_data, pr_parallel_imm); - - is_imm = is_imm0 = hd_module_is_active(hd_data, "imm"); - is_ppa = is_ppa0 = hd_module_is_active(hd_data, "ppa"); - - if(!(is_imm || is_ppa)) { - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->base_class.id == bc_comm && hd->sub_class.id == sc_com_par) break; - } - /* ... if there seems to be a parallel interface, try to load it */ - if(hd) { - if(do_imm) { - PROGRESS(5, 0, "imm mod"); - load_module(hd_data, "imm"); - } - PROGRESS(5, 0, "ppa mod"); - load_module(hd_data, "ppa"); - is_imm = hd_module_is_active(hd_data, "imm"); - is_ppa = hd_module_is_active(hd_data, "ppa"); - if(do_imm && !is_imm) { - int fd; - char flush[2] = { 4, 12 }; - - fd = open("/dev/lp0", O_NONBLOCK | O_WRONLY); - if(fd != -1) { - write(fd, flush, sizeof flush); - close(fd); - } - } - } - } - - if(!(is_imm || is_ppa)) return; - - PROGRESS(6, 0, "zip read info"); - - for(i = 0; i < 16; i++) { - str_printf(&pp, 0, PROC_SCSI "/%s/%d", (i % 2) ? "ppa" : "imm", i / 2); - sl0 = read_file(pp, 0, 0); - if(!sl0) continue; - str_printf(&s, 0, "%s\n", pp); - add_str_list(&log, s); - port = -1; - for(sl = sl0; sl; sl = sl->next) { - str_printf(&s, 0, " %s", sl->str); - add_str_list(&log, s); - if(sscanf(sl->str, "Parport : parport%d", &j) == 1) port = j; - } - free_str_list(sl0); - pp = free_mem(pp); - s = free_mem(s); - - unix_dev = free_mem(unix_dev); - if(port >= 0) { - str_printf(&unix_dev, 0, "/dev/lp%d", port); - } - - hd = NULL; - if(unix_dev) { - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_comm && - hd->sub_class.id == sc_com_par && - hd->unix_dev_name && - !strcmp(hd->unix_dev_name, unix_dev) - ) break; - } - - if(!hd) { - /* no entry ??? */ - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_comm; - hd->sub_class.id = sc_com_par; - hd->unix_dev_name = new_str(unix_dev); - } - } - - hd_i = hd; - hd = add_hd_entry(hd_data, __LINE__, 0); - if(hd_i) { - hd->attached_to = hd_i->idx; - hd->unix_dev_name = new_str(hd_i->unix_dev_name); - } - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_scsi; - hd->bus.id = bus_parallel; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x1800); - hd->device.id = MAKE_ID(TAG_SPECIAL, (i % 2) ? 2 : 1); - } - - if(!is_imm0) unload_module(hd_data, "imm"); - if(!is_ppa0) unload_module(hd_data, "ppa"); - - if((hd_data->debug & HD_DEB_PARALLEL)) dump_parallel_data(hd_data, log); - - free_mem(unix_dev); - - free_str_list(log); - -} - -void dump_parallel_data(hd_data_t *hd_data, str_list_t *sl) -{ - ADD2LOG("----- parallel info -----\n"); - for(; sl; sl = sl->next) { - ADD2LOG("%s", sl->str); - } - ADD2LOG("----- parallel info end -----\n"); -} - -#endif /* ifndef LIBHD_TINY */ - diff --git a/src/hwinfo/src/hd/parallel.h b/src/hwinfo/src/hd/parallel.h deleted file mode 100644 index 7df1f51816..0000000000 --- a/src/hwinfo/src/hd/parallel.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_parallel(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/pci.c b/src/hwinfo/src/hd/pci.c deleted file mode 100644 index 0ee6a0b0b1..0000000000 --- a/src/hwinfo/src/hd/pci.c +++ /dev/null @@ -1,604 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -typedef unsigned long kernel_ulong_t; -#include -#ifdef __UCLIBC__ -#include -#else -#include -#endif - -#include "hd.h" -#include "hd_int.h" -#include "hddb.h" -#include "pci.h" - -/* - * linux/ioport.h - */ -#define IORESOURCE_BITS 0x000000ff -#define IORESOURCE_IO 0x00000100 -#define IORESOURCE_MEM 0x00000200 -#define IORESOURCE_IRQ 0x00000400 -#define IORESOURCE_DMA 0x00000800 -#define IORESOURCE_PREFETCH 0x00001000 -#define IORESOURCE_READONLY 0x00002000 -#define IORESOURCE_CACHEABLE 0x00004000 -#define IORESOURCE_DISABLED 0x10000000 - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * pci stuff - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -static struct sysfs_attribute *hd_read_single_sysfs_attribute(char *path, char *name); -static void get_pci_data(hd_data_t *hd_data); -static void add_pci_data(hd_data_t *hd_data); -static void add_driver_info(hd_data_t *hd_data); -static pci_t *add_pci_entry(hd_data_t *hd_data, pci_t *new_pci); -static unsigned char pci_cfg_byte(pci_t *pci, int fd, unsigned idx); -static void dump_pci_data(hd_data_t *hd_data); - -void hd_scan_sysfs_pci(hd_data_t *hd_data) -{ - if(!hd_probe_feature(hd_data, pr_pci)) return; - - hd_data->module = mod_pci; - - /* some clean-up */ - remove_hd_entries(hd_data); - hd_data->pci = NULL; - - PROGRESS(1, 0, "sysfs drivers"); - - hd_sysfs_driver_list(hd_data); - - PROGRESS(2, 0, "get sysfs pci data"); - - get_pci_data(hd_data); - if(hd_data->debug) dump_pci_data(hd_data); - - add_pci_data(hd_data); -} - - -/* - * sysfs_get_device_attr() reads *all* device attributes, then returns the - * requested one. - * - * This leads to problems where some attribute *must not* be read. - */ -struct sysfs_attribute *hd_read_single_sysfs_attribute(char *path, char *name) -{ - char *attr_path = NULL; - struct sysfs_attribute *attr; - - str_printf(&attr_path, 0, "%s/%s", path, name); - attr = sysfs_open_attribute(attr_path); - free_mem(attr_path); - - sysfs_read_attribute(attr); - - return attr; -} - - -/* - * Get the (raw) PCI data, taken from /sys/bus/pci/. - * - * Note: non-root users can only read the first 64 bytes (of 256) - * of the device headers. - */ -void get_pci_data(hd_data_t *hd_data) -{ - uint64_t ul0, ul1, ul2; - unsigned u, u0, u1, u2, u3; - unsigned char nxt; - str_list_t *sl; - char *s; - pci_t *pci; - int fd; - - struct sysfs_bus *sf_bus; - struct dlist *sf_dev_list; - struct sysfs_device *sf_dev; - struct sysfs_attribute *attr; - - sf_bus = sysfs_open_bus("pci"); - - if(!sf_bus) { - ADD2LOG("sysfs: no such bus: pci\n"); - return; - } - - sf_dev_list = sysfs_get_bus_devices(sf_bus); - if(sf_dev_list) dlist_for_each_data(sf_dev_list, sf_dev, struct sysfs_device) { - ADD2LOG( - " pci device: name = %s, bus_id = %s, bus = %s\n path = %s\n", - sf_dev->name, - sf_dev->bus_id, - sf_dev->bus, - hd_sysfs_id(sf_dev->path) - ); - - if(sscanf(sf_dev->bus_id, "%x:%x:%x.%x", &u0, &u1, &u2, &u3) != 4) continue; - - pci = add_pci_entry(hd_data, new_mem(sizeof *pci)); - - pci->sysfs_id = new_str(sf_dev->path); - pci->sysfs_bus_id = new_str(sf_dev->bus_id); - - pci->bus = (u0 << 8) + u1; - pci->slot = u2; - pci->func = u3; - - if(hd_attr_uint(attr = hd_read_single_sysfs_attribute(sf_dev->path, "class"), &ul0, 0)) { - ADD2LOG(" class = 0x%x\n", (unsigned) ul0); - pci->prog_if = ul0 & 0xff; - pci->sub_class = (ul0 >> 8) & 0xff; - pci->base_class = (ul0 >> 16) & 0xff; - } - sysfs_close_attribute(attr); - - if(hd_attr_uint(attr = hd_read_single_sysfs_attribute(sf_dev->path, "vendor"), &ul0, 0)) { - ADD2LOG(" vendor = 0x%x\n", (unsigned) ul0); - pci->vend = ul0 & 0xffff; - } - sysfs_close_attribute(attr); - - if(hd_attr_uint(attr = hd_read_single_sysfs_attribute(sf_dev->path, "device"), &ul0, 0)) { - ADD2LOG(" device = 0x%x\n", (unsigned) ul0); - pci->dev = ul0 & 0xffff; - } - sysfs_close_attribute(attr); - - if(hd_attr_uint(attr = hd_read_single_sysfs_attribute(sf_dev->path, "subsystem_vendor"), &ul0, 0)) { - ADD2LOG(" subvendor = 0x%x\n", (unsigned) ul0); - pci->sub_vend = ul0 & 0xffff; - } - sysfs_close_attribute(attr); - - if(hd_attr_uint(attr = hd_read_single_sysfs_attribute(sf_dev->path, "subsystem_device"), &ul0, 0)) { - ADD2LOG(" subdevice = 0x%x\n", (unsigned) ul0); - pci->sub_dev = ul0 & 0xffff; - } - sysfs_close_attribute(attr); - - if(hd_attr_uint(attr = hd_read_single_sysfs_attribute(sf_dev->path, "irq"), &ul0, 0)) { - ADD2LOG(" irq = %d\n", (unsigned) ul0); - pci->irq = ul0; - } - sysfs_close_attribute(attr); - - sl = hd_attr_list(attr = hd_read_single_sysfs_attribute(sf_dev->path, "resource")); - for(u = 0; sl; sl = sl->next, u++) { - if( - sscanf(sl->str, "0x%"SCNx64" 0x%"SCNx64" 0x%"SCNx64, &ul0, &ul1, &ul2) == 3 && - ul1 && - u < sizeof pci->base_addr / sizeof *pci->base_addr - ) { - ADD2LOG(" res[%u] = 0x%"PRIx64" 0x%"PRIx64" 0x%"PRIx64"\n", u, ul0, ul1, ul2); - pci->base_addr[u] = ul0; - pci->base_len[u] = ul1 + 1 - ul0; - pci->addr_flags[u] = ul2; - } - } - sysfs_close_attribute(attr); - - s = NULL; - str_printf(&s, 0, "%s/config", sf_dev->path); - if((fd = open(s, O_RDONLY)) != -1) { - pci->data_len = pci->data_ext_len = read(fd, pci->data, 0x40); - ADD2LOG(" config[%u]\n", pci->data_len); - - if(pci->data_len >= 0x40) { - pci->hdr_type = pci->data[PCI_HEADER_TYPE] & 0x7f; - pci->cmd = pci->data[PCI_COMMAND] + (pci->data[PCI_COMMAND + 1] << 8); - - if(pci->hdr_type == 1 || pci->hdr_type == 2) { /* PCI or CB bridge */ - pci->secondary_bus = pci->data[PCI_SECONDARY_BUS]; - /* PCI_SECONDARY_BUS == PCI_CB_CARD_BUS */ - } - - for(u = 0; u < sizeof pci->base_addr / sizeof *pci->base_addr; u++) { - if((pci->addr_flags[u] & IORESOURCE_IO)) { - if(!(pci->cmd & PCI_COMMAND_IO)) pci->addr_flags[u] |= IORESOURCE_DISABLED; - } - - if((pci->addr_flags[u] & IORESOURCE_MEM)) { - if(!(pci->cmd & PCI_COMMAND_MEMORY)) pci->addr_flags[u] |= IORESOURCE_DISABLED; - } - } - - /* let's get through the capability list */ - if( - pci->hdr_type == PCI_HEADER_TYPE_NORMAL && - (nxt = pci->data[PCI_CAPABILITY_LIST]) - ) { - /* - * Cut out after 16 capabilities to avoid infinite recursion due - * to (potentially) malformed data. 16 is more or less - * arbitrary, though (the capabilities are bits in a byte, so 8 entries - * should suffice). - */ - for(u = 0; u < 16 && nxt && nxt <= 0xfe; u++) { - switch(pci_cfg_byte(pci, fd, nxt)) { - case PCI_CAP_ID_PM: - pci->flags |= (1 << pci_flag_pm); - break; - - case PCI_CAP_ID_AGP: - pci->flags |= (1 << pci_flag_agp); - break; - } - nxt = pci_cfg_byte(pci, fd, nxt + 1); - } - } - } - - close(fd); - } - s = free_mem(s); - - pci->rev = pci->data[PCI_REVISION_ID]; - - if((pci->addr_flags[6] & IORESOURCE_MEM)) { - if(!(pci->data[PCI_ROM_ADDRESS] & PCI_ROM_ADDRESS_ENABLE)) { - pci->addr_flags[6] |= IORESOURCE_DISABLED; - } - } - - pci->flags |= (1 << pci_flag_ok); - } - - sysfs_close_bus(sf_bus); -} - - -void add_pci_data(hd_data_t *hd_data) -{ - hd_t *hd, *hd2; - pci_t *pci, *pnext; - hd_res_t *res; - unsigned u; - char *s, *t; - - PROGRESS(4, 0, "build list"); - - for(pci = hd_data->pci; pci; pci = pnext) { - pnext = pci->next; - hd = add_hd_entry(hd_data, __LINE__, 0); - - hd->sysfs_id = new_str(hd_sysfs_id(pci->sysfs_id)); - s = hd_sysfs_find_driver(hd_data, hd->sysfs_id, 1); - if(s) add_str_list(&hd->drivers, s); - - if(pci->sysfs_bus_id && *pci->sysfs_bus_id) { - hd->sysfs_bus_id = new_str(pci->sysfs_bus_id); - } - - hd->bus.id = bus_pci; - hd->slot = pci->slot + (pci->bus << 8); - hd->func = pci->func; - hd->base_class.id = pci->base_class; - hd->sub_class.id = pci->sub_class; - hd->prog_if.id = pci->prog_if; - - /* fix up old VGA's entries */ - if(hd->base_class.id == bc_none && hd->sub_class.id == 0x01) { - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - } - - if(pci->dev || pci->vend) { - hd->device.id = MAKE_ID(TAG_PCI, pci->dev); - hd->vendor.id = MAKE_ID(TAG_PCI, pci->vend); - } - if(pci->sub_dev || pci->sub_vend) { - hd->sub_device.id = MAKE_ID(TAG_PCI, pci->sub_dev); - hd->sub_vendor.id = MAKE_ID(TAG_PCI, pci->sub_vend); - } - hd->revision.id = pci->rev; - - if((u = device_class(hd_data, hd->vendor.id, hd->device.id))) { - hd->base_class.id = u >> 8; - hd->sub_class.id = u & 0xff; - } - - for(u = 0; u < sizeof pci->base_addr / sizeof *pci->base_addr; u++) { - if((pci->addr_flags[u] & IORESOURCE_IO)) { - res = new_mem(sizeof *res); - res->io.type = res_io; - res->io.enabled = pci->addr_flags[u] & IORESOURCE_DISABLED ? 0 : 1; - res->io.base = pci->base_addr[u]; - res->io.range = pci->base_len[u]; - res->io.access = pci->addr_flags[u] & IORESOURCE_READONLY ? acc_ro : acc_rw; - add_res_entry(&hd->res, res); - } - - if((pci->addr_flags[u] & IORESOURCE_MEM)) { - res = new_mem(sizeof *res); - res->mem.type = res_mem; - res->mem.enabled = pci->addr_flags[u] & IORESOURCE_DISABLED ? 0 : 1; - res->mem.base = pci->base_addr[u]; - res->mem.range = pci->base_len[u]; - res->mem.access = pci->addr_flags[u] & IORESOURCE_READONLY ? acc_ro : acc_rw; - res->mem.prefetch = pci->addr_flags[u] & IORESOURCE_PREFETCH ? flag_yes : flag_no; - add_res_entry(&hd->res, res); - } - } - - if(pci->irq) { - res = new_mem(sizeof *res); - res->irq.type = res_irq; - res->irq.enabled = 1; - res->irq.base = pci->irq; - add_res_entry(&hd->res, res); - } - - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_pci; - hd->detail->pci.data = pci; - if(pci->flags & (1 << pci_flag_agp)) hd->is.agp = 1; - pci->next = NULL; - } - hd_data->pci = NULL; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->bus.id == bus_pci && hd->sysfs_id) { - s = new_str(hd->sysfs_id); - - if((t = strrchr(s, '/'))) { - *t = 0; - if((hd2 = hd_find_sysfs_id(hd_data, s))) { - hd->attached_to = hd2->idx; - } - } - free_mem(s); - } - } - - add_driver_info(hd_data); -} - - -/* - * Add driver info in some special cases. - */ -void add_driver_info(hd_data_t *hd_data) -{ - hd_t *hd; - hd_res_t *res; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->bus.id != bus_pci) continue; - - if( - ( - hd->base_class.id == bc_serial && - hd->sub_class.id == sc_ser_fire - ) || - ( - hd->base_class.id == bc_serial && - hd->sub_class.id == sc_ser_usb - ) - ) { - for(res = hd->res; res; res = res->next) { - if(res->any.type == res_irq) break; - } - if(!res) hd->is.notready = 1; - continue; - } - } -} - - -#if 1 -/* - * Store a raw PCI entry; just for convenience. - */ -pci_t *add_pci_entry(hd_data_t *hd_data, pci_t *new_pci) -{ - pci_t **pci = &hd_data->pci; - - while(*pci) pci = &(*pci)->next; - - return *pci = new_pci; -} - -#else - -/* - * Store a raw PCI entry; just for convenience. - * - * Reverse order. - */ -pci_t *add_pci_entry(hd_data_t *hd_data, pci_t *new_pci) -{ - new_pci->next = hd_data->pci; - - return hd_data->pci = new_pci; -} -#endif - - -/* - * get a byte from pci config space - */ -unsigned char pci_cfg_byte(pci_t *pci, int fd, unsigned idx) -{ - unsigned char uc; - - if(idx >= sizeof pci->data) return 0; - if(idx < pci->data_len) return pci->data[idx]; - if(idx < pci->data_ext_len && pci->data[idx]) return pci->data[idx]; - if(lseek(fd, idx, SEEK_SET) != (off_t) idx) return 0; - if(read(fd, &uc, 1) != 1) return 0; - pci->data[idx] = uc; - - if(idx >= pci->data_ext_len) pci->data_ext_len = idx + 1; - - return uc; -} -/* - * Add a dump of all raw PCI data to the global log. - */ -void dump_pci_data(hd_data_t *hd_data) -{ - pci_t *pci; - char *s = NULL; - char buf[32]; - int i, j; - - ADD2LOG("---------- PCI raw data ----------\n"); - - for(pci = hd_data->pci; pci; pci = pci->next) { - - if(!(pci->flags & (1 << pci_flag_ok))) str_printf(&s, -1, "oops"); - if(pci->flags & (1 << pci_flag_pm)) str_printf(&s, -1, ",pm"); - if(pci->flags & (1 << pci_flag_agp)) str_printf(&s, -1, ",agp"); - if(!s) str_printf(&s, 0, "%s", ""); - - *buf = 0; - if(pci->secondary_bus) { - sprintf(buf, "->%02x", pci->secondary_bus); - } - - ADD2LOG( - "bus %02x%s, slot %02x, func %x, vend:dev:s_vend:s_dev:rev %04x:%04x:%04x:%04x:%02x\n", - pci->bus, buf, pci->slot, pci->func, pci->vend, pci->dev, pci->sub_vend, pci->sub_dev, pci->rev - ); - ADD2LOG( - "class %02x, sub_class %02x prog_if %02x, hdr %x, flags <%s>, irq %u\n", - pci->base_class, pci->sub_class, pci->prog_if, pci->hdr_type, *s == ',' ? s + 1 : s, pci->irq - ); - - s = free_mem(s); - - for(i = 0; i < 6; i++) { - if(pci->base_addr[i] || pci->base_len[i]) - ADD2LOG(" addr%d %08"PRIx64", size %08"PRIx64"\n", i, pci->base_addr[i], pci->base_len[i]); - } - if(pci->rom_base_addr) - ADD2LOG(" rom %08"PRIx64"\n", pci->rom_base_addr); - - if(pci->log) ADD2LOG("%s", pci->log); - - for(i = 0; (unsigned) i < pci->data_ext_len; i += 0x10) { - ADD2LOG(" %02x: ", i); - j = pci->data_ext_len - i; - hexdump(&hd_data->log, 1, j > 0x10 ? 0x10 : j, pci->data + i); - ADD2LOG("\n"); - } - - if(pci->next) ADD2LOG("\n"); - } - - ADD2LOG("---------- PCI raw data end ----------\n"); -} - - -/* - * Parse attribute and return integer value. - */ -int hd_attr_uint(struct sysfs_attribute *attr, uint64_t *u, int base) -{ - char *s; - uint64_t u2; - int ok; - - if(!(s = hd_attr_str(attr))) return 0; - - u2 = strtoull(s, &s, base); - ok = !*s || isspace(*s) ? 1 : 0; - - if(ok && u) *u = u2; - - return ok; -} - - -/* - * Return attribute as string list. - */ -str_list_t *hd_attr_list(struct sysfs_attribute *attr) -{ - static str_list_t *sl = NULL; - - free_str_list(sl); - - return sl = hd_split('\n', hd_attr_str(attr)); -} - - -/* - * Return attribute as string. - */ -char *hd_attr_str(struct sysfs_attribute *attr) -{ - return attr ? attr->value : NULL; -} - - -/* - * Remove leading "/sys" from path. - */ -char *hd_sysfs_id(char *path) -{ - if(!path || !*path) return NULL; - - return strchr(path + 1, '/'); -} - - -/* - * Convert '!' to '/'. - */ -char *hd_sysfs_name2_dev(char *str) -{ - static char *s = NULL; - - if(!str) return NULL; - - free_mem(s); - s = str = new_str(str); - - while(*str) { - if(*str == '!') *str = '/'; - str++; - } - - return s; -} - - -/* - * Convert '/' to '!'. - */ -char *hd_sysfs_dev2_name(char *str) -{ - static char *s = NULL; - - if(!str) return NULL; - - free_mem(s); - s = str = new_str(str); - - while(*str) { - if(*str == '/') *str = '!'; - str++; - } - - return s; -} - - diff --git a/src/hwinfo/src/hd/pci.h b/src/hwinfo/src/hd/pci.h deleted file mode 100644 index d1e475be0d..0000000000 --- a/src/hwinfo/src/hd/pci.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_sysfs_pci(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/pcmcia.c b/src/hwinfo/src/hd/pcmcia.c deleted file mode 100644 index 1bda468b58..0000000000 --- a/src/hwinfo/src/hd/pcmcia.c +++ /dev/null @@ -1,272 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "pcmcia.h" - -static void read_cardinfo(hd_data_t *hd_data); -static void assign_bridges(hd_data_t *hd_data); -static void add_sysfs_stuff(hd_data_t *hd_data, hd_t *hd); - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * PCMCIA info via cardctl - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - - -void hd_scan_pcmcia(hd_data_t *hd_data) -{ - if(!hd_probe_feature(hd_data, pr_pcmcia)) return; - - hd_data->module = mod_pcmcia; - - /* some clean-up */ - remove_hd_entries(hd_data); - - read_cardinfo(hd_data); - - assign_bridges(hd_data); - -} - - -void read_cardinfo(hd_data_t *hd_data) -{ - str_list_t *sl, *sl0, *sl1; - int i0, i1, pcmcia_sock, manf_id0, manf_id1, func, prod_info; - char buf0[256], buf1[256], buf2[256], buf3[256]; - hd_t *hd; - unsigned cardbus = 0; /* bitmask: cardbus vs. pc-card */ - - sl0 = read_file("| /sbin/cardctl status 2>/dev/null", 0, 0); - - ADD2LOG("----- cardctl status -----\n"); - for(sl = sl0; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- cardctl status end -----\n"); - - for(pcmcia_sock = -1, sl = sl0; sl; sl = sl->next) { - if(sscanf(sl->str, " Socket %d:", &i0) == 1) { - pcmcia_sock = i0; - continue; - } - - if(strstr(sl->str, " CardBus card")) { - if(pcmcia_sock >= 0 && pcmcia_sock < 8 * (int) sizeof cardbus) { - cardbus |= 1 << pcmcia_sock; - } - pcmcia_sock = -1; - continue; - } - } - - free_str_list(sl0); - - sl0 = read_file("| /sbin/cardctl ident 2>/dev/null", 0, 0); - - ADD2LOG("----- cardctl ident -----\n"); - for(sl = sl0; sl; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- cardctl ident end -----\n"); - - for( - pcmcia_sock = manf_id0 = manf_id1 = func = prod_info = -1, sl = sl0; - sl; - sl = sl->next - ) { - if(sscanf(sl->str, " manfid: %i, %i", &i0, &i1) == 2) { - manf_id0 = i0; - manf_id1 = i1; - } - - if(sscanf(sl->str, " function: %d", &i0) == 1) { - /* - * "multifunction", "memory", "serial", "parallel", - * "fixed disk", "video", "network", "AIMS", - * "SCSI" - */ - func = i0; - } - - if( - (i0 = sscanf( - sl->str, - " product info: \"%255[^\"]\", \"%255[^\"]\", \"%255[^\"]\", \"%255[^\"]\"", - buf0, buf1, buf2, buf3 - )) >= 1 - ) { - prod_info = i0; - } - - if(sscanf(sl->str, " Socket %d:", &i0) == 1) { - i1 = 1; - } - else { - i1 = 0; - } - - if(i1 || !sl->next) { - if(pcmcia_sock >= 0 && (prod_info >= 1 || manf_id0 != -1)) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_pcmcia; - hd->slot = pcmcia_sock; - hd->hotplug_slot = pcmcia_sock + 1; - if(manf_id0 != -1 && manf_id1 != -1) { - hd->vendor.id = MAKE_ID(TAG_PCMCIA, manf_id0); - hd->device.id = MAKE_ID(TAG_PCMCIA, manf_id1); - } - if(pcmcia_sock < 8 * (int) sizeof cardbus && (cardbus & (1 << pcmcia_sock))) { - hd->hotplug = hp_cardbus; - } - else { - hd->hotplug = hp_pcmcia; - } - - if(func == 6) { - hd->base_class.id = bc_network; - hd->sub_class.id = 0x80; /* other */ - } - if(prod_info >= 1) add_str_list(&hd->extra_info, buf0); - if(prod_info >= 2) add_str_list(&hd->extra_info, buf1); - if(prod_info >= 3) add_str_list(&hd->extra_info, buf2); - if(prod_info >= 4) add_str_list(&hd->extra_info, buf3); - if(prod_info >= 2) { - hd->vendor.name = new_str(buf0); - hd->device.name = new_str(buf1); - } - for(sl1 = hd->extra_info; sl1 ; sl1 = sl1->next) { - if(strstr(sl1->str, "Ethernet")) hd->sub_class.id = 0; /* ethernet */ - if( - !hd->revision.name && - !sl1->next && - ( - !strncasecmp(sl1->str, "rev.", sizeof "rev." - 1) || - ( - (sl1->str[0] == 'V' || sl1->str[0] == 'v') && - (sl1->str[1] >= '0' && sl1->str[1] <= '9') - ) - ) - ) { - hd->revision.name = new_str(sl1->str); - } - } - } - - manf_id0 = manf_id1 = func = prod_info = -1; - } - - if(i1) pcmcia_sock = i0; - - } - - free_str_list(sl0); -} - - -/* - * Identify hotpluggable devices. - */ -void assign_bridges(hd_data_t *hd_data) -{ - hd_t *hd, *hd1, *bridge_hd; - unsigned p_sock[8], p_socks, u = 0; - - for(hd = hd_data->hd; hd; hd = hd->next) { - if((bridge_hd = hd_get_device_by_idx(hd_data, hd->attached_to))) { - if( - bridge_hd->base_class.id == bc_bridge && - bridge_hd->sub_class.id == sc_bridge_cardbus - ) { - hd->hotplug = hp_cardbus; - } - else if( - bridge_hd->base_class.id == bc_bridge && - bridge_hd->sub_class.id == sc_bridge_pcmcia - ) { - hd->hotplug = hp_pcmcia; - } - } - } - - for(p_socks = 0, hd = hd_data->hd; hd; hd = hd->next) { - if( - u < sizeof p_sock / sizeof *p_sock && - is_pcmcia_ctrl(hd_data, hd) - ) { - p_sock[p_socks++] = hd->idx; - } - } - - if(p_socks) { - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - !hd->tag.remove && - hd->bus.id == bus_pcmcia && - hd->slot < p_socks && - p_sock[hd->slot] - ) { - for(u = p_sock[hd->slot], hd1 = hd_data->hd; hd1; hd1 = hd1->next) { - if(hd1->tag.remove) continue; - if(hd1->status.available == status_no) continue; - if(hd1->attached_to == u) break; - } - if(hd1) { - hd1->hotplug = hd->hotplug; - hd1->hotplug_slot = hd->hotplug_slot; - if(!hd1->extra_info) { - hd1->extra_info = hd->extra_info; - hd->extra_info = NULL; - } - hd->tag.remove = 1; - } - else { - hd->attached_to = p_sock[hd->slot]; - add_sysfs_stuff(hd_data, hd); - } - p_sock[hd->slot] = 0; - } - } - - remove_tagged_hd_entries(hd_data); - } -} - - -void add_sysfs_stuff(hd_data_t *hd_data, hd_t *hd) -{ - hd_t *hd_par; - char *s = NULL, *s1; - struct sysfs_device *sf_dev; - - hd_par = hd_get_device_by_idx(hd_data, hd->attached_to); - - if(!hd_par || !hd_par->sysfs_id || hd->sysfs_id) return; - - str_printf(&s, 0, "/sys%s/%d.0", hd_par->sysfs_id, hd->slot); - - sf_dev = sysfs_open_device_path(s); - - if(sf_dev) { - hd->sysfs_id = new_str(hd_sysfs_id(s)); - s1 = hd_sysfs_find_driver(hd_data, hd->sysfs_id, 1); - if(s1) add_str_list(&hd->drivers, s1); - } - - sysfs_close_device(sf_dev); - - s = free_mem(s); -} - diff --git a/src/hwinfo/src/hd/pcmcia.h b/src/hwinfo/src/hd/pcmcia.h deleted file mode 100644 index ddf7b57958..0000000000 --- a/src/hwinfo/src/hd/pcmcia.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_pcmcia(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/pppoe.c b/src/hwinfo/src/hd/pppoe.c deleted file mode 100644 index da1864c0d2..0000000000 --- a/src/hwinfo/src/hd/pppoe.c +++ /dev/null @@ -1,611 +0,0 @@ - -/* - * License: GPL - * - * Much inspired by rp-pppoe from Roaring Penguin Software Inc. - * which itself is inspired by earlier code from Luke Stras. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "pppoe.h" - -static hd_data_t *hd_data; - -/* Ethernet Frame Types */ -#define ETH_PPPOE_DISCOVERY 0x8863 -#define ETH_PPPOE_SESSION 0x8864 - -/* PPPoE Codes */ -#define CODE_PADI 0x09 -#define CODE_PADO 0x07 -#define CODE_PADR 0x19 -#define CODE_PADS 0x65 -#define CODE_PADT 0xA7 - -/* PPPoE Tags */ -#define TAG_END_OF_LIST 0x0000 -#define TAG_SERVICE_NAME 0x0101 -#define TAG_AC_NAME 0x0102 -#define TAG_HOST_UNIQ 0x0103 -#define TAG_AC_COOKIE 0x0104 -#define TAG_VENDOR_SPECIFIC 0x0105 -#define TAG_RELAY_SESSION_ID 0x0110 -#define TAG_SERVICE_NAME_ERROR 0x0201 -#define TAG_AC_SYSTEM_ERROR 0x0202 -#define TAG_GENERIC_ERROR 0x0203 - -/* Number of Attempts */ -#define MAX_ATTEMPTS 2 - -/* Timeout for PADO Packets */ -#define PADO_TIMEOUT 3 - -/* A PPPoE Packet, including Ethernet headers */ -typedef struct PPPoEPacketStruct { - struct ethhdr ethHdr; /* Ethernet header */ - unsigned int ver:4; /* PPPoE Version (must be 1) */ - unsigned int type:4; /* PPPoE Type (must be 1) */ - unsigned int code:8; /* PPPoE code */ - unsigned int session:16; /* PPPoE session */ - unsigned int length:16; /* Payload length */ - unsigned char payload[ETH_DATA_LEN]; /* A bit of room to spare */ -} PPPoEPacket; - -/* Header size of a PPPoE Packet */ -#define PPPOE_OVERHEAD 6 /* type, code, session, length */ -#define HDR_SIZE (sizeof (struct ethhdr) + PPPOE_OVERHEAD) -#define MAX_PPPOE_PAYLOAD (ETH_DATA_LEN - PPPOE_OVERHEAD) - -/* PPPoE Tag */ -typedef struct PPPoETagStruct { - unsigned int type:16; /* tag type */ - unsigned int length:16; /* Length of payload */ - unsigned char payload[ETH_DATA_LEN]; /* A LOT of room to spare */ -} PPPoETag; - -/* Header size of a PPPoE Tag */ -#define TAG_HDR_SIZE 4 - -/* Function passed to parse_packet */ -typedef void parse_func (uint16_t type, uint16_t len, - unsigned char* data, void* extra); - -/* Keep track of the state of a connection */ -typedef struct PPPoEConnectionStruct { - char* ifname; /* Interface name */ - int fd; /* Raw socket for discovery frames */ - int received_pado; /* Where we are in discovery */ - unsigned char my_mac[ETH_ALEN]; /* My MAC address */ - unsigned char peer_mac[ETH_ALEN]; /* Peer's MAC address */ - hd_t *hd; -} PPPoEConnection; - -/* Structure used to determine acceptable PADO packet */ -typedef struct PacketCriteriaStruct { - PPPoEConnection* conn; - int acname_ok; - int servicename_ok; - int error; -} PacketCriteria; - -/* True if Ethernet address is broadcast or multicast */ -#define NOT_UNICAST(e) ((e[0] & 0x01) != 0) - - -static int -check_room (PPPoEConnection* conn, unsigned char* cursor, unsigned char* start, - uint16_t len) -{ - if (cursor - start + len > MAX_PPPOE_PAYLOAD) { - ADD2LOG ("%s: Would create too-long packet\n", conn->ifname); - return 0; - } - return 1; -} - - -static int -parse_packet (PPPoEConnection* conn, PPPoEPacket* packet, parse_func* func, - void* extra) -{ - uint16_t len = ntohs (packet->length); - unsigned char* curTag; - uint16_t tagType, tagLen; - - if (packet->ver != 1) { - ADD2LOG ("%s: Invalid PPPoE version (%d)\n", conn->ifname, - (int) packet->ver); - return 0; - } - - if (packet->type != 1) { - ADD2LOG ("%s: Invalid PPPoE type (%d)\n", conn->ifname, - (int) packet->type); - return 0; - } - - /* Do some sanity checks on packet. */ - if (len > ETH_DATA_LEN - 6) { /* 6-byte overhead for PPPoE header */ - ADD2LOG ("%s: Invalid PPPoE packet length (%u)\n", conn->ifname, len); - return 0; - } - - /* Step through the tags. */ - curTag = packet->payload; - while (curTag - packet->payload < len) { - /* Alignment is not guaranteed, so do this by hand. */ - tagType = (((uint16_t) curTag[0]) << 8) + (uint16_t) curTag[1]; - tagLen = (((uint16_t) curTag[2]) << 8) + (uint16_t) curTag[3]; - if (tagType == TAG_END_OF_LIST) - break; - if ((curTag - packet->payload) + tagLen + TAG_HDR_SIZE > len) { - ADD2LOG ("%s: Invalid PPPoE tag length (%u)\n", conn->ifname, - tagLen); - return 0; - } - func (tagType, tagLen, curTag + TAG_HDR_SIZE, extra); - curTag = curTag + TAG_HDR_SIZE + tagLen; - } - - return 1; -} - - -static int -open_interfaces (int n, PPPoEConnection* conns) -{ - int ret = 0, i; - - for (i = 0; i < n; i++) - { - PPPoEConnection* conn = &conns[i]; - - conn->fd = socket (PF_PACKET, SOCK_RAW, htons (ETH_PPPOE_DISCOVERY)); - if (conn->fd < 0) { - ADD2LOG ("%s: socket failed: %m\n", conn->ifname); - continue; - } - - int one = 1; - if (setsockopt (conn->fd, SOL_SOCKET, SO_BROADCAST, &one, - sizeof (one)) < 0) { - ADD2LOG ("%s: setsockopt failed: %m\n", conn->ifname); - goto error; - } - - /* Fill in hardware address */ - struct ifreq ifr; - struct sockaddr_ll sa; - memset (&sa, 0, sizeof (sa)); - strncpy (ifr.ifr_name, conn->ifname, sizeof (ifr.ifr_name)); - if (ioctl (conn->fd, SIOCGIFHWADDR, &ifr) < 0) { - ADD2LOG ("%s: ioctl (SIOCGIFHWADDR) failed: %m\n", conn->ifname); - goto error; - } - - memcpy (conn->my_mac, ifr.ifr_hwaddr.sa_data, ETH_ALEN); - if (ifr.ifr_hwaddr.sa_family != ARPHRD_ETHER) { - ADD2LOG ("%s: Interface is not ethernet\n", conn->ifname); - goto error; - } - - if (NOT_UNICAST (conn->my_mac)) { - ADD2LOG ("%s: Interface has broadcast/multicast MAC address?\n", - conn->ifname); - goto error; - } - - /* Sanity check on MTU */ - strncpy (ifr.ifr_name, conn->ifname, sizeof (ifr.ifr_name)); - if (ioctl (conn->fd, SIOCGIFMTU, &ifr) < 0) { - ADD2LOG ("%s: ioctl (SIOCGIFMTU) failed: %m\n", conn->ifname); - goto error; - } - if (ifr.ifr_mtu < ETH_DATA_LEN) { - ADD2LOG ("%s: Interface has to low MTU\n", conn->ifname); - goto error; - } - - /* Get interface index */ - sa.sll_family = AF_PACKET; - sa.sll_protocol = htons (ETH_PPPOE_DISCOVERY); - strncpy (ifr.ifr_name, conn->ifname, sizeof (ifr.ifr_name)); - if (ioctl (conn->fd, SIOCGIFINDEX, &ifr) < 0) { - ADD2LOG ("%s: ioctl (SIOCFIGINDEX) failed: Could not get interface " - "index\n", conn->ifname); - goto error; - } - sa.sll_ifindex = ifr.ifr_ifindex; - - /* We're only interested in packets on specified interface */ - if (bind (conn->fd, (struct sockaddr*) &sa, sizeof (sa)) < 0) { - ADD2LOG ("%s: bind failed: %m\n", conn->ifname); - goto error; - } - - ret = 1; - continue; - -error: - - close (conn->fd); - conn->fd = -1; - - } - - return ret; -} - - -static void -close_intefaces (int n, PPPoEConnection* conns) -{ - int i; - - for (i = 0; i < n; i++) - { - PPPoEConnection* conn = &conns[i]; - - if (conn->fd != -1) { - close (conn->fd); - conn->fd = -1; - } - } -} - - -static int -send_packet (int fd, PPPoEPacket* pkt, size_t size) -{ - if (send (fd, pkt, size, 0) < 0) { - ADD2LOG ("send failed: %m\n"); - return 0; - } - - return 1; -} - - -static int -receive_packet (int fd, PPPoEPacket* pkt, size_t* size) -{ - int r = recv (fd, pkt, sizeof (PPPoEPacket), 0); - if (r < 0) { - ADD2LOG ("recv failed: %m\n"); - return 0; - } - - *size = r; - return 1; -} - - -static void -parse_hostuniq (uint16_t type, uint16_t len, unsigned char* data, void* extra) -{ - if (type == TAG_HOST_UNIQ && len == sizeof (pid_t)) { - pid_t tmp; - memcpy (&tmp, data, len); - if (tmp == getpid ()) { - int* val = (int*) extra; - *val = 1; - } - } -} - - -static int -packet_for_me (PPPoEConnection* conn, PPPoEPacket* packet) -{ - /* If packet is not directed to our MAC address, forget it. */ - if (memcmp (packet->ethHdr.h_dest, conn->my_mac, ETH_ALEN)) - return 0; - - /* Check for HostUniq tag. */ - int for_me = 0; - parse_packet (conn, packet, parse_hostuniq, &for_me); - return for_me; -} - - -static void -parse_pado_tags (uint16_t type, uint16_t len, unsigned char* data, void* extra) -{ - PacketCriteria* pc = (PacketCriteria*) extra; - PPPoEConnection *conn = pc->conn; - - switch (type) { - case TAG_AC_NAME: - pc->acname_ok = 1; - ADD2LOG ("%s: Service-Name is: %.*s\n", conn->ifname, (int) len, - data); - break; - case TAG_SERVICE_NAME: - pc->servicename_ok = len == 0; - break; - case TAG_SERVICE_NAME_ERROR: - ADD2LOG ("%s: Service-Name-Error: %.*s\n", conn->ifname, (int) len, - data); - pc->error = 1; - break; - case TAG_AC_SYSTEM_ERROR: - ADD2LOG ("%s: System-Error: %.*s\n", conn->ifname, (int) len, data); - pc->error = 1; - break; - case TAG_GENERIC_ERROR: - ADD2LOG ("%s: Generic-Error: %.*s\n", conn->ifname, (int) len, data); - pc->error = 1; - break; - } -} - - -static int -send_padi (int n, PPPoEConnection* conns) -{ - int ret = 0, i; - - for (i = 0; i < n; i++) - { - PPPoEConnection* conn = &conns[i]; - - if (conn->fd == -1 || conn->received_pado) - continue; - - PPPoEPacket packet; - unsigned char* cursor = packet.payload; - PPPoETag* svc = (PPPoETag*) (&packet.payload); - uint16_t namelen = 0; - uint16_t plen; - - namelen = 0; - plen = TAG_HDR_SIZE + namelen; - if (!check_room (conn, cursor, packet.payload, TAG_HDR_SIZE)) - continue; - - /* Set destination to Ethernet broadcast address */ - memset (packet.ethHdr.h_dest, 0xFF, ETH_ALEN); - memcpy (packet.ethHdr.h_source, conn->my_mac, ETH_ALEN); - - packet.ethHdr.h_proto = htons (ETH_PPPOE_DISCOVERY); - packet.ver = 1; - packet.type = 1; - packet.code = CODE_PADI; - packet.session = 0; - - svc->type = TAG_SERVICE_NAME; - svc->length = htons (0); - if (!check_room (conn, cursor, packet.payload, namelen + TAG_HDR_SIZE)) - continue; - - cursor += namelen + TAG_HDR_SIZE; - - PPPoETag hostUniq; - pid_t pid = getpid (); - hostUniq.type = htons (TAG_HOST_UNIQ); - hostUniq.length = htons (sizeof (pid)); - memcpy (hostUniq.payload, &pid, sizeof (pid)); - if (!check_room (conn, cursor, packet.payload, sizeof (pid) + TAG_HDR_SIZE)) - continue; - memcpy (cursor, &hostUniq, sizeof (pid) + TAG_HDR_SIZE); - cursor += sizeof (pid) + TAG_HDR_SIZE; - plen += sizeof (pid) + TAG_HDR_SIZE; - - packet.length = htons (plen); - - ADD2LOG ("%s: Sending PADI packet\n", conn->ifname); - - if (send_packet (conn->fd, &packet, (int) (plen + HDR_SIZE))) - ret = 1; - } - - return ret; -} - - -static int -wait_for_pado (int n, PPPoEConnection* conns) -{ - int r, i, all; - size_t len; - fd_set readable; - PPPoEPacket packet; - PacketCriteria pc; - - struct timeval tv; - tv.tv_sec = PADO_TIMEOUT; - tv.tv_usec = 0; - - while (1) - { - FD_ZERO (&readable); - for (i = 0; i < n; i++) - if (conns[i].fd != -1) - FD_SET (conns[i].fd, &readable); - - do { - r = select (FD_SETSIZE, &readable, NULL, NULL, &tv); - } while (r == -1 && errno == EINTR); - - if (r < 0) { - ADD2LOG ("select: %m\n"); - return 0; - } - - if (r == 0) { - ADD2LOG ("Timeout waiting for PADO packets\n"); - return 0; - } - - for (i = 0; i < n; i++) - { - PPPoEConnection* conn = &conns[i]; - - if (conn->fd == -1 || !FD_ISSET (conn->fd, &readable)) - continue; - - pc.conn = conn; - pc.acname_ok = 0; - pc.servicename_ok = 0; - pc.error = 0; - - /* Get the packet */ - if (!receive_packet (conn->fd, &packet, &len)) - continue; - - /* Check length */ - if (ntohs (packet.length) + HDR_SIZE > len) { - ADD2LOG ("%s: Bogus PPPoE length field (%u)\n", conn->ifname, - (unsigned int) ntohs (packet.length)); - continue; - } - - /* If it's not for us, loop again */ - if (!packet_for_me (conn, &packet)) - continue; - - if (packet.code != CODE_PADO) - continue; - - if (NOT_UNICAST (packet.ethHdr.h_source)) { - ADD2LOG ("%s: Ignoring PADO packet from non-unicast MAC " - "address\n", conn->ifname); - continue; - } - - parse_packet (conn, &packet, parse_pado_tags, &pc); - - if (!pc.acname_ok) { - ADD2LOG ("%s: Wrong or missing AC-Name tag\n", conn->ifname); - continue; - } - - if (!pc.servicename_ok) { - ADD2LOG ("%s: Wrong or missing Service-Name tag\n", - conn->ifname); - continue; - } - - if (pc.error) { - ADD2LOG ("%s: Ignoring PADO packet with some Error tag\n", - conn->ifname); - continue; - } - - memcpy (conn->peer_mac, packet.ethHdr.h_source, ETH_ALEN); - ADD2LOG ("%s: Received correct PADO packet\n", conn->ifname); - conn->received_pado = 1; - } - - all = 1; - for (i = 0; i < n; i++) - if (conns[i].fd != -1 && !conns[i].received_pado) - all = 0; - if (all) - return 1; - } -} - - -static void -discovery (int n, PPPoEConnection* conns) -{ - int a; - - if (open_interfaces (n, conns)) - { - for (a = 0; a < MAX_ATTEMPTS; a++) - { - ADD2LOG ("Attempt number %d\n", a + 1); - - if (!send_padi (n, conns)) - break; - - if (wait_for_pado (n, conns)) - break; - } - } - - close_intefaces (n, conns); -} - - -void hd_scan_pppoe(hd_data_t *hd_data2) -{ - hd_t *hd; - int cnt, interfaces; - PPPoEConnection *conn; - - hd_data = hd_data2; - - if(!hd_probe_feature(hd_data, pr_pppoe)) return; - - hd_data->module = mod_pppoe; - - PROGRESS(1, 0, "looking for pppoe"); - - for(interfaces = 0, hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_network_interface && - hd->sub_class.id == sc_nif_ethernet && - hd->unix_dev_name - ) { - interfaces++; - } - } - - if(!interfaces) return; - - conn = new_mem(interfaces * sizeof *conn); - - for(cnt = 0, hd = hd_data->hd; hd && cnt < interfaces; hd = hd->next) { - if( - hd->base_class.id == bc_network_interface && - hd->sub_class.id == sc_nif_ethernet && - hd->unix_dev_name - ) { - conn[cnt].hd = hd; - conn[cnt].fd = -1; - conn[cnt].ifname = hd->unix_dev_name; - cnt++; - } - } - - PROGRESS(2, 0, "discovery"); - - discovery(interfaces, conn); - - for(cnt = 0; cnt < interfaces; cnt++) { - conn[cnt].hd->is.pppoe = 0; - - if(conn[cnt].received_pado) { - conn[cnt].hd->is.pppoe = 1; - ADD2LOG( - "pppoe %s: my mac %02x:%02x:%02x:%02x:%02x:%02x, " - "peer mac %02x:%02x:%02x:%02x:%02x:%02x\n", - conn[cnt].ifname, - conn[cnt].my_mac[0], conn[cnt].my_mac[1], conn[cnt].my_mac[2], - conn[cnt].my_mac[3], conn[cnt].my_mac[4], conn[cnt].my_mac[5], - conn[cnt].peer_mac[0], conn[cnt].peer_mac[1], conn[cnt].peer_mac[2], - conn[cnt].peer_mac[3], conn[cnt].peer_mac[4], conn[cnt].peer_mac[5] - ); - } - } -} diff --git a/src/hwinfo/src/hd/pppoe.h b/src/hwinfo/src/hd/pppoe.h deleted file mode 100644 index 859e99fb50..0000000000 --- a/src/hwinfo/src/hd/pppoe.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_pppoe(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/prom.c b/src/hwinfo/src/hd/prom.c deleted file mode 100644 index 0a2a28fa5f..0000000000 --- a/src/hwinfo/src/hd/prom.c +++ /dev/null @@ -1,694 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "hddb.h" -#include "prom.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * prom info - * - * Note: make sure that hd_scan_sysfs_pci() has been run! - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#if defined(__PPC__) - -static devtree_t *add_devtree_entry(devtree_t **devtree, devtree_t *new); -static devtree_t *new_devtree_entry(devtree_t *parent); -static void read_str(char *path, char *name, char **str); -static void read_mem(char *path, char *name, unsigned char **mem, unsigned len); -static void read_int(char *path, char *name, int *val); -static void read_devtree(hd_data_t *hd_data); -static void add_pci_prom_devices(hd_data_t *hd_data, hd_t *hd_parent, devtree_t *parent); -static void add_legacy_prom_devices(hd_data_t *hd_data, devtree_t *dt); -static int add_prom_display(hd_data_t *hd_data, devtree_t *dt); -static int add_prom_vscsi(hd_data_t *hd_data, devtree_t *dt); -static int add_prom_veth(hd_data_t *hd_data, devtree_t *dt); -static void add_devices(hd_data_t *hd_data); -static void dump_devtree_data(hd_data_t *hd_data); - -static unsigned veth_cnt, vscsi_cnt; - -int detect_smp_prom(hd_data_t *hd_data) -{ - unsigned cpus; - devtree_t *devtree; - - if(!(devtree = hd_data->devtree)) return -1; /* hd_scan_prom() not called */ - - for(cpus = 0; devtree; devtree = devtree->next) { - if(devtree->device_type && !strcmp(devtree->device_type, "cpu")) cpus++; - } - - return cpus > 1 ? cpus : 0; -} - -void hd_scan_prom(hd_data_t *hd_data) -{ - hd_t *hd; - unsigned char buf[16]; - FILE *f; - prom_info_t *pt; - - if(!hd_probe_feature(hd_data, pr_prom)) return; - - hd_data->module = mod_prom; - - /* some clean-up */ - remove_hd_entries(hd_data); - hd_data->devtree = free_devtree(hd_data); - - veth_cnt = vscsi_cnt = 0; - - PROGRESS(1, 0, "devtree"); - - read_devtree(hd_data); - if(hd_data->debug) dump_devtree_data(hd_data); - add_devices(hd_data); - - PROGRESS(2, 0, "color"); - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_internal; - hd->sub_class.id = sc_int_prom; - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_prom; - hd->detail->prom.data = pt = new_mem(sizeof *pt); - - if((f = fopen(PROC_PROM "/color-code", "r"))) { - if(fread(buf, 1, 2, f) == 2) { - pt->has_color = 1; - pt->color = buf[1]; - hd_data->color_code = pt->color | 0x10000; - ADD2LOG("color-code: 0x%04x\n", (buf[0] << 8) + buf[1]); - } - - fclose(f); - } - -} - -/* store a device tree entry */ -devtree_t *add_devtree_entry(devtree_t **devtree, devtree_t *new) -{ - while(*devtree) devtree = &(*devtree)->next; - return *devtree = new; -} - -/* create a new device tree entry */ -devtree_t *new_devtree_entry(devtree_t *parent) -{ - static unsigned idx = 0; - devtree_t *devtree = new_mem(sizeof *devtree); - - if(!parent) idx = 0; - devtree->idx = ++idx; - devtree->parent = parent; - - devtree->interrupt = devtree->class_code = - devtree->device_id = devtree->vendor_id = - devtree->subdevice_id = devtree->subvendor_id = - devtree->revision_id = -1; - - return devtree; -} - -void read_str(char *path, char *name, char **str) -{ - char *s = NULL; - str_list_t *sl; - - str_printf(&s, 0, "%s/%s", path, name); - if((sl = read_file(s, 0, 1))) { - *str = sl->str; - sl->str = NULL; - sl = free_str_list(sl); - } - free_mem(s); -} - -void read_mem(char *path, char *name, unsigned char **mem, unsigned len) -{ - FILE *f; - char *s = NULL; - unsigned char *m = new_mem(len); - - str_printf(&s, 0, "%s/%s", path, name); - if((f = fopen(s, "r"))) { - if(fread(m, len, 1, f) == 1) { - *mem = m; - m = NULL; - } - fclose(f); - } - free_mem(s); - free_mem(m); -} - -void read_int(char *path, char *name, int *val) -{ - unsigned char *p = NULL; - - read_mem(path, name, &p, sizeof (int)); - if(p) memcpy(val, p, sizeof (int)); - free_mem(p); -} - -void read_devtree_entry(hd_data_t *hd_data, devtree_t *parent, char *dirname) -{ - DIR *dir; - struct dirent *de; - struct stat sbuf; - char *path, *s; - devtree_t *devtree, *dt2; - - devtree = add_devtree_entry(&hd_data->devtree, new_devtree_entry(parent)); - - devtree->filename = new_str(dirname); - - str_printf(&devtree->path, 0, "%s%s%s", - parent ? parent->path : "", parent && *parent->path ? "/" : "", dirname - ); - - path = 0; - str_printf(&path, 0, PROC_PROM "/%s", devtree->path); - - if((dir = opendir(path))) { - while((de = readdir(dir))) { - if(!strcmp(de->d_name, ".") || !strcmp(de->d_name, "..")) continue; - s = NULL; - str_printf(&s, 0, "%s/%s", path, de->d_name); - if(!lstat(s, &sbuf)) { - if(S_ISDIR(sbuf.st_mode)) { - /* prom entries don't always have unique names, unfortunately... */ - for(dt2 = hd_data->devtree; dt2; dt2 = dt2->next) { - if( - dt2->parent == devtree && - !strcmp(dt2->filename, de->d_name) - ) break; - } - if(!dt2) read_devtree_entry(hd_data, devtree, de->d_name); - } - } - s = free_mem(s); - } - closedir(dir); - } - - read_str(path, "name", &devtree->name); - read_str(path, "model", &devtree->model); - read_str(path, "device_type", &devtree->device_type); - read_str(path, "compatible", &devtree->compatible); - - read_int(path, "interrupts", &devtree->interrupt); - read_int(path, "AAPL,interrupts", &devtree->interrupt); - read_int(path, "class-code", &devtree->class_code); - read_int(path, "vendor-id", &devtree->vendor_id); - read_int(path, "device-id", &devtree->device_id); - read_int(path, "subsystem-vendor-id", &devtree->subvendor_id); - read_int(path, "subsystem-id", &devtree->subdevice_id); - read_int(path, "revision-id", &devtree->revision_id); - - read_mem(path, "EDID", &devtree->edid, 0x80); - if(!devtree->edid) read_mem(path, "DFP,EDID", &devtree->edid, 0x80); - - if( - devtree->class_code != -1 && devtree->vendor_id != -1 && - devtree->device_id != -1 - ) { - devtree->pci = 1; - } - - path = free_mem(path); -} - -void read_devtree(hd_data_t *hd_data) -{ - read_devtree_entry(hd_data, NULL, ""); - -} - -void add_pci_prom_devices(hd_data_t *hd_data, hd_t *hd_parent, devtree_t *parent) -{ - hd_t *hd; - hd_res_t *res; - devtree_t *dt, *dt2; - int irq, floppy_ctrl_idx; - unsigned sound_ok = 0, net_ok = 0, scsi_ok = 0; - unsigned id; - char *s; - - for(dt = hd_data->devtree; dt; dt = dt->next) { - if( - dt->parent == parent || - ( - /* special magic to reach some sound chips */ - dt->parent && - dt->parent->parent == parent && - !dt->parent->pci - ) - ) { - - if( - dt->device_type && - (!strcmp(dt->device_type, "block") || !strcmp(dt->device_type, "swim3")) - ) { - /* block devices */ - - s = dt->compatible ? dt->compatible : dt->name; - id = 0; - - if(s) { - if(strstr(s, "swim3")) { - id = MAKE_ID(TAG_SPECIAL, 0x0040); - } - } - - if(id) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_none; - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_floppy; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0401); - hd->device.id = id; - hd->attached_to = hd_parent->idx; - hd->rom_id = new_str(dt->path); - if(dt->interrupt) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->irq.type = res_irq; - res->irq.enabled = 1; - res->irq.base = dt->interrupt; - } - floppy_ctrl_idx = hd->idx; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_storage_device; - hd->sub_class.id = sc_sdev_floppy; - hd->bus.id = bus_floppy; - hd->unix_dev_name = new_str("/dev/fd0"); - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->size.type = res_size; - res->size.val1 = str2float("3.5", 2); - res->size.unit = size_unit_cinch; - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->size.type = res_size; - res->size.val1 = 2880; - res->size.val2 = 0x200; - res->size.unit = size_unit_sectors; - - hd->attached_to = floppy_ctrl_idx; - } - } - - if( - !scsi_ok && - dt->device_type && - !strcmp(dt->device_type, "scsi") - ) { - /* scsi */ - scsi_ok = 1; /* max. 1 controller */ - - s = dt->compatible ? dt->compatible : dt->name; - id = 0; - - if(s) { - if(strstr(s, "mesh")) { /* mesh || chrp,mesh0 */ - id = MAKE_ID(TAG_SPECIAL, 0x0030); - } - else if(!strcmp(s, "53c94")) { - id = MAKE_ID(TAG_SPECIAL, 0x0031); - } - } - - if(id) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_none; - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_scsi; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0401); - hd->device.id = id; - hd->attached_to = hd_parent->idx; - hd->rom_id = new_str(dt->path); - if(dt->interrupt) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->irq.type = res_irq; - res->irq.enabled = 1; - res->irq.base = dt->interrupt; - } - } - } - - if( - !net_ok && - dt->device_type && - !strcmp(dt->device_type, "network") - ) { - /* network */ - net_ok = 1; /* max. 1 controller */ - - s = dt->compatible ? dt->compatible : dt->name; - id = 0; - - if(s) { - if(!strcmp(s, "mace")) { - id = MAKE_ID(TAG_SPECIAL, 0x0020); - } - else if(!strcmp(s, "bmac")) { - id = MAKE_ID(TAG_SPECIAL, 0x0021); - } - else if(!strcmp(s, "bmac+")) { - id = MAKE_ID(TAG_SPECIAL, 0x0022); - } - } - - if(id) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_none; - hd->base_class.id = bc_network; - hd->sub_class.id = 0; /* ethernet */ - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0401); - hd->device.id = id; - hd->attached_to = hd_parent->idx; - hd->rom_id = new_str(dt->path); - if(dt->interrupt) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->irq.type = res_irq; - res->irq.enabled = 1; - res->irq.base = dt->interrupt; - } - } - } - - if( - !sound_ok && - dt->device_type && - strstr(dt->device_type, "sound") == dt->device_type - ) { - /* sound */ - sound_ok = 1; /* max 1 controller */ - - for(dt2 = dt; dt2; dt2 = dt2->next) { - if( - ( - dt2 == dt || - (dt2->parent && dt2->parent == dt) - ) && - ( - !strcmp(dt2->device_type, "sound") || - !strcmp(dt2->device_type, "soundchip") - ) - ) break; - } - if(!dt2) dt2 = dt; - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_none; - hd->base_class.id = bc_multimedia; - hd->sub_class.id = sc_multi_audio; - hd->attached_to = hd_parent->idx; - hd->rom_id = new_str(dt2->path); - irq = dt2->interrupt; - if(irq <= 1 && dt2->parent && !dt2->parent->pci) { - irq = dt2->parent->interrupt; - } - if(irq > 1) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->irq.type = res_irq; - res->irq.enabled = 1; - res->irq.base = irq; - } - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x401); /* Apple */ - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0010); - - if(dt2->compatible) { - if(!strcmp(dt2->compatible, "screamer")) { - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0011); - } - else if(!strcmp(dt2->compatible, "burgundy")) { - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0012); - } - else if(!strcmp(dt2->compatible, "daca")) { - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0013); - } - else if(!strcmp(dt2->compatible, "CRUS,CS4236B")) { - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x402); /* IBM */ - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0014); - } - } - } - } - } -} - - -void add_legacy_prom_devices(hd_data_t *hd_data, devtree_t *dt) -{ - if(dt->pci) return; - - if(add_prom_display(hd_data, dt)) return; - if(add_prom_vscsi(hd_data, dt)) return; - if(add_prom_veth(hd_data, dt)) return; -} - -int add_prom_display(hd_data_t *hd_data, devtree_t *dt) -{ - hd_t *hd; - hd_res_t *res; - unsigned id; - - if( - dt->device_type && - !strcmp(dt->device_type, "display") - ) { - /* display devices */ - - id = 0; - - if(dt->name) { - if(!strcmp(dt->name, "valkyrie")) { - id = MAKE_ID(TAG_SPECIAL, 0x3000); - } - else if(!strcmp(dt->name, "platinum")) { - id = MAKE_ID(TAG_SPECIAL, 0x3001); - } - } - - if(id) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_none; - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_other; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0401); - hd->device.id = id; - hd->rom_id = new_str(dt->path); - if(dt->interrupt) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->irq.type = res_irq; - res->irq.enabled = 1; - res->irq.base = dt->interrupt; - } - - return 1; - } - } - - return 0; -} - -int add_prom_vscsi(hd_data_t *hd_data, devtree_t *dt) -{ - hd_t *hd; - char *s, *id; - - if( - dt->path && - dt->device_type && - !strcmp(dt->device_type, "vscsi") - ) { - /* vscsi storage */ - - if( - (s = strstr(dt->path, "v-scsi@")) && - *(id = s + sizeof "v-scsi@" - 1) - ) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_none; - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_scsi; - hd->slot = veth_cnt++; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x6001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1001); - str_printf(&hd->device.name, 0, "Virtual SCSI %d", hd->slot); - hd->rom_id = new_str(dt->path); - - str_printf(&hd->sysfs_id, 0, "/devices/vio/%s", id); - - return 1; - } - } - - return 0; -} - -int add_prom_veth(hd_data_t *hd_data, devtree_t *dt) -{ - hd_t *hd; - char *s, *id; - - if( - dt->path && - dt->device_type && - dt->compatible && - !strcmp(dt->device_type, "network") && - !strcmp(dt->compatible, "IBM,l-lan") - ) { - /* veth network */ - - if( - (s = strstr(dt->path, "l-lan@")) && - *(id = s + sizeof "l-lan@" - 1) - ) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->bus.id = bus_none; - hd->base_class.id = bc_network; - hd->sub_class.id = 0x00; - hd->slot = veth_cnt++; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x6001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1002); - str_printf(&hd->device.name, 0, "Virtual Ethernet card %d", hd->slot); - hd->rom_id = new_str(dt->path); - - str_printf(&hd->sysfs_id, 0, "/devices/vio/%s", id); - - return 1; - } - } - - return 0; -} - -void add_devices(hd_data_t *hd_data) -{ - hd_t *hd; - devtree_t *dt; -#if 0 - hd_res_t *res; - unsigned pci_slot = 0, u; -#endif - - /* remove old assignments */ - for(hd = hd_data->hd; hd; hd = hd->next) { - if(ID_TAG(hd->device.id) == TAG_PCI && ID_TAG(hd->vendor.id) == TAG_PCI) { - hd->rom_id = free_mem(hd->rom_id); - hd->detail = free_hd_detail(hd->detail); - } - } - - for(dt = hd_data->devtree; dt; dt = dt->next) { - if(dt->pci) { - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - /* do *not* compare class ids */ - /* It would be better to check the slot numbers instead but - * as they are not stored within /proc/device-tree in a consistent - * way, we can't do that. - */ - !hd->rom_id && - ID_TAG(hd->device.id) == TAG_PCI && - ID_TAG(hd->vendor.id) == TAG_PCI && - ID_VALUE(hd->device.id) == dt->device_id && - ID_VALUE(hd->vendor.id) == dt->vendor_id && - (dt->subvendor_id == -1 || ID_VALUE(hd->sub_vendor.id) == dt->subvendor_id) && - (dt->subdevice_id == -1 || ID_VALUE(hd->sub_device.id) == dt->subdevice_id) && - hd->revision.id == dt->revision_id - ) break; - } - - if(hd) { - hd->rom_id = new_str(dt->path); - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_devtree; - hd->detail->devtree.data = dt; - add_pci_prom_devices(hd_data, hd, dt); - } - } - else { - add_legacy_prom_devices(hd_data, dt); - } - } -} - -void dump_devtree_data(hd_data_t *hd_data) -{ - unsigned u; - devtree_t *devtree; - - devtree = hd_data->devtree; - if(!devtree) return; - - ADD2LOG("----- /proc device tree -----\n"); - - for(; devtree; devtree = devtree->next) { - u = devtree->parent ? devtree->parent->idx : 0; - ADD2LOG(" %02u @%02u %s", devtree->idx, u, devtree->path); - if(devtree->pci) ADD2LOG(" [pci]"); - ADD2LOG("\n"); - - ADD2LOG( - " name \"%s\", model \"%s\", dtype \"%s\", compat \"%s\"\n", - devtree->name ? devtree->name : "", - devtree->model ? devtree->model : "", - devtree->device_type ? devtree->device_type : "", - devtree->compatible ? devtree->compatible : "" - ); - - if( - devtree->class_code != -1 || devtree->vendor_id != -1 || - devtree->device_id != -1 || devtree->revision_id != -1 || - devtree->subdevice_id != -1 || devtree->subvendor_id != -1 || - devtree->interrupt != -1 - ) { - ADD2LOG(" "); - if(devtree->class_code != -1) ADD2LOG(" class 0x%06x", devtree->class_code); - if(devtree->vendor_id != -1) ADD2LOG(" vend 0x%04x", devtree->vendor_id); - if(devtree->device_id != -1) ADD2LOG(" dev 0x%04x", devtree->device_id); - if(devtree->subvendor_id != -1) ADD2LOG(" svend 0x%04x", devtree->subvendor_id); - if(devtree->subdevice_id != -1) ADD2LOG(" sdev 0x%04x", devtree->subdevice_id); - if(devtree->revision_id != -1) ADD2LOG(" rev 0x%02x", devtree->revision_id); - if(devtree->interrupt != -1) ADD2LOG(" irq %d", devtree->interrupt); - ADD2LOG("\n"); - } - - if(devtree->edid) { - ADD2LOG(" EDID record:\n"); - for(u = 0; u < 0x80; u += 0x10) { - ADD2LOG(" %02x ", u); - hexdump(&hd_data->log, 1, 0x10, devtree->edid + u); - ADD2LOG("\n"); - } - } - - if(devtree->next) ADD2LOG("\n"); - } - - ADD2LOG("----- /proc device tree end -----\n"); -} - - -#endif /* defined(__PPC__) */ - diff --git a/src/hwinfo/src/hd/prom.h b/src/hwinfo/src/hd/prom.h deleted file mode 100644 index 8f8505ef82..0000000000 --- a/src/hwinfo/src/hd/prom.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_prom(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/s390.c b/src/hwinfo/src/hd/s390.c deleted file mode 100644 index 942564b4ff..0000000000 --- a/src/hwinfo/src/hd/s390.c +++ /dev/null @@ -1,246 +0,0 @@ -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "hddb.h" -#include "s390.h" - -#if defined(__s390__) || defined(__s390x__) - -#include -#include - -#define BUSNAME "ccw" -#define BUSNAME_GROUP "ccwgroup" -#define BUSNAME_IUCV "iucv" - -static void hd_scan_s390_ex(hd_data_t *hd_data, int disks_only) -{ - hd_t* hd; - hd_res_t* res; - struct sysfs_bus *bus; - struct sysfs_bus *bus_group; - struct sysfs_device *curdev = NULL; - struct dlist *attributes = NULL; - struct sysfs_attribute *curattr = NULL; - struct dlist *devlist = NULL; - struct dlist *devlist_group = NULL; - int virtual_machine=0; - - unsigned int devtype=0,devmod=0,cutype=0,cumod=0; - - /* list of each channel's cutype, used for finding multichannel devices */ - int cutypes[1<<16]={0}; - int i; - - hd_data->module=mod_s390; - - remove_hd_entries(hd_data); - - bus=sysfs_open_bus(BUSNAME); - bus_group=sysfs_open_bus(BUSNAME_GROUP); - - if (!bus) - { - ADD2LOG("unable to open" BUSNAME "bus"); - return; - } - - devlist=sysfs_get_bus_devices(bus); - if(bus_group) devlist_group=sysfs_get_bus_devices(bus_group); - - if(!devlist) - { - ADD2LOG("unable to get devices on bus " BUSNAME); - return; - } - - /* build cutypes list */ - dlist_for_each_data(devlist, curdev, struct sysfs_device) - { - int channel=strtol(rindex(curdev->bus_id,'.')+1,NULL,16); - attributes = sysfs_get_device_attributes(curdev); - dlist_for_each_data(attributes,curattr,struct sysfs_attribute) - { - if(strcmp("cutype",curattr->name)==0) - cutype=strtol(curattr->value,NULL,16); - } - cutypes[channel]=cutype; - } - /* check for each channel if it must be skipped and identify virtual reader/punch */ - for(i=0;i<(1<<16);i++) - { - if(cutypes[i]==0x3088) /* It seems that QDIO devices only appear once */ - cutypes[i+1]*=-1; /* negative cutype -> skip */ - - if(cutypes[i]==0x2540) - { - virtual_machine=1; /* we are running in VM */ - cutypes[i]=-2; /* reader */ - cutypes[i+1]=-3; /* punch */ - } - } - - /* identify grouped channels */ - if(devlist_group) dlist_for_each_data(devlist_group, curdev, struct sysfs_device) - { - struct sysfs_directory* d; - struct dlist* dl; - struct sysfs_link* cl; - //printf("ccwg %s\n",curdev->path); - d=sysfs_open_directory(curdev->path); - dl=sysfs_get_dir_links(d); - dlist_for_each_data(dl,cl,struct sysfs_link) /* iterate over this channel group */ - { - if(!rindex(cl->target,'.')) continue; - int channel=strtol(rindex(cl->target,'.')+1,NULL,16); - //printf("channel %x name %s target %s\n",channel,cl->name,cl->target); - if(strncmp("cdev",cl->name,4)==0) - { - if(cl->name[4]=='0') /* first channel in group gets an entry */ - { - if(cutypes[channel]<0) cutypes[channel]*=-1; /* make sure its positive */ - } - else /* other channels in group are skipped */ - if(cutypes[channel]>0) cutypes[channel]*=-1; /* make sure its negative */ - } - - } - } - - dlist_for_each_data(devlist, curdev, struct sysfs_device) - { - int readonly=0; - res=new_mem(sizeof *res); - - attributes = sysfs_get_device_attributes(curdev); - dlist_for_each_data(attributes,curattr, struct sysfs_attribute) - { - if (strcmp("online",curattr->name)==0) - res->io.enabled=atoi(curattr->value); - else if (strcmp("cutype",curattr->name)==0) - { - cutype=strtol(curattr->value,NULL,16); - cumod=strtol(index(curattr->value,'/')+1,NULL,16); - } else if (strcmp("devtype",curattr->name)==0) - { - devtype=strtol(curattr->value,NULL,16); - devmod=strtol(index(curattr->value,'/')+1,NULL,16); - } else if (strcmp("readonly",curattr->name)==0) - { - readonly=atoi(curattr->value); - } - } - - res->io.type=res_io; - res->io.access=readonly?acc_ro:acc_rw; - res->io.base=strtol(rindex(curdev->bus_id,'.')+1,NULL,16); - - /* Skip additional channels for multi-channel devices */ - if(cutypes[res->io.base] < -3) - continue; - - if(disks_only && cutype!=0x3990 && cutype!=0x2105 && cutype!=0x3880 && cutype!=0x9343 && cutype!=0x6310 && - (cutype != 0x1731 || devtype != 0x1732 || cumod != 3)) - continue; - - res->io.range=1; - switch (cutype) - { - /* three channels */ - case 0x1731: /* QDIO (QETH, HSI, zFCP) */ - res->io.range++; - /* two channels */ - case 0x3088: /* CU3088 (CTC, LCS) */ - res->io.range++; - } - - hd=add_hd_entry(hd_data,__LINE__,0); - add_res_entry(&hd->res,res); - hd->vendor.id=MAKE_ID(TAG_SPECIAL,0x6001); /* IBM */ - hd->device.id=MAKE_ID(TAG_SPECIAL,cutype); - hd->sub_device.id=MAKE_ID(TAG_SPECIAL,devtype); - hd->bus.id=bus_ccw; - hd->sysfs_device_link = new_str(hd_sysfs_id(curdev->path)); - hd->sysfs_bus_id = new_str(strrchr(curdev->path,'/')+1); - - if(cutypes[res->io.base]==-2) /* virtual reader */ - { - hd->base_class.id=bc_scanner; - } - if(cutypes[res->io.base]==-3) /* virtual punch */ - { - hd->base_class.id=bc_printer; - } - /* all other device data (names, classes etc.) comes from the s390 ID file */ - - hd->detail=free_hd_detail(hd->detail); - hd->detail=new_mem(sizeof *hd->detail); - hd->detail->ccw.type=hd_detail_ccw; - hd->detail->ccw.data=new_mem(sizeof(ccw_t)); - hd->detail->ccw.data->cu_model=cumod; - hd->detail->ccw.data->dev_model=devmod; - hd->detail->ccw.data->lcss=(strtol(curdev->bus_id,0,16) << 8) + strtol(curdev->bus_id+2,0,16); - hddb_add_info(hd_data,hd); - } - - if(virtual_machine) - { - /* add an unactivated IUCV device */ - hd=add_hd_entry(hd_data,__LINE__,0); - hd->vendor.id=MAKE_ID(TAG_SPECIAL,0x6001); /* IBM */ - hd->device.id=MAKE_ID(TAG_SPECIAL,0x0005); /* IUCV */ - hd->bus.id=bus_iucv; - hd->base_class.id=bc_network; - hd->status.active=status_no; - hd->status.available=status_yes; - hddb_add_info(hd_data,hd); - - /* add activated IUCV devices */ - bus=sysfs_open_bus(BUSNAME_IUCV); - if(bus) - { - devlist=sysfs_get_bus_devices(bus); - if(devlist) - { - dlist_for_each_data(devlist, curdev, struct sysfs_device) - { - hd=add_hd_entry(hd_data,__LINE__,0); - hd->vendor.id=MAKE_ID(TAG_SPECIAL,0x6001); /* IBM */ - hd->device.id=MAKE_ID(TAG_SPECIAL,0x0005); /* IUCV */ - hd->bus.id=bus_iucv; - hd->base_class.id=bc_network; - hd->status.active=status_yes; - hd->status.available=status_yes; - attributes = sysfs_get_device_attributes(curdev); - dlist_for_each_data(attributes,curattr,struct sysfs_attribute) - { - if(strcmp("user",curattr->name)==0) - hd->rom_id=new_str(curattr->value); - } - hd->sysfs_device_link = new_str(hd_sysfs_id(curdev->path)); - hd->sysfs_bus_id = new_str(strrchr(curdev->path,'/')+1); - hddb_add_info(hd_data,hd); - } - } - } - - } -} - -void hd_scan_s390(hd_data_t *hd_data) -{ - if (!hd_probe_feature(hd_data, pr_s390)) return; - hd_scan_s390_ex(hd_data, 0); -} - -void hd_scan_s390disks(hd_data_t *hd_data) -{ - if (!hd_probe_feature(hd_data, pr_s390disks)) return; - hd_scan_s390_ex(hd_data, 1); -} - -#endif - diff --git a/src/hwinfo/src/hd/s390.h b/src/hwinfo/src/hd/s390.h deleted file mode 100644 index 9ab4124b9c..0000000000 --- a/src/hwinfo/src/hd/s390.h +++ /dev/null @@ -1,5 +0,0 @@ -/** register all S/390 devices */ -void hd_scan_s390(hd_data_t *hd_data); -/** register only S/390 disks */ -void hd_scan_s390disks(hd_data_t *hd_data); - diff --git a/src/hwinfo/src/hd/sbus.c b/src/hwinfo/src/hd/sbus.c deleted file mode 100644 index 3122442d65..0000000000 --- a/src/hwinfo/src/hd/sbus.c +++ /dev/null @@ -1,691 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "sbus.h" - -#ifdef __sparc__ - -#ifdef DIET -typedef unsigned int u_int; -#endif - -#include - -#define MAX_VAL (4096-128-4) - -static int prom_fd; - -static int -prom_nextnode (int node) -{ - char buf[OPROMMAXPARAM]; - struct openpromio *op = (struct openpromio *)buf; - - op->oprom_size = sizeof (int); - if (node == -1) - return 0; - - *(int *)op->oprom_array = node; - if (ioctl (prom_fd, OPROMNEXT, op) < 0) - return 0; - - return *(int *)op->oprom_array; -} - -static int -prom_getchild (int node) -{ - char buf[OPROMMAXPARAM]; - struct openpromio *op = (struct openpromio *)buf; - - op->oprom_size = sizeof (int); - - if (!node || node == -1) - return 0; - - *(int *)op->oprom_array = node; - if (ioctl (prom_fd, OPROMCHILD, op) < 0) - return 0; - - return *(int *)op->oprom_array; -} - -static char -*prom_getproperty (char *prop, int *lenp, char *buf) -{ - struct openpromio *op = (struct openpromio *)buf; - - op->oprom_size = MAX_VAL; - - strcpy (op->oprom_array, prop); - - if (ioctl (prom_fd, OPROMGETPROP, op) < 0) - return 0; - - if (lenp) - *lenp = op->oprom_size; - - if (strncmp ("SUNW,", op->oprom_array, 5) == 0) - return op->oprom_array + 5; - else - return op->oprom_array; -} - -static int -prom_getbool (char *prop) -{ - char buf[OPROMMAXPARAM]; - struct openpromio *op = (struct openpromio *)buf; - - op->oprom_size = 0; - - *(int *)op->oprom_array = 0; - for (;;) { - op->oprom_size = 128; /* MAX_PROP */ - if (ioctl (prom_fd, OPROMNXTPROP, op) < 0) - return 0; - if (!op->oprom_size) - return 0; - if (!strcmp (op->oprom_array, prop)) - return 1; - } -} - -static void -prom_parse (int node, int sbus, int ebus, hd_data_t *hd_data) -{ - hd_t *hd; - char buf1[OPROMMAXPARAM], buf2[OPROMMAXPARAM]; - int nextnode; - int len, nsbus = sbus, nebus = ebus; - char *prop1 = prom_getproperty ("device_type", &len, buf1); - - if (strcmp (prop1, "network") == 0) - { - char *prop2 = prom_getproperty ("name", &len, buf2); - if (prop2 && len >= 0) - { - if (strcmp (prop2, "hme") == 0) - { - ADD2LOG ("NETWORK: type=Sun Happy Meal Ethernet, module=sunhme\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_network; - hd->sub_class.id = 0x00; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x3001); - } - else if (strcmp (prop2, "le") == 0) - { - ADD2LOG ("NETWORK: type=Sun Lance Ethernet, module=ignore\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_network; - hd->sub_class.id = 0x00; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x3002); - } - else if (strcmp (prop2, "qe") == 0) - { - prop2 = prom_getproperty("channel#", &len, buf2); - if (prop2 && len == 4 && *(int *)prop2 == 0) - { - ADD2LOG ("NETWORK: type=Sun Quad Ethernet, module=sunqe\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_network; - hd->sub_class.id = 0x00; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x3003); - } - } - else if (strcmp (prop2, "qfe") == 0) - { - ADD2LOG ("NETWORK: type=Sun Quad Ethernet (qfe), module=sunhme\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_network; - hd->sub_class.id = 0x00; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x3001); - } - else if (strcmp (prop2, "mlanai") == 0 || strcmp (prop2, "myri") == 0) - { - ADD2LOG ("NETWORK: type=MyriCOM MyriNET Gigabit Ethernet, module=myri_sbus\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_network; - hd->sub_class.id = 0x00; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x3004); - } - else - ADD2LOG ("NETWORK: Unknown device \"%s\"\n", prop2); - } - } - else if (strcmp (prop1, "scsi") == 0) - { - char *prop2 = prom_getproperty ("name", &len, buf2); - if (prop2 && len >= 0) - { - if (sbus) - { - if (strcmp (prop2, "esp") == 0) - { - ADD2LOG ("SCSI: type=Sun Enhanced SCSI Processor (ESP), module=ignore\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_scsi; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1001); - } - else if (strcmp (prop2, "soc") == 0) - { - ADD2LOG ("SCSI: type=Sun SPARCStorage Array, module=fc4:soc:pluto\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_scsi; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1101); - } - else if (strcmp (prop2, "socal") == 0) - { - ADD2LOG ("SCSI: type=Sun Enterprise Network Array, module=fc4:socal:fcal\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_scsi; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1102); - } - else if (strcmp (prop2, "fas") == 0) - { - ADD2LOG ("SCSI: type=Sun Swift (ESP), module=ignore\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_scsi; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1002); - } - else if (strcmp (prop2, "ptisp") == 0) - { - ADD2LOG ("SCSI: type=Performance Technologies ISP, module=qlogicpti\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_scsi; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1003); - } - else if (strcmp (prop2, "isp") == 0) - { - ADD2LOG ("SCSI: type=QLogic ISP, module=qlogicpti\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_scsi; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1004); - } - else - ADD2LOG ("SCSI: Unknown SBUS device \"%s\"\n", prop2); - } - else - ADD2LOG ("SCSI: Unknown device \"%s\"\n", prop2); - } - } - else if (strcmp (prop1, "display") == 0) - { - char *prop2 = prom_getproperty ("name", &len, buf2); - if (prop2 && len >= 0) - if (sbus || strcmp (prop2, "ffb") == 0 || - strcmp (prop2, "afb") == 0 || strcmp (prop2, "cgfourteen") == 0) - { - if (strcmp (prop2, "bwtwo") == 0) - { - ADD2LOG ("DISPLAY: Sun|Monochrome (bwtwo), depth=1\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0001); - } - else if (strcmp (prop2, "cgthree") == 0) - { - ADD2LOG ("DISPLAY: Sun|Color3 (cgthree), depth=8\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0002); - } - else if (strcmp (prop2, "cgeight") == 0) - { - ADD2LOG ("DISPLAY: Sun|CG8/RasterOps, depth=8\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0003); - } - else if (strcmp (prop2, "cgtwelve") == 0) - { - ADD2LOG ("DISPLAY: Sun|GS (cgtwelve), depth=24\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0004); - } - else if (strcmp (prop2, "gt") == 0) - { - ADD2LOG ("DISPLAY: Sun|Graphics Tower (gt), depth=24\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0005); - } - else if (strcmp (prop2, "mgx") == 0) - { - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->bus.id = bus_sbus; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - prop2 = prom_getproperty ("fb_size", &len, buf2); - if (prop2 && len == 4 && *(int *)prop2 == 0x400000) - { - ADD2LOG ("DISPLAY: Quantum 3D MGXplus with 4M VRAM (mgx), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0006); - } - else - { - ADD2LOG ("DISPLAY: Quantum 3D MGXplus (mgx), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0007); - } - } - else if (strcmp (prop2, "cgsix") == 0) - { - int chiprev = 0; - int vmsize = 0; - - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->bus.id = bus_sbus; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - - prop2 = prom_getproperty("chiprev", &len, buf2); - if (prop2 && len == 4) - chiprev = *(int *)prop2; - prop2 = prom_getproperty("vmsize", &len, buf2); - if (prop2 && len == 4) - vmsize = *(int *)prop2; - switch (chiprev) - { - case 1 ... 4: - ADD2LOG ("DISPLAY: Sun|Double width GX (cgsix), depth=8\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0008); - break; - case 5 ... 9: - ADD2LOG ("DISPLAY: Sun|Single width GX (cgsix), depth=8\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0009); - break; - case 11: - switch (vmsize) - { - case 2: - ADD2LOG ("DISPLAY: Sun|Turbo GX with 1M VSIMM (cgsix), depth=8\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x000a); - break; - case 4: - ADD2LOG ("DISPLAY: Sun|Turbo GX Plus (cgsix), depth=8\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x000b); - break; - default: - ADD2LOG ("DISPLAY: Sun|Turbo GX (cgsix), depth=8\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x000c); - break; - } - break; - default: - ADD2LOG ("DISPLAY: Sun|Unknown GX (cgsix), depth=8\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x000d); - break; - } - } - else if (strcmp (prop2, "cgfourteen") == 0) - { - int size = 0; - - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->bus.id = bus_sbus; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - - prop2 = prom_getproperty ("reg", &len, buf2); - if (prop2 && !(len % 12) && len > 0) - size = *(int *)(prop2 + len - 4); - switch (size) - { - case 0x400000: - ADD2LOG ("DISPLAY: Sun|SX with 4M VSIMM (cgfourteen), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x000e); - break; - case 0x800000: - ADD2LOG ("DISPLAY: Sun|SX with 8M VSIMM (cgfourteen), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x000f); - break; - default: - ADD2LOG ("DISPLAY: Sun|SX (cgfourteen), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0010); - break; - } - } - else if (strcmp (prop2, "leo") == 0) - { - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->bus.id = bus_sbus; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - - prop2 = prom_getproperty("model", &len, buf2); - if (prop2 && len > 0 && !strstr(prop2, "501-2503")) - { - ADD2LOG ("DISPLAY: Sun|Turbo ZX (leo), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0012); - } - else - { - ADD2LOG ("DISPLAY: Sun|ZX or Turbo ZX (leo), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0011); - } - } - else if (strcmp (prop2, "tcx") == 0) - { - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->bus.id = bus_sbus; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - - if (prom_getbool ("tcx-8-bit")) - { - ADD2LOG ("DISPLAY: Sun|TCX (8bit), depth=8\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0013); - } - else - { - ADD2LOG ("DISPLAY: Sun|TCX (S24), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0014); - } - } - else if (strcmp (prop2, "afb") == 0) - { - int btype = 0; - - prop2 = prom_getproperty("board_type", &len, buf2); - if (prop2 && len == 4) - btype = *(int *)prop2; - - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->bus.id = bus_sbus; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - - if (btype == 3) - { - ADD2LOG ("DISPLAY: Sun|Elite3D-M6 Horizontal (afb), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0015); - } - else - { - ADD2LOG ("DISPLAY: Sun|Elite3D (afb), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0016); - } - } - else if (strcmp (prop2, "ffb") == 0) - { - int btype = 0; - - prop2 = prom_getproperty("board_type", &len, buf2); - if (prop2 && len == 4) - btype = *(int *)prop2; - - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_display; - hd->sub_class.id = sc_dis_vga; - hd->bus.id = bus_sbus; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - - switch (btype) - { - case 0x08: - ADD2LOG ("DISPLAY: Sun|FFB 67MHz Creator (ffb), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0017); - break; - case 0x0b: - ADD2LOG ("DISPLAY: Sun|FFB 67MHz Creator 3D (ffb), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0018); - break; - case 0x1b: - ADD2LOG ("DISPLAY: Sun|FFB 75MHz Creator 3D (ffb), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0019); - break; - case 0x20: - case 0x28: - ADD2LOG ("DISPLAY: Sun|FFB2 Vertical Creator (ffb), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x001a); - break; - case 0x23: - case 0x2b: - ADD2LOG ("DISPLAY: Sun|FFB2 Vertical Creator 3D (ffb), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x001b); - break; - case 0x30: - ADD2LOG ("DISPLAY: Sun|FFB2+ Vertical Creator (ffb), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x001c); - break; - case 0x33: - ADD2LOG ("DISPLAY: Sun|FFB2+ Vertical Creator 3D (ffb), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x001d); - break; - case 0x40: - case 0x48: - ADD2LOG ("DISPLAY: Sun|FFB2 Horizontal Creator (ffb), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x001e); - break; - case 0x43: - case 0x4b: - ADD2LOG ("DISPLAY: Sun|FFB2 Horizontal Creator 3D (ffb), depth=24\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x001f); - break; - default: - ADD2LOG ("DISPLAY: Sun|FFB (ffb), type=%xi, depth=24\n", - btype); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0020); - break; - } - } - else - ADD2LOG ("DISPLAY: Unknown SBUS device \"%s\"\n", prop2); - } - else - ADD2LOG ("DISPLAY: Unknown device \"%s\"\n", prop2); - } - else if (strcmp (prop1, "cpu") == 0) - { - char *prop2 = prom_getproperty ("name", &len, buf2); - - if (prop2 && len >= 0) - ADD2LOG ("CPU: %s\n", prop2); - } - else - { - char *prop2 = prom_getproperty ("name", &len, buf2); - - if (prop2 && len >= 0) - { - if (strcmp (prop2, "audio") == 0) - { - ADD2LOG ("AUDIO: type=AMD7930, module=amd7930\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_multimedia; - hd->sub_class.id = sc_multi_audio; - hd->bus.id = bus_sbus; - hd->unix_dev_name = new_str ("/dev/audio"); - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x2001); - } - else if (strcmp (prop2, "CS4231") == 0) - { - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_multimedia; - hd->sub_class.id = sc_multi_audio; - hd->bus.id = bus_sbus; - hd->unix_dev_name = new_str ("/dev/audio"); - - if (ebus) - { - ADD2LOG ("AUDIO: type=CS4231 EB2 DMA (PCI), module=cs4231\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x2002); - } - else - { - ADD2LOG ("AUDIO: type=CS4231 APC DMA (SBUS), module=cs4231\n"); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x2003); - } - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - } - else if (strcmp (prop2, "DBRIe") == 0) - { - ADD2LOG ("AUDIO: type=SS10/SS20 DBRI, module=dbri\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_multimedia; - hd->sub_class.id = sc_multi_audio; - hd->bus.id = bus_sbus; - hd->unix_dev_name = new_str ("/dev/audio"); - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x2004); - } - else if (strcmp (prop2, "bpp") == 0) - { - ADD2LOG ("PARPORT: type=bpp, module=unknown\n"); - } - else if (strcmp (prop2, "soc") == 0) - { - ADD2LOG ("SCSI: type=Sun SPARCStorage Array, module=fc4:soc:pluto\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_scsi; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1101); - } - else if (strcmp (prop2, "socal") == 0) - { - ADD2LOG ("SCSI: type=Sun Enterprise Network Array, module=fc4:socal:fcal\n"); - hd = add_hd_entry (hd_data, __LINE__, 0); - hd->base_class.id = bc_storage; - hd->sub_class.id = sc_sto_scsi; - hd->bus.id = bus_sbus; - - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x4001); - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1102); - } - else if (strcmp(prop2, "sbus") == 0 || strcmp(prop2, "sbi") == 0) - nsbus = 1; - else if (!strcmp(prop2, "ebus")) - nebus = 1; - else - ADD2LOG ("%s: unknown device \"%s\"\n", prop1, prop2); - } - } - - - nextnode = prom_getchild (node); - if (nextnode) - prom_parse (nextnode, nsbus, nebus, hd_data); - nextnode = prom_nextnode (node); - if (nextnode) - prom_parse (nextnode, sbus, ebus, hd_data); - - return; -} - -void -hd_scan_sbus (hd_data_t *hd_data) -{ - int prom_root_node; - - if(!hd_probe_feature(hd_data, pr_sbus)) - return; - - hd_data->module = mod_sbus; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "sun sbus"); - - if((prom_fd = open(DEV_OPENPROM, O_RDWR | O_NONBLOCK | O_NOCTTY)) < 0) - return; - - prom_root_node = prom_nextnode(0); - if (!prom_root_node) - goto failed; - - prom_parse (prom_root_node, 0, 0, hd_data); - - failed: - close (prom_fd); - - return; -} - -#else - -void -hd_scan_sbus (hd_data_t *hd_data) -{ - return; -} - -#endif diff --git a/src/hwinfo/src/hd/sbus.h b/src/hwinfo/src/hd/sbus.h deleted file mode 100644 index de8564f718..0000000000 --- a/src/hwinfo/src/hd/sbus.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_sbus (hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/serial.c b/src/hwinfo/src/hd/serial.c deleted file mode 100644 index d43d9faff8..0000000000 --- a/src/hwinfo/src/hd/serial.c +++ /dev/null @@ -1,239 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "serial.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * serial interface - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - - -static char *ser_names[] = { - "8250", "16450", "16550", "16650", "16750", "16850", "16950" -}; - -static void get_serial_info(hd_data_t *hd_data); -static serial_t *add_serial_entry(serial_t **ser, serial_t *new_ser); -static void dump_serial_data(hd_data_t *hd_data); - -void hd_scan_serial(hd_data_t *hd_data) -{ - hd_t *hd; - serial_t *ser, *next; - hd_res_t *res; - int i; - char buf[4], *skip_dev[16]; - str_list_t *sl, *cmd; - unsigned skip_devs = 0; - - if(!hd_probe_feature(hd_data, pr_serial)) return; - - hd_data->module = mod_serial; - - /* some clean-up */ - remove_hd_entries(hd_data); - hd_data->serial = NULL; - - PROGRESS(1, 0, "read info"); - - get_serial_info(hd_data); - if((hd_data->debug & HD_DEB_SERIAL)) dump_serial_data(hd_data); - - for(i = 0; i < 2; i++) { - cmd = get_cmdline(hd_data, i == 0 ? "yast2ser" : "console"); - for(sl = cmd; sl; sl = sl->next) { - if(sscanf(sl->str, "tty%3[^,]", buf) == 1) { - if(buf[1] == 0) { - switch(*buf) { - case 'a': strcpy(buf, "S0"); break; - case 'b': strcpy(buf, "S1"); break; - } - } - if(skip_devs < sizeof skip_dev / sizeof *skip_dev) { - skip_dev[skip_devs] = NULL; - str_printf(&skip_dev[skip_devs++], 0, "/dev/tty%s", buf); - } - } - } - free_str_list(cmd); - } - - PROGRESS(2, 0, "build list"); - - for(ser = hd_data->serial; ser; ser = ser->next) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_comm; - hd->sub_class.id = sc_com_ser; - hd->prog_if.id = 0x80; - for(i = 0; (unsigned) i < sizeof ser_names / sizeof *ser_names; i++) { - if(strstr(ser->name, ser_names[i])) hd->prog_if.id = i; - } - hd->device.name = new_str(ser->name); - hd->func = ser->line; - str_printf(&hd->unix_dev_name, 0, "/dev/ttyS%u", ser->line); - for(i = 0; i < (int) skip_devs; i++) { - if(!strcmp(skip_dev[i], hd->unix_dev_name)) { - hd->tag.ser_skip = 1; - break; - } - } - if(ser->device) { - if(strstr(ser->device, "modem-printer")) { - hd->tag.ser_device = 1; - } - else if(strstr(ser->device, "infrared")) { - hd->tag.ser_device = 2; - } - else if(strstr(ser->device, "modem")) { - hd->tag.ser_device = 3; - } - } - if(ser->baud) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->baud.type = res_baud; - res->baud.speed = ser->baud; - } - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->io.type = res_io; - res->io.enabled = 1; - res->io.base = ser->port; - res->io.access = acc_rw; - - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->irq.type = res_irq; - res->irq.enabled = 1; - res->irq.base = ser->irq; - } - - for(ser = hd_data->serial; ser; ser = next) { - next = ser->next; - - free_mem(ser->name); - free_mem(ser->device); - free_mem(ser); - } - hd_data->serial = NULL; - -#if 0 - if(hd_module_is_active(hd_data, "irda")) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_comm; - hd->sub_class.id = sc_com_ser; - hd->prog_if.id = 0x80; - hd->device.name = new_str("IrDA Serial"); - hd->unix_dev_name = new_str("/dev/ircomm0"); - } -#endif -} - -void get_serial_info(hd_data_t *hd_data) -{ - char buf[64]; - unsigned u0, u1, u2; -#if !defined(__PPC__) - unsigned u3; -#endif - int i; - str_list_t *sl, *sl0; - serial_t *ser; - -#if !defined(__PPC__) - /* - * Max. 44 serial lines at the moment; the serial proc interface is - * somewhat buggy at the moment (2.2.13), hence the explicit 44 lines - * limit. That may be dropped later. - */ - sl0 = read_file(PROC_DRIVER_SERIAL, 1, 44); - - // ########## FIX !!!!!!!! ######## - if(sl0) { - for(sl = sl0; sl; sl = sl->next) { - i = 0; - if( - sscanf(sl->str, "%u: uart:%31s port:%x irq:%u baud:%u", &u0, buf, &u1, &u2, &u3) == 5 || - (i = 1, sscanf(sl->str, "%u: uart:%31s port:%x irq:%u tx:%u", &u0, buf, &u1, &u2, &u3) == 5) - ) { - /* - * The 'baud' or 'tx' entries are only present for real interfaces. - */ - ser = add_serial_entry(&hd_data->serial, new_mem(sizeof *ser)); - ser->line = u0; - ser->port = u1; - ser->irq = u2; - if(!i) ser->baud = u3; - ser->name = new_str(buf); - } - } - - if((hd_data->debug & HD_DEB_SERIAL)) { - /* log just the first 16 entries */ - ADD2LOG("----- "PROC_DRIVER_SERIAL" -----\n"); - for(sl = sl0, i = 16; sl && i--; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- "PROC_DRIVER_SERIAL" end -----\n"); - } - } -#endif /* !defined(__PPC__) */ - -#if defined(__PPC__) - sl0 = read_file(PROC_DRIVER_MACSERIAL, 1, 0); - - if(sl0) { - for(sl = sl0; sl; sl = sl->next) { - if( - (i = sscanf(sl->str, "%u: port:%x irq:%u con:%63[^\n]", &u0, &u1, &u2, buf)) >= 3 - ) { - ser = add_serial_entry(&hd_data->serial, new_mem(sizeof *ser)); - ser->line = u0; - ser->port = u1; - ser->irq = u2; - ser->name = new_str("SCC"); - if(i == 4) ser->device = new_str(buf); - } - } - - if((hd_data->debug & HD_DEB_SERIAL)) { - /* log just the first 16 entries */ - ADD2LOG("----- "PROC_DRIVER_MACSERIAL" -----\n"); - for(sl = sl0, i = 16; sl && i--; sl = sl->next) { - ADD2LOG(" %s", sl->str); - } - ADD2LOG("----- "PROC_DRIVER_MACSERIAL" end -----\n"); - } - } -#endif /* defined(__PPC__) */ - - - free_str_list(sl0); -} - -serial_t *add_serial_entry(serial_t **ser, serial_t *new_ser) -{ - while(*ser) ser = &(*ser)->next; - return *ser = new_ser; -} - -void dump_serial_data(hd_data_t *hd_data) -{ - serial_t *ser; - - ADD2LOG("----- serial info -----\n"); - for(ser = hd_data->serial; ser; ser = ser->next) { - ADD2LOG( - " uart %s, line %d, port 0x%03x, irq %d, baud %d\n", - ser->name, ser->line, ser->port, ser->irq, ser->baud - ); - } - ADD2LOG("----- serial info end -----\n"); -} - diff --git a/src/hwinfo/src/hd/serial.h b/src/hwinfo/src/hd/serial.h deleted file mode 100644 index 1b59242747..0000000000 --- a/src/hwinfo/src/hd/serial.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_serial(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/smbios.c b/src/hwinfo/src/hd/smbios.c deleted file mode 100644 index 72715078bc..0000000000 --- a/src/hwinfo/src/hd/smbios.c +++ /dev/null @@ -1,1662 +0,0 @@ -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "smbios.h" - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -enum sm_map_type { sm_map_str, sm_map_num2str }; - -typedef struct { unsigned num; char *str; } sm_num2str_t; - -typedef struct { - enum sm_map_type type; - unsigned len; - union { - char **str; - sm_num2str_t *num2str; - } list; -} sm_str_map_t; - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -static char *get_string(str_list_t *sl, int index); -static void smbios_bitmap_print(FILE *f, hd_bitmap_t *hbm, char *label, int style); -static void smbios_id_print(FILE *f, hd_id_t *hid, char *label); -static void smbios_str_print(FILE *f, char *str, char *label); -static void smbios_id2str(hd_id_t *hid, sm_str_map_t *map, unsigned def); -static void smbios_bitmap2str(hd_bitmap_t *hbm, sm_str_map_t *map); - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#define SMBIOS_PRINT_ID(a, b) smbios_id_print(f, &sm->a, b) -#define SMBIOS_PRINT_STR(a, b) smbios_str_print(f, sm->a, b) -#define SMBIOS_PRINT_BITMAP_SHORT(a, b) smbios_bitmap_print(f, &sm->a, b, 0) -#define SMBIOS_PRINT_BITMAP_LONG(a, b) smbios_bitmap_print(f, &sm->a, b, 1) - -#define SMBIOS_DEF_MAP(a) \ - static sm_str_map_t a = { \ - sizeof *a ## _ == sizeof (sm_num2str_t) ? sm_map_num2str : sm_map_str, \ - sizeof a ## _ / sizeof *a ## _, \ - { (void *) a ## _ } \ - }; - -/* ptr is (unsigned char *) */ -#define READ_MEM16(ptr) ((ptr)[0] + ((ptr)[1] << 8)) -#define READ_MEM32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) -#define READ_MEM64(ptr) (READ_MEM32(ptr) + ((uint64_t) READ_MEM32(ptr + 4) << 32)) - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -static sm_num2str_t smbios_bios_feature_[] = { - { 4, "ISA supported" }, - { 5, "MCA supported" }, - { 6, "EISA supported" }, - { 7, "PCI supported" }, - { 8, "PCMCIA supported" }, - { 9, "PnP supported" }, - { 10, "APM supported" }, - { 11, "BIOS flashable" }, - { 12, "BIOS shadowing allowed" }, - { 13, "VL-VESA supported" }, - { 14, "ESCD supported" }, - { 15, "CD boot supported" }, - { 16, "Selectable boot supported" }, - { 17, "BIOS ROM socketed" }, - { 18, "PCMCIA boot supported" }, - { 19, "EDD spec supported" }, - { 20, "1.2MB NEC 9800 Japanese Floppy supported" }, - { 21, "1.2MB Toshiba Japanese Floppy supported" }, - { 22, "360kB Floppy supported" }, - { 23, "1.2MB Floppy supported" }, - { 24, "720kB Floppy supported" }, - { 25, "2.88MB Floppy supported" }, - { 26, "Print Screen supported" }, - { 27, "8042 Keyboard Services supported" }, - { 28, "Serial Services supported" }, - { 29, "Printer Services supported" }, - { 30, "CGA/Mono Video supported" }, - { 31, "NEC PC-98" }, - { 64 + 0, "ACPI supported" }, - { 64 + 1, "USB Legacy supported" }, - { 64 + 2, "AGP supported" }, - { 64 + 3, "I2O boot supported" }, - { 64 + 4, "LS-120 boot supported" }, - { 64 + 5, "ATAPI ZIP boot supported" }, - { 64 + 6, "IEEE1394 boot supported" }, - { 64 + 7, "Smart Battery supported" }, - { 64 + 8, "BIOS Boot Spec supported" }, - { 64 + 9, "F12 Network boot supported" } -}; -SMBIOS_DEF_MAP(smbios_bios_feature); - - -static char *smbios_system_wakeups_[] = { - "Reserved", "Other", "Unknown", "APM Timer", - "Modem Ring", "LAN Remote", "Power Switch", "PCI PME#", - "AC Power Restored" -}; -SMBIOS_DEF_MAP(smbios_system_wakeups); - - -static char *smbios_board_feature_[] = { - "Hosting Board", "Needs One Daughter Board", "Removable", "Replaceable", - "Hot Swappable" -}; -SMBIOS_DEF_MAP(smbios_board_feature); - - -static char *smbios_board_types_[] = { - NULL, "Other", "Unknown", "Server Blade", - "Connectivity Switch", "System Management Module", "Processor Module", "I/O Module", - "Memory Module", "Daughter Board", "Motherboard", "Processor/Memory Module", - "Processor/IO Module", "Interconnect Board" -}; -SMBIOS_DEF_MAP(smbios_board_types); - - -static char *smbios_chassis_types_[] = { - NULL, "Other", "Unknown", "Desktop", - "Low Profile Desktop", "Pizza Box", "Mini Tower", "Tower", - "Portable", "LapTop", "Notebook", "Hand Held", - "Docking Station", "All in One", "Sub Notebook", "Space Saving", - "Lunch Box", "Main Server Chassis", "Expansion Chassis", "SubChassis", - "Bus Expansion Chassis", "Peripheral Chassis", "RAID Chassis", "Rack Mount Chassis", - "Sealed-case PC", "Multi-System Chassis" -}; -SMBIOS_DEF_MAP(smbios_chassis_types); - - -static char *smbios_chassis_states_[] = { - NULL, "Other", "Unknown", "Safe", - "Warning", "Critical", "Non-recoverable" -}; -SMBIOS_DEF_MAP(smbios_chassis_states); - - -static char *smbios_chassis_sec_states_[] = { - NULL, "Other", "Unknown", "None", - "External interface locked out", "External interface enabled" -}; -SMBIOS_DEF_MAP(smbios_chassis_sec_states); - - -static char *smbios_proc_upgrades_[] = { - NULL, "Other", "Unknown", "Daughter Board", - "ZIF Socket", "Replaceable Piggy Back", "None", "LIF Socket", - "Slot 1", "Slot 2", "370-Pin Socket", "Slot A", - "Slot M", "Socket 423", "Socket A (Socket 462)", "Socket 478", - "Socket 754", "Socket 940" -}; -SMBIOS_DEF_MAP(smbios_proc_upgrades); - - -static char *smbios_proc_cpu_status_[8] = { - "Unknown", "Enabled", "Disabled by User", "Disabled by BIOS", - "Idle", "Reserved", "Reserved", "Other" -}; -SMBIOS_DEF_MAP(smbios_proc_cpu_status); - - -static char *smbios_proc_types_[] = { - NULL, "Other", "Unknown", "CPU", - "Math", "DSP", "Video" -}; -SMBIOS_DEF_MAP(smbios_proc_types); - - -static sm_num2str_t smbios_proc_families_[] = { - { 0x00, NULL }, - { 0x01, "Other" }, - { 0x02, "Unknown" }, - { 0x03, "8086" }, - { 0x04, "80286" }, - { 0x05, "Intel386" }, - { 0x06, "Intel486" }, - { 0x07, "8087" }, - { 0x08, "80287" }, - { 0x09, "80387" }, - { 0x0a, "80487" }, - { 0x0b, "Pentium" }, - { 0x0c, "Pentium Pro" }, - { 0x0d, "Pentium II" }, - { 0x0e, "Pentium MMX" }, - { 0x0f, "Celeron" }, - { 0x10, "Pentium II Xeon" }, - { 0x11, "Pentium III" }, - { 0x12, "M1" }, - { 0x13, "M2" }, - { 0x18, "Duron" }, - { 0x19, "K5" }, - { 0x1a, "K6" }, - { 0x1b, "K6-2" }, - { 0x1c, "K6-3" }, - { 0x1d, "Athlon" }, - { 0x1e, "AMD2900" }, - { 0x1f, "K6-2+" }, - { 0x78, "Crusoe TM5000" }, - { 0x79, "Crusoe TM3000" }, - { 0x82, "Itanium" }, - { 0x83, "Athlon 64" }, - { 0x84, "Opteron Processor" }, - { 0xb0, "Pentium III Xeon" }, - { 0xb1, "Pentium III with SpeedStep" }, - { 0xb2, "Pentium 4" }, - { 0xb3, "Xeon" }, - { 0xb4, "AS400" }, - { 0xb5, "Xeon MP" }, - { 0xb6, "Athlon XP" }, - { 0xb7, "Athlon MP" }, - { 0xb8, "Itanium 2" } -}; -SMBIOS_DEF_MAP(smbios_proc_families); - - -static char *smbios_cache_mode_[] = { - "Write Through", "Write Back", "Varies with Memory Address", "Unknown" -}; -SMBIOS_DEF_MAP(smbios_cache_mode); - - -static char *smbios_cache_location_[] = { - "Internal", "External", "Reserved", "Unknown" -}; -SMBIOS_DEF_MAP(smbios_cache_location); - - -static char *smbios_cache_ecc_[] = { - NULL, "Other", "Unknown", "None", - "Parity", "Single-bit", "Multi-bit", "CRC" -}; -SMBIOS_DEF_MAP(smbios_cache_ecc); -#define smbios_memarray_ecc smbios_cache_ecc - - -static char *smbios_cache_type_[] = { - NULL, "Other", "Unknown", "Instruction", - "Data", "Unified" -}; -SMBIOS_DEF_MAP(smbios_cache_type); - - -static char *smbios_cache_assoc_[] = { - NULL, "Other", "Unknown", "Direct Mapped", - "2-way Set-Associative", "4-way Set-Associative", "Fully Associative", "8-way Set-Associative", - "16-way Set-Associative" -}; -SMBIOS_DEF_MAP(smbios_cache_assoc); - - -static char *smbios_cache_sram_[] = { - "Other", "Unknown", "Non-Burst", "Burst", - "Pipeline Burst", "Synchronous", "Asynchronous" -}; -SMBIOS_DEF_MAP(smbios_cache_sram); - - -static sm_num2str_t smbios_connect_conn_type_[] = { - { 0x00, NULL }, - { 0x01, "Centronics" }, - { 0x02, "Mini Centronics" }, - { 0x03, "Proprietary" }, - { 0x04, "DB-25 pin male" }, - { 0x05, "DB-25 pin female" }, - { 0x06, "DB-15 pin male" }, - { 0x07, "DB-15 pin female" }, - { 0x08, "DB-9 pin male" }, - { 0x09, "DB-9 pin female" }, - { 0x0a, "RJ-11" }, - { 0x0b, "RJ-45" }, - { 0x0c, "50 Pin MiniSCSI" }, - { 0x0d, "Mini-DIN" }, - { 0x0e, "Micro-DIN" }, - { 0x0f, "PS/2" }, - { 0x10, "Infrared" }, - { 0x11, "HP-HIL" }, - { 0x12, "Access Bus [USB]" }, - { 0x13, "SSA SCSI" }, - { 0x14, "Circular DIN-8 male" }, - { 0x15, "Circular DIN-8 female" }, - { 0x16, "On Board IDE" }, - { 0x17, "On Board Floppy" }, - { 0x18, "9 Pin Dual Inline [pin 10 cut]" }, - { 0x19, "25 Pin Dual Inline [pin 26 cut]" }, - { 0x1a, "50 Pin Dual Inline" }, - { 0x1b, "68 Pin Dual Inline" }, - { 0x1c, "On Board Sound Input from CD-ROM" }, - { 0x1d, "Mini-Centronics Type-14" }, - { 0x1e, "Mini-Centronics Type-26" }, - { 0x1f, "Mini-jack [headphones]" }, - { 0x20, "BNC" }, - { 0x21, "1394" }, - { 0xa0, "PC-98" }, - { 0xa1, "PC-98Hireso" }, - { 0xa2, "PC-H98" }, - { 0xa3, "PC-98Note" }, - { 0xa4, "PC-98Full" }, - { 0xff, "Other" } -}; -SMBIOS_DEF_MAP(smbios_connect_conn_type); - - -static sm_num2str_t smbios_connect_port_type_[] = { - { 0x00, NULL }, - { 0x01, "Parallel Port XT/AT Compatible" }, - { 0x02, "Parallel Port PS/2" }, - { 0x03, "Parallel Port ECP" }, - { 0x04, "Parallel Port EPP" }, - { 0x05, "Parallel Port ECP/EPP" }, - { 0x06, "Serial Port XT/AT Compatible" }, - { 0x07, "Serial Port 16450 Compatible" }, - { 0x08, "Serial Port 16550 Compatible" }, - { 0x09, "Serial Port 16550A Compatible" }, - { 0x0a, "SCSI Port" }, - { 0x0b, "MIDI Port" }, - { 0x0c, "Joy Stick Port" }, - { 0x0d, "Keyboard Port" }, - { 0x0e, "Mouse Port" }, - { 0x0f, "SSA SCSI" }, - { 0x10, "USB" }, - { 0x11, "FireWire [IEEE P1394]" }, - { 0x12, "PCMCIA Type I" }, - { 0x13, "PCMCIA Type II" }, - { 0x14, "PCMCIA Type III" }, - { 0x15, "Cardbus" }, - { 0x16, "Access Bus Port" }, - { 0x17, "SCSI II" }, - { 0x18, "SCSI Wide" }, - { 0x19, "PC-98" }, - { 0x1a, "PC-98-Hireso" }, - { 0x1b, "PC-H98" }, - { 0x1c, "Video Port" }, - { 0x1d, "Audio Port" }, - { 0x1e, "Modem Port" }, - { 0x1f, "Network Port" }, - { 0xa0, "8251 Compatible" }, - { 0xa1, "8251 FIFO Compatible" }, - { 0xff, "Other" } -}; -SMBIOS_DEF_MAP(smbios_connect_port_type); - - -static sm_num2str_t smbios_slot_type_[] = { - { 0x00, NULL }, - { 0x01, "Other" }, - { 0x02, "Unknown" }, - { 0x03, "ISA" }, - { 0x04, "MCA" }, - { 0x05, "EISA" }, - { 0x06, "PCI" }, - { 0x07, "PC Card [PCMCIA]" }, - { 0x08, "VL-VESA" }, - { 0x09, "Proprietary" }, - { 0x0a, "Processor Card" }, - { 0x0b, "Proprietary Memory Card" }, - { 0x0c, "I/O Riser Card" }, - { 0x0d, "NuBus" }, - { 0x0e, "PCI - 66MHz Capable" }, - { 0x0f, "AGP" }, - { 0x10, "AGP 2X" }, - { 0x11, "AGP 4X" }, - { 0x12, "PCI-X" }, - { 0x13, "AGP 8X" }, - { 0xa0, "PC-98/C20" }, - { 0xa1, "PC-98/C24" }, - { 0xa2, "PC-98/E" }, - { 0xa3, "PC-98/Local Bus" }, - { 0xa4, "PC-98/Card" } -}; -SMBIOS_DEF_MAP(smbios_slot_type); - - -static char *smbios_slot_bus_width_[] = { - NULL, "Other", "Unknown", "8 bit", - "16 bit", "32 bit", "64 bit", "128 bit" -}; -SMBIOS_DEF_MAP(smbios_slot_bus_width); - - -static char *smbios_slot_usage_[] = { - NULL, "Other", "Unknown", "Available", - "In Use" -}; -SMBIOS_DEF_MAP(smbios_slot_usage); - - -static char *smbios_slot_length_[] = { - NULL, "Other", "Unknown", "Short", - "Long" -}; -SMBIOS_DEF_MAP(smbios_slot_length); - - -static char *smbios_slot_feature_[] = { - "Unknown", "5.0 V", "3.3 V", "Shared", - "PC Card-16", "CardBus", "Zoom Video", "Modem Ring Resume", - "PME#", "Hot-Plug" -}; -SMBIOS_DEF_MAP(smbios_slot_feature); - - -static char *smbios_onboard_type_[] = { - "Other", "Other", "Unknown", "Video", - "SCSI Controller", "Ethernet", "Token Ring", "Sound" -}; -SMBIOS_DEF_MAP(smbios_onboard_type); - - -static sm_num2str_t smbios_memarray_location_[] = { - { 0x00, NULL }, - { 0x01, "Other" }, - { 0x02, "Unknown" }, - { 0x03, "Motherboard" }, - { 0x04, "ISA add-on card" }, - { 0x05, "EISA add-on card" }, - { 0x06, "PCI add-on card" }, - { 0x07, "MCA add-on card" }, - { 0x08, "PCMCIA add-on card" }, - { 0x09, "Proprietary add-on card" }, - { 0x0a, "NuBus" }, - { 0xa0, "PC-98/C20 add-on card" }, - { 0xa1, "PC-98/C24 add-on card" }, - { 0xa2, "PC-98/E add-on card" }, - { 0xa3, "PC-98/Local bus add-on card" } -}; -SMBIOS_DEF_MAP(smbios_memarray_location); - - -static char *smbios_memarray_use_[] = { - NULL, "Other", "Unknown", "System memory", - "Video memory", "Flash memory", "Non-volatile RAM", "Cache memory" -}; -SMBIOS_DEF_MAP(smbios_memarray_use); - - -static char *smbios_mouse_type_[] = { - NULL, "Other", "Unknown", "Mouse", - "Track Ball", "Track Point", "Glide Point", "Touch Pad", - "Touch Screen", "Optical Sensor" -}; -SMBIOS_DEF_MAP(smbios_mouse_type); - - -static sm_num2str_t smbios_mouse_interface_[] = { - { 0x00, NULL }, - { 0x01, "Other" }, - { 0x02, "Unknown" }, - { 0x03, "Serial" }, - { 0x04, "PS/2" }, - { 0x05, "Infrared" }, - { 0x06, "HP-HIL" }, - { 0x07, "Bus Mouse" }, - { 0x08, "ADB" }, - { 0xa0, "Bus mouse DB-9" }, - { 0xa1, "Bus mouse micro-DIN" }, - { 0xa2, "USB" } -}; -SMBIOS_DEF_MAP(smbios_mouse_interface); - - -static char *smbios_memdevice_form_[] = { - NULL, "Other", "Unknown", "SIMM", - "SIP", "Chip", "DIP", "ZIP", - "Proprietary Card", "DIMM", "TSOP", "Row of Chips", - "RIMM", "SODIMM", "SRIMM" -}; -SMBIOS_DEF_MAP(smbios_memdevice_form); - - -static char *smbios_memdevice_type_[] = { - NULL, "Other", "Unknown", "DRAM", - "EDRAM", "VRAM", "SRAM", "RAM", - "ROM", "FLASH", "EEPROM", "FEPROM", - "EPROM", "CDRAM", "3DRAM", "SDRAM", - "SGRAM", "RDRAM", "DDR" -}; -SMBIOS_DEF_MAP(smbios_memdevice_type); - - -static char *smbios_memdevice_detail_[] = { - NULL, "Other", "Unknown", "Fast-paged", - "Static column", "Pseudo-static", "RAMBUS", "Synchronous", - "CMOS", "EDO", "Window DRAM", "Cache DRAM", - "Non-volatile" -}; -SMBIOS_DEF_MAP(smbios_memdevice_detail); - - -static char *smbios_memerror_type_[] = { - NULL, "Other", "Unknown", "OK", - "Bad read", "Parity error", "Single-bit error", "Double-bit error", - "Multi-bit error", "Nibble error", "Checksum error", "CRC error", - "Corrected single-bit error", "Corrected error", "Uncorrectable error" -}; -SMBIOS_DEF_MAP(smbios_memerror_type); - - -static char *smbios_memerror_granularity_[] = { - NULL, "Other", "Unknown", "Device level", - "Memory partition level" -}; -SMBIOS_DEF_MAP(smbios_memerror_granularity); - - -static char *smbios_memerror_operation_[] = { - NULL, "Other", "Unknown", "Read", - "Write", "Partial write" -}; -SMBIOS_DEF_MAP(smbios_memerror_operation); - - -static char *smbios_secure_state_[] = { - "Disabled", "Enabled", "Not Implemented", "Unknown" -}; -SMBIOS_DEF_MAP(smbios_secure_state); - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -/* - * return the index'th string from sl - */ -char *get_string(str_list_t *sl, int index) -{ - if(!sl || !index) return NULL; - - for(; sl; sl = sl->next, index--) { - if(index == 1) return new_str(sl->str && *sl->str ? sl->str : NULL); - } - - return NULL; -} - - -/* - * Print a bitmap. - * Style: 0: short, 1: long. - */ -void smbios_bitmap_print(FILE *f, hd_bitmap_t *hbm, char *label, int style) -{ - unsigned u; - str_list_t *sl; - - if(hbm->not_empty) { - fprintf(f, " %s: 0x", label); - for(u = (hbm->bits + 7) >> 3; u; u--) { - fprintf(f, "%02x", hbm->bitmap[u - 1]); - } - fprintf(f, style ? "\n" : " ("); - for(sl = hbm->str; sl; sl = sl->next) { - if(style) { - fprintf(f, " %s\n", sl->str); - } - else { - fprintf(f, "%s%s", sl->str, sl->next ? ", " : ""); - } - } - if(!style) fprintf(f, ")\n"); - } -} - - -/* - * Print id/name pair. - */ -void smbios_id_print(FILE *f, hd_id_t *hid, char *label) -{ - if(hid->name) fprintf(f, " %s: 0x%02x (%s)\n", label, hid->id, hid->name); -} - - -/* - * Print a string. - */ -void smbios_str_print(FILE *f, char *str, char *label) -{ - if(str) fprintf(f, " %s: \"%s\"\n", label, str); -} - - -/* - * Look up the name that corresponds to the id (if any). - */ -void smbios_id2str(hd_id_t *hid, sm_str_map_t *map, unsigned def) -{ - unsigned u; - char *str, *def_str; - - if(map->type == sm_map_str) { - str = map->list.str[hid->id < map->len ? hid->id : def]; - if(hid->id && !str) str = map->list.str[def]; - } - else { - for(str = def_str = NULL, u = 0; u < map->len; u++) { - if(map->list.num2str[u].num == hid->id) str = map->list.num2str[u].str; - if(str) break; - if(map->list.num2str[u].num == def) def_str = map->list.num2str[u].str; - } - if(hid->id && !str) str = def_str; - } - hid->name = new_str(str); -} - - -/* - * Convert a bitmap into a list of strings. (That is, interpret the - * bitmap.) - */ -void smbios_bitmap2str(hd_bitmap_t *hbm, sm_str_map_t *map) -{ - unsigned u, bit; - char *str; - - for(u = 0; u < (hbm->bits + 7) >> 3; u++) { - if(hbm->bitmap[u]) { - hbm->not_empty = 1; - break; - } - } - - if(map->type == sm_map_str) { - for(u = 0; u < map->len; u++) { - if(u < hbm->bits && hbm->bitmap[u >> 3] & (1 << (u & 7))) { - str = map->list.str[u]; - if(str) add_str_list(&hbm->str, str); - } - } - } - else { - for(u = 0; u < map->len; u++) { - bit = map->list.num2str[u].num; - if(bit < hbm->bits && hbm->bitmap[bit >> 3] & (1 << (bit & 7))) { - str = map->list.num2str[u].str; - if(str) add_str_list(&hbm->str, str); - } - } - } -} - - -/* - * Interpret raw smbios data. - */ -void smbios_parse(hd_data_t *hd_data) -{ - hd_smbios_t *sm; - str_list_t *sl_any, *sl; - int cnt, data_len; - unsigned char *sm_data; - unsigned u, v; - - if(!hd_data->smbios) return; - - for(cnt = 0, sm = hd_data->smbios; sm; sm = sm->next, cnt++) { - sm_data = sm->any.data; - data_len = sm->any.data_len; - sl_any = sm->any.strings; - switch(sm->any.type) { - case sm_biosinfo: - if(data_len >= 0x12) { - sm->biosinfo.start = READ_MEM16(sm_data + 6) << 4; - sm->biosinfo.rom_size = (sm_data[9] + 1) << 16; - sm->biosinfo.vendor = get_string(sl_any, sm_data[4]); - sm->biosinfo.version = get_string(sl_any, sm_data[5]); - sm->biosinfo.date = get_string(sl_any, sm_data[8]); - memcpy(sm->biosinfo.feature.bitmap, sm_data + 0xa, 8); - } - if(data_len >= 0x13) { - sm->biosinfo.feature.bitmap[8] = sm_data[0x12]; - } - if(data_len >= 0x14) { - sm->biosinfo.feature.bitmap[9] = sm_data[0x13]; - } - sm->biosinfo.feature.bits = 80; - smbios_bitmap2str(&sm->biosinfo.feature, &smbios_bios_feature); - break; - - case sm_sysinfo: - if(data_len >= 8) { - sm->sysinfo.manuf = get_string(sl_any, sm_data[4]); - sm->sysinfo.product = get_string(sl_any, sm_data[5]); - sm->sysinfo.version = get_string(sl_any, sm_data[6]); - sm->sysinfo.serial = get_string(sl_any, sm_data[7]); - } - if(data_len >= 0x19) { - memcpy(sm->sysinfo.uuid, sm_data + 8, 16); - sm->sysinfo.wake_up.id = sm_data[0x18]; - smbios_id2str(&sm->sysinfo.wake_up, &smbios_system_wakeups, 1); - } - break; - - case sm_boardinfo: - if(data_len >= 8) { - sm->boardinfo.manuf = get_string(sl_any, sm_data[4]); - sm->boardinfo.product = get_string(sl_any, sm_data[5]); - sm->boardinfo.version = get_string(sl_any, sm_data[6]); - sm->boardinfo.serial = get_string(sl_any, sm_data[7]); - } - if(data_len >= 9) { - sm->boardinfo.asset = get_string(sl_any, sm_data[8]); - } - if(data_len >= 0x0e) { - sm->boardinfo.feature.bitmap[0] = sm_data[9]; - sm->boardinfo.feature.bits = 8; - smbios_bitmap2str(&sm->boardinfo.feature, &smbios_board_feature); - sm->boardinfo.location = get_string(sl_any, sm_data[0x0a]); - sm->boardinfo.chassis = READ_MEM16(sm_data + 0x0b); - sm->boardinfo.board_type.id = sm_data[0x0d]; - smbios_id2str(&sm->boardinfo.board_type, &smbios_board_types, 1); - } - if(data_len >= 0x0f) { - u = sm_data[0x0e]; - if(u && data_len >= 0x0f + 2 * u) { - sm->boardinfo.objects_len = u; - sm->boardinfo.objects = new_mem(u * sizeof *sm->boardinfo.objects); - for(u = 0; u < sm->boardinfo.objects_len; u++) { - sm->boardinfo.objects[u] = READ_MEM16(sm_data + 0x0f + 2 * u); - } - } - } - break; - - case sm_chassis: - if(data_len >= 6) { - sm->chassis.manuf = get_string(sl_any, sm_data[4]); - sm->chassis.lock = sm_data[5] >> 7; - sm->chassis.ch_type.id = sm_data[5] & 0x7f; - smbios_id2str(&sm->chassis.ch_type, &smbios_chassis_types, 1); - } - if(data_len >= 9) { - sm->chassis.version = get_string(sl_any, sm_data[6]); - sm->chassis.serial = get_string(sl_any, sm_data[7]); - sm->chassis.asset = get_string(sl_any, sm_data[8]); - } - if(data_len >= 0x0d) { - sm->chassis.bootup.id = sm_data[9]; - sm->chassis.power.id = sm_data[0x0a]; - sm->chassis.thermal.id = sm_data[0x0b]; - sm->chassis.security.id = sm_data[0x0c]; - smbios_id2str(&sm->chassis.bootup, &smbios_chassis_states, 1); - smbios_id2str(&sm->chassis.power, &smbios_chassis_states, 1); - smbios_id2str(&sm->chassis.thermal, &smbios_chassis_states, 1); - smbios_id2str(&sm->chassis.security, &smbios_chassis_sec_states, 1); - } - if(data_len >= 0x11) { - sm->chassis.oem = READ_MEM32(sm_data + 0x0d); - } - break; - - case sm_processor: - if(data_len >= 0x1a) { - sm->processor.socket = get_string(sl_any, sm_data[4]); - sm->processor.manuf = get_string(sl_any, sm_data[7]); - sm->processor.version = get_string(sl_any, sm_data[0x10]); - sm->processor.voltage = sm_data[0x11]; - if(sm->processor.voltage & 0x80) { - sm->processor.voltage &= 0x7f; - } - else { - switch(sm->processor.voltage) { - case 0x01: - sm->processor.voltage = 50; - break; - case 0x02: - sm->processor.voltage = 33; - break; - case 0x04: - sm->processor.voltage = 29; - break; - default: - sm->processor.voltage = 0; - } - } - sm->processor.pr_type.id = sm_data[5]; - sm->processor.family.id = sm_data[6]; - sm->processor.cpu_id = READ_MEM64(sm_data + 8); - sm->processor.ext_clock = READ_MEM16(sm_data + 0x12); - sm->processor.max_speed = READ_MEM16(sm_data + 0x14); - sm->processor.current_speed = READ_MEM16(sm_data + 0x16); - sm->processor.sock_status = (sm_data[0x18] >> 6) & 1; - sm->processor.cpu_status.id = sm_data[0x18] & 7; - sm->processor.upgrade.id = sm_data[0x19]; - smbios_id2str(&sm->processor.pr_type, &smbios_proc_types, 1); - smbios_id2str(&sm->processor.family, &smbios_proc_families, 1); - smbios_id2str(&sm->processor.cpu_status, &smbios_proc_cpu_status, 0); - smbios_id2str(&sm->processor.upgrade, &smbios_proc_upgrades, 1); - } - if(data_len >= 0x20) { - sm->processor.l1_cache = READ_MEM16(sm_data + 0x1a); - sm->processor.l2_cache = READ_MEM16(sm_data + 0x1c); - sm->processor.l3_cache = READ_MEM16(sm_data + 0x1e); - if(sm->processor.l1_cache == 0xffff) sm->processor.l1_cache = 0; - if(sm->processor.l2_cache == 0xffff) sm->processor.l2_cache = 0; - if(sm->processor.l3_cache == 0xffff) sm->processor.l3_cache = 0; - } - if(data_len >= 0x21) { - sm->processor.serial = get_string(sl_any, sm_data[0x20]); - } - if(data_len >= 0x22) { - sm->processor.asset = get_string(sl_any, sm_data[0x21]); - sm->processor.part = get_string(sl_any, sm_data[0x22]); - } - break; - - case sm_cache: - if(data_len >= 0x0f) { - sm->cache.socket = get_string(sl_any, sm_data[4]); - u = READ_MEM16(sm_data + 7); - if((u & 0x8000)) u = (u & 0x7fff) << 6; - sm->cache.max_size = u; - u = READ_MEM16(sm_data + 9); - if((u & 0x8000)) u = (u & 0x7fff) << 6; - sm->cache.current_size = u; - u = READ_MEM16(sm_data + 5); - sm->cache.mode.id = (u >> 8) & 3; - sm->cache.state = (u >> 7) & 1; - sm->cache.location.id = (u >> 5) & 3; - sm->cache.socketed = (u >> 3) & 1; - sm->cache.level = u & 7; - smbios_id2str(&sm->cache.mode, &smbios_cache_mode, 0); - smbios_id2str(&sm->cache.location, &smbios_cache_location, 0); - sm->cache.supp_sram.bitmap[0] = sm_data[0x0b]; - sm->cache.supp_sram.bitmap[1] = sm_data[0x0c]; - sm->cache.supp_sram.bits = 16; - sm->cache.sram.bitmap[0] = sm_data[0x0d]; - sm->cache.sram.bitmap[1] = sm_data[0x0e]; - sm->cache.sram.bits = 16; - smbios_bitmap2str(&sm->cache.supp_sram, &smbios_cache_sram); - smbios_bitmap2str(&sm->cache.sram, &smbios_cache_sram); - } - if(data_len >= 0x13) { - sm->cache.speed = sm_data[0x0f]; - sm->cache.ecc.id = sm_data[0x10]; - sm->cache.cache_type.id = sm_data[0x11]; - sm->cache.assoc.id = sm_data[0x12]; - smbios_id2str(&sm->cache.ecc, &smbios_cache_ecc, 1); - smbios_id2str(&sm->cache.cache_type, &smbios_cache_type, 1); - smbios_id2str(&sm->cache.assoc, &smbios_cache_assoc, 1); - } - break; - - case sm_connect: - if(data_len >= 9) { - sm->connect.i_des = get_string(sl_any, sm_data[4]); - sm->connect.x_des = get_string(sl_any, sm_data[6]); - sm->connect.i_type.id = sm_data[5]; - sm->connect.x_type.id = sm_data[7]; - sm->connect.port_type.id = sm_data[8]; - smbios_id2str(&sm->connect.port_type, &smbios_connect_conn_type, 0xff); - smbios_id2str(&sm->connect.x_type, &smbios_connect_conn_type, 0xff); - smbios_id2str(&sm->connect.port_type, &smbios_connect_port_type, 0xff); - } - break; - - case sm_slot: - if(data_len >= 0x0c) { - sm->slot.desig = get_string(sl_any, sm_data[4]); - sm->slot.slot_type.id = sm_data[5]; - sm->slot.bus_width.id = sm_data[6]; - sm->slot.usage.id = sm_data[7]; - sm->slot.length.id = sm_data[8]; - sm->slot.id = READ_MEM16(sm_data + 9); - sm->slot.feature.bitmap[0] = sm_data[0x0b]; - } - if(data_len >= 0x0d) { - sm->slot.feature.bitmap[1] = sm_data[0x0c]; - } - sm->slot.feature.bits = 16; - smbios_id2str(&sm->slot.slot_type, &smbios_slot_type, 1); - smbios_id2str(&sm->slot.bus_width, &smbios_slot_bus_width, 1); - smbios_id2str(&sm->slot.usage, &smbios_slot_usage, 1); - smbios_id2str(&sm->slot.length, &smbios_slot_length, 1); - smbios_bitmap2str(&sm->slot.feature, &smbios_slot_feature); - break; - - case sm_onboard: - if(data_len >= 4) { - u = data_len - 4; - if(!(u & 1)) { - u >>= 1; - if(u) { - sm->onboard.dev_len = u; - sm->onboard.dev = new_mem(u * sizeof *sm->onboard.dev); - } - for(u = 0; u < sm->onboard.dev_len; u++) { - sm->onboard.dev[u].name = get_string(sl_any, sm_data[4 + (u << 1) + 1]); - v = sm_data[4 + (u << 1)]; - sm->onboard.dev[u].status = v >> 7; - sm->onboard.dev[u].type.id = v & 0x7f; - smbios_id2str(&sm->onboard.dev[u].type, &smbios_onboard_type, 1); - } - } - } - break; - - case sm_oem: - for(sl = sl_any; sl; sl = sl->next) { - if(sl->str && *sl->str) add_str_list(&sm->oem.oem_strings, sl->str); - } - break; - - case sm_config: - for(sl = sl_any; sl; sl = sl->next) { - if(sl->str && *sl->str) add_str_list(&sm->config.options, sl->str); - } - break; - - case sm_lang: - if(data_len >= 0x16) { - sm->lang.current = get_string(sl_any, sm_data[0x15]); - } - break; - - case sm_group: - if(data_len >= 5) { - sm->group.name = get_string(sl_any, sm_data[4]); - u = (data_len - 5) / 3; - if(u) { - sm->group.items_len = u; - sm->group.item_handles = new_mem(u * sizeof *sm->group.item_handles); - for(u = 0; u < sm->group.items_len; u++) { - sm->group.item_handles[u] = READ_MEM16(sm_data + 6 + 3 * u); - } - } - } - break; - - case sm_memarray: - if(data_len >= 0x0f) { - sm->memarray.location.id = sm_data[4]; - sm->memarray.use.id = sm_data[5]; - sm->memarray.ecc.id = sm_data[6]; - sm->memarray.max_size = READ_MEM32(sm_data + 7); - if(sm->memarray.max_size == 0x80000000) sm->memarray.max_size = 0; - sm->memarray.error_handle = READ_MEM16(sm_data + 0x0b); - sm->memarray.slots = READ_MEM16(sm_data + 0x0d); - smbios_id2str(&sm->memarray.location, &smbios_memarray_location, 1); - smbios_id2str(&sm->memarray.use, &smbios_memarray_use, 1); - smbios_id2str(&sm->memarray.ecc, &smbios_memarray_ecc, 1); - } - break; - - case sm_memdevice: - if(data_len >= 0x15) { - sm->memdevice.array_handle = READ_MEM16(sm_data + 0x04); - sm->memdevice.error_handle = READ_MEM16(sm_data + 0x06); - sm->memdevice.eccbits = READ_MEM16(sm_data + 8); - sm->memdevice.width = READ_MEM16(sm_data + 0xa); - if(sm->memdevice.width == 0xffff) sm->memdevice.width = 0; - if(sm->memdevice.eccbits == 0xffff) sm->memdevice.eccbits = 0; - if(sm->memdevice.eccbits >= sm->memdevice.width) { - sm->memdevice.eccbits -= sm->memdevice.width; - } - else { - sm->memdevice.eccbits = 0; - } - sm->memdevice.size = READ_MEM16(sm_data + 0xc); - if(sm->memdevice.size == 0xffff) sm->memdevice.size = 0; - if((sm->memdevice.size & 0x8000)) { - sm->memdevice.size &= 0x7fff; - } - else { - sm->memdevice.size <<= 10; - } - sm->memdevice.form.id = sm_data[0xe]; - sm->memdevice.set = sm_data[0xf]; - sm->memdevice.location = get_string(sl_any, sm_data[0x10]); - sm->memdevice.bank = get_string(sl_any, sm_data[0x11]); - sm->memdevice.mem_type.id = sm_data[0x12]; - smbios_id2str(&sm->memdevice.form, &smbios_memdevice_form, 1); - smbios_id2str(&sm->memdevice.mem_type, &smbios_memdevice_type, 1); - sm->memdevice.type_detail.bitmap[0] = sm_data[0x13]; - sm->memdevice.type_detail.bitmap[1] = sm_data[0x14]; - sm->memdevice.type_detail.bits = 16; - smbios_bitmap2str(&sm->memdevice.type_detail, &smbios_memdevice_detail); - } - if(data_len >= 0x17) { - sm->memdevice.speed = READ_MEM16(sm_data + 0x15); - } - if(data_len >= 0x1b) { - sm->memdevice.manuf = get_string(sl_any, sm_data[0x17]); - sm->memdevice.serial = get_string(sl_any, sm_data[0x18]); - sm->memdevice.asset = get_string(sl_any, sm_data[0x19]); - sm->memdevice.part = get_string(sl_any, sm_data[0x1a]); - } - break; - - case sm_memerror: - if(data_len >= 0x17) { - sm->memerror.err_type.id = sm_data[4]; - sm->memerror.granularity.id = sm_data[5]; - sm->memerror.operation.id = sm_data[6]; - sm->memerror.syndrome = READ_MEM32(sm_data + 7); - sm->memerror.array_addr = READ_MEM32(sm_data + 0xb); - sm->memerror.device_addr = READ_MEM32(sm_data + 0xf); - sm->memerror.range = READ_MEM32(sm_data + 0x13); - smbios_id2str(&sm->memerror.err_type, &smbios_memerror_type, 1); - smbios_id2str(&sm->memerror.granularity, &smbios_memerror_granularity, 1); - smbios_id2str(&sm->memerror.operation, &smbios_memerror_operation, 1); - } - break; - - case sm_memarraymap: - if(data_len >= 0x0f) { - sm->memarraymap.start_addr = READ_MEM32(sm_data + 4); - sm->memarraymap.start_addr <<= 10; - sm->memarraymap.end_addr = 1 + READ_MEM32(sm_data + 8); - sm->memarraymap.end_addr <<= 10; - sm->memarraymap.array_handle = READ_MEM16(sm_data + 0xc); - sm->memarraymap.part_width = sm_data[0x0e]; - } - break; - - case sm_memdevicemap: - if(data_len >= 0x13) { - sm->memdevicemap.start_addr = READ_MEM32(sm_data + 4); - sm->memdevicemap.start_addr <<= 10; - sm->memdevicemap.end_addr = 1 + READ_MEM32(sm_data + 8); - sm->memdevicemap.end_addr <<= 10; - sm->memdevicemap.memdevice_handle = READ_MEM16(sm_data + 0xc); - sm->memdevicemap.arraymap_handle = READ_MEM16(sm_data + 0xe); - sm->memdevicemap.row_pos = sm_data[0x10]; - sm->memdevicemap.interleave_pos = sm_data[0x11]; - sm->memdevicemap.interleave_depth = sm_data[0x12]; - } - break; - - case sm_mouse: - if(data_len >= 7) { - sm->mouse.mtype.id = sm_data[4]; - sm->mouse.interface.id = sm_data[5]; - sm->mouse.buttons = sm_data[6]; - smbios_id2str(&sm->mouse.mtype, &smbios_mouse_type, 1); - smbios_id2str(&sm->mouse.interface, &smbios_mouse_interface, 1); - } - break; - - case sm_secure: - if(data_len >= 5) { - u = sm_data[4]; - sm->secure.power.id = u >> 6; - sm->secure.keyboard.id = (u >> 4) & 3; - sm->secure.admin.id = (u >> 2) & 3; - sm->secure.reset.id = u & 3; - smbios_id2str(&sm->secure.power, &smbios_secure_state, 3); - smbios_id2str(&sm->secure.keyboard, &smbios_secure_state, 3); - smbios_id2str(&sm->secure.admin, &smbios_secure_state, 3); - smbios_id2str(&sm->secure.reset, &smbios_secure_state, 3); - } - break; - - case sm_power: - if(data_len >= 9) { - sm->power.month = sm_data[4]; - sm->power.day = sm_data[5]; - sm->power.hour = sm_data[6]; - sm->power.minute = sm_data[7]; - sm->power.second = sm_data[8]; - } - break; - - case sm_mem64error: - if(data_len >= 0x1f) { - sm->mem64error.err_type.id = sm_data[4]; - sm->mem64error.granularity.id = sm_data[5]; - sm->mem64error.operation.id = sm_data[6]; - sm->mem64error.syndrome = READ_MEM32(sm_data + 7); - sm->mem64error.array_addr = READ_MEM64(sm_data + 0xb); - sm->mem64error.device_addr = READ_MEM64(sm_data + 0x13); - sm->mem64error.range = READ_MEM32(sm_data + 0x1b); - smbios_id2str(&sm->mem64error.err_type, &smbios_memerror_type, 1); - smbios_id2str(&sm->mem64error.granularity, &smbios_memerror_granularity, 1); - smbios_id2str(&sm->mem64error.operation, &smbios_memerror_operation, 1); - } - break; - - default: - break; - } - } -} - - -/* - * Note: new_sm is directly inserted into the list, so you *must* make sure - * that new_sm points to a malloc'ed pice of memory. - */ -hd_smbios_t *smbios_add_entry(hd_smbios_t **sm, hd_smbios_t *new_sm) -{ - while(*sm) sm = &(*sm)->next; - - return *sm = new_sm; -} - - -/* - * Free the memory allocated by a smbios list. - */ -hd_smbios_t *smbios_free(hd_smbios_t *sm) -{ - hd_smbios_t *next; - unsigned u; - - for(; sm; sm = next) { - next = sm->next; - - free_mem(sm->any.data); - free_str_list(sm->any.strings); - - switch(sm->any.type) { - case sm_biosinfo: - free_mem(sm->biosinfo.vendor); - free_mem(sm->biosinfo.version); - free_mem(sm->biosinfo.date); - free_str_list(sm->biosinfo.feature.str); - break; - - case sm_sysinfo: - free_mem(sm->sysinfo.manuf); - free_mem(sm->sysinfo.product); - free_mem(sm->sysinfo.version); - free_mem(sm->sysinfo.serial); - free_mem(sm->sysinfo.wake_up.name); - break; - - case sm_boardinfo: - free_mem(sm->boardinfo.manuf); - free_mem(sm->boardinfo.product); - free_mem(sm->boardinfo.version); - free_mem(sm->boardinfo.serial); - free_mem(sm->boardinfo.asset); - free_mem(sm->boardinfo.location); - free_mem(sm->boardinfo.board_type.name); - free_str_list(sm->boardinfo.feature.str); - free_mem(sm->boardinfo.objects); - break; - - case sm_chassis: - free_mem(sm->chassis.manuf); - free_mem(sm->chassis.version); - free_mem(sm->chassis.serial); - free_mem(sm->chassis.asset); - free_mem(sm->chassis.ch_type.name); - free_mem(sm->chassis.bootup.name); - free_mem(sm->chassis.power.name); - free_mem(sm->chassis.thermal.name); - free_mem(sm->chassis.security.name); - break; - - case sm_processor: - free_mem(sm->processor.socket); - free_mem(sm->processor.manuf); - free_mem(sm->processor.version); - free_mem(sm->processor.serial); - free_mem(sm->processor.asset); - free_mem(sm->processor.part); - free_mem(sm->processor.upgrade.name); - free_mem(sm->processor.pr_type.name); - free_mem(sm->processor.family.name); - free_mem(sm->processor.cpu_status.name); - break; - - case sm_cache: - free_mem(sm->cache.socket); - free_mem(sm->cache.mode.name); - free_mem(sm->cache.location.name); - free_mem(sm->cache.ecc.name); - free_mem(sm->cache.cache_type.name); - free_mem(sm->cache.assoc.name); - free_str_list(sm->cache.supp_sram.str); - free_str_list(sm->cache.sram.str); - break; - - case sm_connect: - free_mem(sm->connect.port_type.name); - free_mem(sm->connect.i_des); - free_mem(sm->connect.x_des); - free_mem(sm->connect.i_type.name); - free_mem(sm->connect.x_type.name); - break; - - case sm_slot: - free_mem(sm->slot.desig); - free_mem(sm->slot.slot_type.name); - free_mem(sm->slot.bus_width.name); - free_mem(sm->slot.usage.name); - free_mem(sm->slot.length.name); - free_str_list(sm->slot.feature.str); - break; - - case sm_onboard: - for(u = 0; u < sm->onboard.dev_len; u++) { - free_mem(sm->onboard.dev[u].name); - free_mem(sm->onboard.dev[u].type.name); - } - free_mem(sm->onboard.dev); - break; - - case sm_oem: - free_str_list(sm->oem.oem_strings); - break; - - case sm_config: - free_str_list(sm->config.options); - break; - - case sm_lang: - free_mem(sm->lang.current); - break; - - case sm_group: - free_mem(sm->group.name); - free_mem(sm->group.item_handles); - break; - - case sm_memarray: - free_mem(sm->memarray.location.name); - free_mem(sm->memarray.use.name); - free_mem(sm->memarray.ecc.name); - break; - - case sm_memdevice: - free_mem(sm->memdevice.location); - free_mem(sm->memdevice.bank); - free_mem(sm->memdevice.manuf); - free_mem(sm->memdevice.serial); - free_mem(sm->memdevice.asset); - free_mem(sm->memdevice.part); - free_mem(sm->memdevice.form.name); - free_mem(sm->memdevice.mem_type.name); - free_str_list(sm->memdevice.type_detail.str); - break; - - case sm_memerror: - free_mem(sm->memerror.err_type.name); - free_mem(sm->memerror.granularity.name); - free_mem(sm->memerror.operation.name); - break; - - case sm_mouse: - free_mem(sm->mouse.mtype.name); - free_mem(sm->mouse.interface.name); - break; - - case sm_secure: - free_mem(sm->secure.power.name); - free_mem(sm->secure.keyboard.name); - free_mem(sm->secure.admin.name); - free_mem(sm->secure.reset.name); - break; - - case sm_mem64error: - free_mem(sm->mem64error.err_type.name); - free_mem(sm->mem64error.granularity.name); - free_mem(sm->mem64error.operation.name); - break; - - default: - break; - } - - free_mem(sm); - } - - return NULL; -} - - -/* - * print SMBIOS entries - */ -void smbios_dump(hd_data_t *hd_data, FILE *f) -{ - hd_smbios_t *sm; - str_list_t *sl; - char c, *s; - unsigned u; - int i; - - if(!hd_data->smbios) return; - - for(sm = hd_data->smbios; sm; sm = sm->next) { - switch(sm->any.type) { - case sm_biosinfo: - fprintf(f, " BIOS Info: #%d\n", sm->any.handle); - if(sm->biosinfo.vendor) fprintf(f, " Vendor: \"%s\"\n", sm->biosinfo.vendor); - if(sm->biosinfo.version) fprintf(f, " Version: \"%s\"\n", sm->biosinfo.version); - if(sm->biosinfo.date) fprintf(f, " Date: \"%s\"\n", sm->biosinfo.date); - fprintf(f, " Start Address: 0x%05x\n", sm->biosinfo.start); - fprintf(f, " ROM Size: %d kB\n", sm->biosinfo.rom_size >> 10); - SMBIOS_PRINT_BITMAP_LONG(biosinfo.feature, "Features"); - break; - - case sm_sysinfo: - fprintf(f, " System Info: #%d\n", sm->any.handle); - if(sm->sysinfo.manuf) fprintf(f, " Manufacturer: \"%s\"\n", sm->sysinfo.manuf); - if(sm->sysinfo.product) fprintf(f, " Product: \"%s\"\n", sm->sysinfo.product); - if(sm->sysinfo.version) fprintf(f, " Version: \"%s\"\n", sm->sysinfo.version); - if(sm->sysinfo.serial) fprintf(f, " Serial: \"%s\"\n", sm->sysinfo.serial); - for(i = u = 0; (unsigned) i < sizeof sm->sysinfo.uuid / sizeof *sm->sysinfo.uuid; i++) { - u |= sm->sysinfo.uuid[i]; - } - fprintf(f, " UUID: "); - if(u == 0 || u == 0xff) { - fprintf(f, "undefined"); - if(u == 0xff) fprintf(f, ", but settable"); - } - else { - for(i = sizeof sm->sysinfo.uuid / sizeof *sm->sysinfo.uuid - 1; i >= 0; i--) { - fprintf(f, "%02x", sm->sysinfo.uuid[i]); - } - } - fprintf(f, "\n"); - SMBIOS_PRINT_ID(sysinfo.wake_up, "Wake-up"); - break; - - case sm_boardinfo: - fprintf(f, " Board Info: #%d\n", sm->any.handle); - if(sm->boardinfo.manuf) fprintf(f, " Manufacturer: \"%s\"\n", sm->boardinfo.manuf); - if(sm->boardinfo.product) fprintf(f, " Product: \"%s\"\n", sm->boardinfo.product); - if(sm->boardinfo.version) fprintf(f, " Version: \"%s\"\n", sm->boardinfo.version); - if(sm->boardinfo.serial) fprintf(f, " Serial: \"%s\"\n", sm->boardinfo.serial); - if(sm->boardinfo.asset) fprintf(f, " Asset Tag: \"%s\"\n", sm->boardinfo.asset); - SMBIOS_PRINT_ID(boardinfo.board_type, "Type"); - SMBIOS_PRINT_BITMAP_LONG(boardinfo.feature, "Features"); - if(sm->boardinfo.location) fprintf(f, " Location: \"%s\"\n", sm->boardinfo.location); - if(sm->boardinfo.chassis) fprintf(f, " Chassis: #%d\n", sm->boardinfo.chassis); - if(sm->boardinfo.objects_len) { - fprintf(f, " Contained Objects: "); - for(i = 0; i < sm->boardinfo.objects_len; i++) { - fprintf(f, "%s#%d", i ? ", " : "", sm->boardinfo.objects[i]); - } - fprintf(f, "\n"); - } - break; - - case sm_chassis: - fprintf(f, " Chassis Info: #%d\n", sm->any.handle); - if(sm->chassis.manuf) fprintf(f, " Manufacturer: \"%s\"\n", sm->chassis.manuf); - if(sm->chassis.version) fprintf(f, " Version: \"%s\"\n", sm->chassis.version); - if(sm->chassis.serial) fprintf(f, " Serial: \"%s\"\n", sm->chassis.serial); - if(sm->chassis.asset) fprintf(f, " Asset Tag: \"%s\"\n", sm->chassis.asset); - SMBIOS_PRINT_ID(chassis.ch_type, "Type"); - if(sm->chassis.lock) fprintf(f, " Lock: present\n"); - SMBIOS_PRINT_ID(chassis.bootup, "Bootup State"); - SMBIOS_PRINT_ID(chassis.power, "Power Supply State"); - SMBIOS_PRINT_ID(chassis.thermal, "Thermal State"); - SMBIOS_PRINT_ID(chassis.security, "Security Status"); - if(sm->chassis.oem) fprintf(f, " OEM Info: 0x%08x\n", sm->chassis.oem); - break; - - case sm_processor: - fprintf(f, " Processor Info: #%d\n", sm->any.handle); - SMBIOS_PRINT_STR(processor.socket, "Socket"); - SMBIOS_PRINT_ID(processor.upgrade, "Socket Type"); - fprintf(f, " Socket Status: %s\n", sm->processor.sock_status ? "Populated" : "Empty"); - SMBIOS_PRINT_ID(processor.pr_type, "Type"); - SMBIOS_PRINT_ID(processor.family, "Family"); - SMBIOS_PRINT_STR(processor.manuf, "Manufacturer"); - SMBIOS_PRINT_STR(processor.version, "Version"); - SMBIOS_PRINT_STR(processor.serial, "Serial"); - SMBIOS_PRINT_STR(processor.asset, "Asset Tag"); - SMBIOS_PRINT_STR(processor.part, "Part Number"); - if(sm->processor.cpu_id) { - fprintf(f, " Processor ID: 0x%016"PRIx64"\n", sm->processor.cpu_id); - } - SMBIOS_PRINT_ID(processor.cpu_status, "Status"); - if(sm->processor.voltage) { - fprintf(f, " Voltage: %u.%u V\n", sm->processor.voltage / 10, sm->processor.voltage % 10); - } - if(sm->processor.ext_clock) fprintf(f, " External Clock: %u MHz\n", sm->processor.ext_clock); - if(sm->processor.max_speed) fprintf(f, " Max. Speed: %u MHz\n", sm->processor.max_speed); - if(sm->processor.current_speed) fprintf(f, " Current Speed: %u MHz\n", sm->processor.current_speed); - - if(sm->processor.l1_cache) fprintf(f, " L1 Cache: #%d\n", sm->processor.l1_cache); - if(sm->processor.l2_cache) fprintf(f, " L2 Cache: #%d\n", sm->processor.l2_cache); - if(sm->processor.l3_cache) fprintf(f, " L3 Cache: #%d\n", sm->processor.l3_cache); - break; - - case sm_cache: - fprintf(f, " Cache Info: #%d\n", sm->any.handle); - SMBIOS_PRINT_STR(cache.socket, "Designation"); - fprintf(f, " Level: L%u\n", sm->cache.level + 1); - fprintf(f, " State: %s\n", sm->cache.state ? "Enabled" : "Disabled"); - SMBIOS_PRINT_ID(cache.mode, "Mode"); - if(sm->cache.location.name) { - fprintf(f, " Location: 0x%02x (%s, %sSocketed)\n", - sm->cache.location.id, - sm->cache.location.name, - sm->cache.socketed ? "" : "Not " - ); - } - SMBIOS_PRINT_ID(cache.ecc, "ECC"); - SMBIOS_PRINT_ID(cache.cache_type, "Type"); - SMBIOS_PRINT_ID(cache.assoc, "Associativity"); - if(sm->cache.max_size) fprintf(f, " Max. Size: %u kB\n", sm->cache.max_size); - if(sm->cache.current_size) fprintf(f, " Current Size: %u kB\n", sm->cache.current_size); - if(sm->cache.speed) fprintf(f, " Speed: %u ns\n", sm->cache.speed); - SMBIOS_PRINT_BITMAP_SHORT(cache.supp_sram, "Supported SRAM Types"); - SMBIOS_PRINT_BITMAP_SHORT(cache.sram, "Current SRAM Type"); - break; - - case sm_connect: - fprintf(f, " Port Connector: #%d\n", sm->any.handle); - SMBIOS_PRINT_ID(connect.port_type, "Type"); - SMBIOS_PRINT_STR(connect.i_des, "Internal Designator"); - SMBIOS_PRINT_ID(connect.i_type, "Internal Connector"); - SMBIOS_PRINT_STR(connect.x_des, "External Designator"); - SMBIOS_PRINT_ID(connect.x_type, "External Connector"); - break; - - case sm_slot: - fprintf(f, " System Slot: #%d\n", sm->any.handle); - SMBIOS_PRINT_STR(slot.desig, "Designation"); - SMBIOS_PRINT_ID(slot.slot_type, "Type"); - SMBIOS_PRINT_ID(slot.bus_width, "Bus Width"); - SMBIOS_PRINT_ID(slot.usage, "Status"); - SMBIOS_PRINT_ID(slot.length, "Length"); - fprintf(f, " Slot ID: %u\n", sm->slot.id); - SMBIOS_PRINT_BITMAP_SHORT(slot.feature, "Characteristics"); - break; - - case sm_onboard: - fprintf(f, " On Board Devices: #%d\n", sm->any.handle); - for(u = 0; u < sm->onboard.dev_len; u++) { - fprintf(f, " %s: \"%s\"%s\n", - sm->onboard.dev[u].type.name, - sm->onboard.dev[u].name, - sm->onboard.dev[u].status ? "" : " (disabled)" - ); - } - break; - - case sm_oem: - fprintf(f, " OEM Strings: #%d\n", sm->any.handle); - for(sl = sm->oem.oem_strings; sl; sl = sl->next) { - fprintf(f, " %s\n", sl->str); - } - break; - - case sm_config: - fprintf(f, " System Config Options (Jumpers & Switches) #%d:\n", sm->any.handle); - for(sl = sm->config.options; sl; sl = sl->next) { - fprintf(f, " %s\n", sl->str); - } - break; - - case sm_lang: - fprintf(f, " Language Info: #%d\n", sm->any.handle); - if((sl = sm->lang.strings)) { - fprintf(f, " Languages: "); - for(; sl; sl = sl->next) { - fprintf(f, "%s%s", sl->str, sl->next ? ", " : ""); - } - fprintf(f, "\n"); - } - if(sm->lang.current) fprintf(f, " Current: %s\n", sm->lang.current); - break; - - case sm_group: - fprintf(f, " Group Associations: #%d\n", sm->any.handle); - if(sm->group.name) fprintf(f, " Group Name: \"%s\"\n", sm->group.name); - if(sm->group.items_len) { - fprintf(f, " Items: "); - for(i = 0; i < sm->group.items_len; i++) { - fprintf(f, "%s#%d", i ? ", " : "", sm->group.item_handles[i]); - } - fprintf(f, "\n"); - } - break; - - case sm_memarray: - fprintf(f, " Physical Memory Array: #%d\n", sm->any.handle); - SMBIOS_PRINT_ID(memarray.use, "Use"); - SMBIOS_PRINT_ID(memarray.location, "Location"); - fprintf(f, " Slots: %u\n", sm->memarray.slots); - if(sm->memarray.max_size) { - u = sm->memarray.max_size; - c = 'k'; - if(!(u & 0x3ff)) { u >>= 10; c = 'M'; } - if(!(u & 0x3ff)) { u >>= 10; c = 'G'; } - fprintf(f, " Max. Size: %u %cB\n", u, c); - } - SMBIOS_PRINT_ID(memarray.ecc, "ECC"); - if(sm->memarray.error_handle != 0xfffe) { - fprintf(f, " Error Info: "); - if(sm->memarray.error_handle != 0xffff) { - fprintf(f, "#%d\n", sm->memarray.error_handle); - } - else { - fprintf(f, "No Error\n"); - } - } - break; - - case sm_memdevice: - fprintf(f, " Memory Device: #%d\n", sm->any.handle); - SMBIOS_PRINT_STR(memdevice.location, "Location"); - SMBIOS_PRINT_STR(memdevice.bank, "Bank"); - SMBIOS_PRINT_STR(memdevice.manuf, "Manufacturer"); - SMBIOS_PRINT_STR(memdevice.serial, "Serial"); - SMBIOS_PRINT_STR(memdevice.asset, "Asset Tag"); - SMBIOS_PRINT_STR(memdevice.part, "Part Number"); - fprintf(f, " Memory Array: #%d\n", sm->memdevice.array_handle); - if(sm->memdevice.error_handle != 0xfffe) { - fprintf(f, " Error Info: "); - if(sm->memdevice.error_handle != 0xffff) { - fprintf(f, "#%d\n", sm->memdevice.error_handle); - } - else { - fprintf(f, "No Error\n"); - } - } - SMBIOS_PRINT_ID(memdevice.form, "Form Factor"); - SMBIOS_PRINT_ID(memdevice.mem_type, "Type"); - SMBIOS_PRINT_BITMAP_SHORT(memdevice.type_detail, "Type Detail"); - fprintf(f, " Data Width: %u bits", sm->memdevice.width); - if(sm->memdevice.eccbits) fprintf(f, " (+%u ECC bits)", sm->memdevice.eccbits); - fprintf(f, "\n"); - if(sm->memdevice.size) { - u = sm->memdevice.size; - c = 'k'; - if(!(u & 0x3ff)) { u >>= 10; c = 'M'; } - if(!(u & 0x3ff)) { u >>= 10; c = 'G'; } - fprintf(f, " Size: %u %cB\n", u, c); - } - else { - fprintf(f, " Size: No Memory Installed\n"); - } - if(sm->memdevice.speed) fprintf(f, " Speed: %u MHz\n", sm->memdevice.speed); - break; - - case sm_memerror: - fprintf(f, " 32bit-Memory Error Info: #%d\n", sm->any.handle); - SMBIOS_PRINT_ID(memerror.err_type, "Type"); - SMBIOS_PRINT_ID(memerror.granularity, "Granularity"); - SMBIOS_PRINT_ID(memerror.operation, "Operation"); - if(sm->memerror.syndrome) fprintf(f, " Syndrome: 0x%08x\n", sm->memerror.syndrome); - if(sm->memerror.array_addr != (1 << 31)) fprintf(f, " Mem Array Addr: 0x%08x\n", sm->memerror.array_addr); - if(sm->memerror.device_addr != (1 << 31)) fprintf(f, " Mem Device Addr: 0x%08x\n", sm->memerror.device_addr); - if(sm->memerror.range != (1 << 31)) fprintf(f, " Range: 0x%08x\n", sm->memerror.range); - break; - - case sm_memarraymap: - fprintf(f, " Memory Array Mapping: #%d\n", sm->any.handle); - fprintf(f, " Memory Array: #%d\n", sm->memarraymap.array_handle); - fprintf(f, " Partition Width: %u\n", sm->memarraymap.part_width); - if((sm->memarraymap.start_addr | sm->memarraymap.end_addr) >> 32) { - fprintf(f, " Start Address: 0x%016"PRIx64"\n", sm->memarraymap.start_addr); - fprintf(f, " End Address: 0x%016"PRIx64"\n", sm->memarraymap.end_addr); - } - else { - fprintf(f, " Start Address: 0x%08x\n", (unsigned) sm->memarraymap.start_addr); - fprintf(f, " End Address: 0x%08x\n", (unsigned) sm->memarraymap.end_addr); - } - break; - - case sm_memdevicemap: - fprintf(f, " Memory Device Mapping: #%d\n", sm->any.handle); - fprintf(f, " Memory Device: #%d\n", sm->memdevicemap.memdevice_handle); - fprintf(f, " Array Mapping: #%d\n", sm->memdevicemap.arraymap_handle); - if(sm->memdevicemap.row_pos != 0xff) fprintf(f, " Row: %u\n", sm->memdevicemap.row_pos); - if( - !sm->memdevicemap.interleave_pos || - sm->memdevicemap.interleave_pos != 0xff - ) { - fprintf(f, " Interleave Pos: %u\n", sm->memdevicemap.interleave_pos); - } - if( - !sm->memdevicemap.interleave_depth || - sm->memdevicemap.interleave_depth != 0xff - ) { - fprintf(f, " Interleaved Depth: %u\n", sm->memdevicemap.interleave_depth); - } - if((sm->memdevicemap.start_addr | sm->memdevicemap.end_addr) >> 32) { - fprintf(f, " Start Address: 0x%016"PRIx64"\n", sm->memdevicemap.start_addr); - fprintf(f, " End Address: 0x%016"PRIx64"\n", sm->memdevicemap.end_addr); - } - else { - fprintf(f, " Start Address: 0x%08x\n", (unsigned) sm->memdevicemap.start_addr); - fprintf(f, " End Address: 0x%08x\n", (unsigned) sm->memdevicemap.end_addr); - } - break; - - case sm_mouse: - fprintf(f, " Pointing Device: #%d\n", sm->any.handle); - SMBIOS_PRINT_ID(mouse.mtype, "Type"); - SMBIOS_PRINT_ID(mouse.interface, "Interface"); - if(sm->mouse.buttons) fprintf(f, " Buttons: %u\n", sm->mouse.buttons); - break; - - case sm_secure: - fprintf(f, " Hardware Security: #%d\n", sm->any.handle); - SMBIOS_PRINT_ID(secure.power, "Power-on Password"); - SMBIOS_PRINT_ID(secure.keyboard, "Keyboard Password"); - SMBIOS_PRINT_ID(secure.admin, "Admin Password"); - SMBIOS_PRINT_ID(secure.reset, "Front Panel Reset"); - break; - - case sm_power: - fprintf(f, " System Power Controls: #%d\n", sm->any.handle); - fprintf(f, - " Next Power-on: %02x:%02x:%02x %02x/%02x\n", - sm->power.hour, sm->power.minute, sm->power.second, - sm->power.day, sm->power.month - ); - break; - - case sm_mem64error: - fprintf(f, " 64bit-Memory Error Info: #%d\n", sm->any.handle); - SMBIOS_PRINT_ID(mem64error.err_type, "Type"); - SMBIOS_PRINT_ID(mem64error.granularity, "Granularity"); - SMBIOS_PRINT_ID(mem64error.operation, "Operation"); - if(sm->mem64error.syndrome) fprintf(f, " Syndrome: 0x%08x\n", sm->mem64error.syndrome); - if( - sm->mem64error.array_addr != (1ll << 63) && - sm->mem64error.array_addr != (1ll << 31) - ) { - fprintf(f, " Mem Array Addr: 0x%016"PRIx64"\n", sm->mem64error.array_addr); - } - if( - sm->mem64error.device_addr != (1ll << 63) && - sm->mem64error.device_addr != (1ll << 31) - ) { - fprintf(f, " Mem Device Addr: 0x%016"PRIx64"\n", sm->mem64error.device_addr); - } - if(sm->mem64error.range != (1 << 31)) fprintf(f, " Range: 0x%08x\n", sm->mem64error.range); - break; - - case sm_end: - break; - - default: - if(sm->any.type == sm_inactive) { - fprintf(f, " Inactive Record: #%d\n", sm->any.handle); - } - else { - fprintf(f, " Type %d Record: #%d\n", sm->any.type, sm->any.handle); - } - if(sm->any.data_len) { - for(i = 0; i < sm->any.data_len; i += 0x10) { - u = sm->any.data_len - i; - if(u > 0x10) u = 0x10; - s = NULL; - hexdump(&s, 0, u, sm->any.data + i); - fprintf(f, " Data %02x: %s\n", i, s); - s = free_mem(s); - } - } - for(u = 1, sl = sm->any.strings; sl; sl = sl->next, u++) { - if(sl->str && *sl->str) fprintf(f, " String %u: \"%s\"\n", u, sl->str); - } - break; - } - } -} - diff --git a/src/hwinfo/src/hd/smbios.h b/src/hwinfo/src/hd/smbios.h deleted file mode 100644 index 79d339292d..0000000000 --- a/src/hwinfo/src/hd/smbios.h +++ /dev/null @@ -1,4 +0,0 @@ -hd_smbios_t *smbios_free(hd_smbios_t *sm); -hd_smbios_t *smbios_add_entry(hd_smbios_t **sm, hd_smbios_t *new_sm); -void smbios_dump(hd_data_t *hd_data, FILE *f); -void smbios_parse(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/sys.c b/src/hwinfo/src/hd/sys.c deleted file mode 100644 index ad5f506106..0000000000 --- a/src/hwinfo/src/hd/sys.c +++ /dev/null @@ -1,260 +0,0 @@ -#define _GNU_SOURCE /* we want memmem() */ -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "sys.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * general system info - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#if defined(__i386__) -static void sigsegv_handler(int signum); -static void chk_vmware(hd_data_t *hd_data, sys_info_t *st); -#endif - -#if defined(__i386__) || defined(__x86_64__) -static int is_txt(char c); -static int is_decimal(char c); -static int txt_len(char *s); -static int decimal_len(char *s); -static int chk_vaio(hd_data_t *hd_data, sys_info_t *st); -#ifdef UCLIBC -void *memmem(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen); -#endif -#endif - -void hd_scan_sys(hd_data_t *hd_data) -{ - hd_t *hd; - sys_info_t *st; -#if defined(__PPC__) || defined(__sparc__) - char buf0[80], *s, *t; - str_list_t *sl; -#endif - - if(!hd_probe_feature(hd_data, pr_sys)) return; - - hd_data->module = mod_sys; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "cpu"); - - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_internal; - hd->sub_class.id = sc_int_sys; - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_sys; - hd->detail->sys.data = st = new_mem(sizeof *st); - - if(!hd_data->cpu) { - hd_data->cpu = read_file(PROC_CPUINFO, 0, 0); - } - -#ifdef __PPC__ - for(sl = hd_data->cpu; sl; sl = sl->next) { - if(sscanf(sl->str, "motherboard : %79[^\n]", buf0) == 1) { - if((s = strstr(buf0, "MacRISC"))) { - for(t = s + sizeof "MacRISC" - 1; isalnum(*t); t++); - *t = 0; - st->system_type = new_str(s); - hd_data->flags.no_parport = 1; - } - } - if(sscanf(sl->str, "machine : %79[^\n]", buf0) == 1) { - if(strstr(buf0, "PReP")) { - st->system_type = new_str("PReP"); - } - else if(strstr(buf0, "CHRP")) { - st->system_type = new_str(/* is_64 ? "CHRP64" : */ "CHRP"); - } - else if(strstr(buf0, "iSeries")) { - st->system_type = new_str("iSeries"); - hd_data->flags.iseries = 1; - } - if(strstr(buf0, "PowerBook2,")) { - st->model = new_str("iBook"); - } - else if(strstr(buf0, "PowerBook")) { - st->model = new_str("PowerBook"); - } - } - if(sscanf(sl->str, "pmac-generation : %79[^\n]", buf0) == 1) { - st->generation = new_str(buf0); - } - } -#endif /* __PPC__ */ - -#ifdef __sparc__ - for(sl = hd_data->cpu; sl; sl = sl->next) { - if(sscanf(sl->str, "type : %79[^\n]", buf0) == 1) { - st->system_type = new_str(buf0); - } - } -#endif - -#if defined(__i386__) || defined(__x86_64__) - chk_vaio(hd_data, st); -#endif - -#if defined(__i386__) - chk_vmware(hd_data, st); -#endif - - if(st->vendor) hd->vendor.name = new_str(st->vendor); - if(st->model) hd->device.name = new_str(st->model); - if(st->serial) hd->serial = new_str(st->serial); -} - -#if defined(__i386__) -void sigsegv_handler(int signum) { exit(77); } - -void chk_vmware(hd_data_t *hd_data, sys_info_t *st) -{ - static int is_vmware = -1; - int child, status; - - /* do the check only once */ - if(is_vmware < 0) { - - child = fork(); - - if(child == 0) { - signal(SIGSEGV, sigsegv_handler); - - asm( - "push %ebx\n" - "\tpush %edx\n" - "\tpush %eax\n" - "\tpush %ecx\n" - "\tmov $0x564d5868,%eax\n" - "\tmov $0xa,%ecx\n" - "\tmov $0x5658,%edx\n" - "\tin (%dx),%eax\n" - "\tpop %ecx\n" - "\tpop %eax\n" - "\tpop %edx\n" - "\tpop %ebx\n" - ); - - _exit(66); - } - else { - if(waitpid(child, &status, 0) == child) { - status = WEXITSTATUS(status); - if(status == 66) is_vmware = 1; - if(status == 77) is_vmware = 0; - } - } - - ADD2LOG(" vmware check: %d\n", is_vmware); - } - - if(is_vmware == 1) { - st->model = new_str("VMWare"); - } - - hd_data->in_vmware = is_vmware; -} - -#endif /* __i386__ */ - - -#if defined(__i386__) || defined(__x86_64__) -int is_txt(char c) -{ - if(c < ' ' || c == 0x7f) return 0; - - return 1; -} - -int is_decimal(char c) -{ - if(c < '0' || c > '9') return 0; - - return 1; -} - -int txt_len(char *s) -{ - int i; - - for(i = 0; i < 0x100; i++) { - if(!is_txt(s[i])) break; - } - - return i; -} - -int decimal_len(char *s) -{ - int i; - - for(i = 0; i < 0x100; i++) { - if(!is_decimal(s[i])) break; - } - - return i; -} - -int chk_vaio(hd_data_t *hd_data, sys_info_t *st) -{ - int i; - unsigned char *data, *s, *s0, *s1; - - if(!hd_data->bios_rom.data) return 0; - - data = hd_data->bios_rom.data + 0xe8000 - hd_data->bios_rom.start; - - if(!(s = memmem(data, 0x10000, "Sony Corp", sizeof "Sony Corp" - 1))) return 0; - - if((i = txt_len(s))) st->vendor = canon_str(s, i); - s += i; - - if(!(s = memmem(s, 0x1000, "PCG-", sizeof "PCG-" - 1))) return 0; - - if((i = txt_len(s))) { - st->model = canon_str(s, i); - } - s += i; - - ADD2LOG(" vaio: %s\n", st->model); - - for(i = 0; i < 0x1000; i++) { - if(is_decimal(s[i]) && txt_len(s + i) >= 10 && decimal_len(s + i) >= 5) { - st->serial = canon_str(s + i, txt_len(s + i)); - break; - } - } - - if(st->model) { - s0 = strrchr(st->model, '('); - s1 = strrchr(st->model, ')'); - - if(s0 && s1 && s1 - s0 >= 3 && s1[1] == 0) { - st->lang = canon_str(s0 + 1, s1 - s0 - 1); - for(s = st->lang; *s; s++) { - if(*s >= 'A' && *s <= 'Z') *s += 'a' - 'A'; - } - if(!strcmp(st->lang, "uc")) strcpy(st->lang, "en"); - *s0 = 0; /* cut the model entry */ - } - } - - return st->model ? 1 : 0; -} -#endif /* __i386__ || __x86_64__ */ - diff --git a/src/hwinfo/src/hd/sys.h b/src/hwinfo/src/hd/sys.h deleted file mode 100644 index fca3f69b65..0000000000 --- a/src/hwinfo/src/hd/sys.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_sys(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/usb.c b/src/hwinfo/src/hd/usb.c deleted file mode 100644 index 11a48e90b2..0000000000 --- a/src/hwinfo/src/hd/usb.c +++ /dev/null @@ -1,780 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "hddb.h" -#include "usb.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * usb - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#define IOCNR_GET_DEVICE_ID 1 -#define IOCNR_GET_BUS_ADDRESS 5 -#define IOCNR_GET_VID_PID 6 - -/* Get device_id string: */ -#define LPIOC_GET_DEVICE_ID(len) _IOC(_IOC_READ, 'P', IOCNR_GET_DEVICE_ID, len) -/* Get two-int array: [0]=bus number, [1]=device address: */ -#define LPIOC_GET_BUS_ADDRESS(len) _IOC(_IOC_READ, 'P', IOCNR_GET_BUS_ADDRESS, len) -/* Get two-int array: [0]=vendor ID, [1]=product ID: */ -#define LPIOC_GET_VID_PID(len) _IOC(_IOC_READ, 'P', IOCNR_GET_VID_PID, len) - - -static void get_usb_devs(hd_data_t *hd_data); -static void set_class_entries(hd_data_t *hd_data, hd_t *hd, usb_t *usb); -static void get_input_devs(hd_data_t *hd_data); -static void get_printer_devs(hd_data_t *hd_data); -static void read_usb_lp(hd_data_t *hd_data, hd_t *hd); -static void get_serial_devs(hd_data_t *hd_data); - -void hd_scan_sysfs_usb(hd_data_t *hd_data) -{ - if(!hd_probe_feature(hd_data, pr_usb)) return; - - hd_data->module = mod_usb; - - /* some clean-up */ - remove_hd_entries(hd_data); - hd_data->proc_usb = free_str_list(hd_data->proc_usb); - hd_data->usb = NULL; - - PROGRESS(1, 0, "sysfs drivers"); - - hd_sysfs_driver_list(hd_data); - - PROGRESS(2, 0, "usb"); - - get_usb_devs(hd_data); - - PROGRESS(3, 1, "joydev mod"); - load_module(hd_data, "joydev"); - - PROGRESS(3, 2, "evdev mod"); - load_module(hd_data, "evdev"); - - PROGRESS(3, 3, "input"); - get_input_devs(hd_data); - - PROGRESS(3, 4, "lp"); - get_printer_devs(hd_data); - - PROGRESS(3, 5, "serial"); - get_serial_devs(hd_data); - -} - - -void get_usb_devs(hd_data_t *hd_data) -{ - uint64_t ul0; - unsigned u1, u2, u3; - hd_t *hd, *hd1; - usb_t *usb; - str_list_t *sl, *usb_devs = NULL; - char *s, *s1, *t; - hd_res_t *res; - size_t l; - - struct sysfs_bus *sf_bus; - struct dlist *sf_dev_list; - struct sysfs_device *sf_dev; - struct sysfs_device *sf_dev_2; - - sf_bus = sysfs_open_bus("usb"); - - if(!sf_bus) { - ADD2LOG("sysfs: no such bus: usb\n"); - return; - } - - sf_dev_list = sysfs_get_bus_devices(sf_bus); - - if(sf_dev_list) dlist_for_each_data(sf_dev_list, sf_dev, struct sysfs_device) { - if(hd_attr_uint(sysfs_get_device_attr(sf_dev, "bNumInterfaces"), &ul0, 0)) { - add_str_list(&usb_devs, sf_dev->path); - ADD2LOG(" usb dev: %s\n", hd_sysfs_id(sf_dev->path)); - } - } - - if(sf_dev_list) dlist_for_each_data(sf_dev_list, sf_dev, struct sysfs_device) { - ADD2LOG( - " usb device: name = %s, bus_id = %s, bus = %s\n path = %s\n", - sf_dev->name, - sf_dev->bus_id, - sf_dev->bus, - hd_sysfs_id(sf_dev->path) - ); - - if( - hd_attr_uint(sysfs_get_device_attr(sf_dev, "bInterfaceNumber"), &ul0, 16) - ) { - hd = add_hd_entry(hd_data, __LINE__, 0); - - hd->detail = new_mem(sizeof *hd->detail); - hd->detail->type = hd_detail_usb; - hd->detail->usb.data = usb = new_mem(sizeof *usb); - - hd->sysfs_id = new_str(hd_sysfs_id(sf_dev->path)); - hd->sysfs_bus_id = new_str(sf_dev->bus_id); - - hd->bus.id = bus_usb; - hd->func = ul0; - - usb->ifdescr = ul0; - - ADD2LOG(" bInterfaceNumber = %u\n", hd->func); - - if(hd_attr_uint(sysfs_get_device_attr(sf_dev, "bInterfaceClass"), &ul0, 16)) { - usb->i_cls = ul0; - ADD2LOG(" bInterfaceClass = %u\n", usb->i_cls); - } - - if(hd_attr_uint(sysfs_get_device_attr(sf_dev, "bInterfaceSubClass"), &ul0, 16)) { - usb->i_sub = ul0; - ADD2LOG(" bInterfaceSubClass = %u\n", usb->i_sub); - } - - if(hd_attr_uint(sysfs_get_device_attr(sf_dev, "bInterfaceProtocol"), &ul0, 16)) { - usb->i_prot = ul0; - ADD2LOG(" bInterfaceProtocol = %u\n", usb->i_prot); - } - - /* device has longest matching sysfs id */ - u2 = strlen(sf_dev->path); - s = NULL; - for(u3 = 0, sl = usb_devs; sl; sl = sl->next) { - u1 = strlen(sl->str); - if(u1 > u3 && u1 <= u2 && !strncmp(sf_dev->path, sl->str, u1)) { - u3 = u1; - s = sl->str; - } - } - - if(s) { - ADD2LOG(" if: %s @ %s\n", hd->sysfs_bus_id, hd_sysfs_id(s)); - sf_dev_2 = sysfs_open_device_path(s); - if(sf_dev_2) { - - if(hd_attr_uint(sysfs_get_device_attr(sf_dev_2, "bDeviceClass"), &ul0, 16)) { - usb->d_cls = ul0; - ADD2LOG(" bDeviceClass = %u\n", usb->d_cls); - } - - if(hd_attr_uint(sysfs_get_device_attr(sf_dev_2, "bDeviceSubClass"), &ul0, 16)) { - usb->d_sub = ul0; - ADD2LOG(" bDeviceSubClass = %u\n", usb->d_sub); - } - - if(hd_attr_uint(sysfs_get_device_attr(sf_dev_2, "bDeviceProtocol"), &ul0, 16)) { - usb->d_prot = ul0; - ADD2LOG(" bDeviceProtocol = %u\n", usb->d_prot); - } - - if(hd_attr_uint(sysfs_get_device_attr(sf_dev_2, "idVendor"), &ul0, 16)) { - usb->vendor = ul0; - ADD2LOG(" idVendor = 0x%04x\n", usb->vendor); - } - - if(hd_attr_uint(sysfs_get_device_attr(sf_dev_2, "idProduct"), &ul0, 16)) { - usb->device = ul0; - ADD2LOG(" idProduct = 0x%04x\n", usb->device); - } - - if((s = hd_attr_str(sysfs_get_device_attr(sf_dev_2, "manufacturer")))) { - usb->manufact = canon_str(s, strlen(s)); - ADD2LOG(" manufacturer = \"%s\"\n", usb->manufact); - } - - if((s = hd_attr_str(sysfs_get_device_attr(sf_dev_2, "product")))) { - usb->product = canon_str(s, strlen(s)); - ADD2LOG(" product = \"%s\"\n", usb->product); - } - - if((s = hd_attr_str(sysfs_get_device_attr(sf_dev_2, "serial")))) { - usb->serial = canon_str(s, strlen(s)); - ADD2LOG(" serial = \"%s\"\n", usb->serial); - } - - if(hd_attr_uint(sysfs_get_device_attr(sf_dev_2, "bcdDevice"), &ul0, 16)) { - usb->rev = ul0; - ADD2LOG(" bcdDevice = %04x\n", usb->rev); - } - - if((s = hd_attr_str(sysfs_get_device_attr(sf_dev_2, "speed")))) { - s = canon_str(s, strlen(s)); - if(strcmp(s, "1.5")) usb->speed = 15*100000; - else if(strcmp(s, "12")) usb->speed = 12*1000000; - else if(strcmp(s, "240")) usb->speed = 240*1000000; - ADD2LOG(" speed = \"%s\"\n", s); - s = free_mem(s); - } - - sysfs_close_device(sf_dev_2); - } - } - - if(usb->vendor || usb->device) { - hd->vendor.id = MAKE_ID(TAG_USB, usb->vendor); - hd->device.id = MAKE_ID(TAG_USB, usb->device); - } - - if(usb->manufact) hd->vendor.name = new_str(usb->manufact); - if(usb->product) hd->device.name = new_str(usb->product); - if(usb->serial) hd->serial = new_str(usb->serial); - - if(usb->rev) str_printf(&hd->revision.name, 0, "%x.%02x", usb->rev >> 8, usb->rev & 0xff); - - if(usb->speed) { - res = add_res_entry(&hd->res, new_mem(sizeof *res)); - res->baud.type = res_baud; - res->baud.speed = usb->speed; - } - - s = hd_sysfs_find_driver(hd_data, hd->sysfs_id, 1); - if(s) add_str_list(&hd->drivers, s); - - set_class_entries(hd_data, hd, usb); - - if(!hd_data->scanner_db) { - hd_data->scanner_db = hd_module_list(hd_data, 1); - } - - if( - hd->drivers && - search_str_list(hd_data->scanner_db, hd->drivers->str) - ) { - hd->base_class.id = bc_scanner; - } - - // ###### FIXME - if(hd->base_class.id == bc_modem) { - hd->unix_dev_name = new_str("/dev/ttyACM0"); - } - - } - } - - sysfs_close_bus(sf_bus); - - /* connect usb devices to each other */ - for(hd = hd_data->hd; hd; hd = hd->next) { - if(hd->module == hd_data->module && hd->sysfs_id) { - - s = new_str(hd->sysfs_id); - t = strrchr(s, '/'); - if(t) *t = 0; - - /* parent has longest matching sysfs id */ - u2 = strlen(s); - for(u3 = 0, hd1 = hd_data->hd; hd1; hd1 = hd1->next) { - if(hd1->sysfs_id) { - s1 = new_str(hd1->sysfs_id); - - if(hd1->module == hd_data->module) { - t = strrchr(s1, ':'); - if(t) *t = 0; - l = strlen(s1); - if(l > 2 && s1[l-2] == '-' && s1[l-1] == '0') { - /* root hub */ - s1[l-2] = 0 ; - } - } - - u1 = strlen(s1); - if(u1 > u3 && u1 <= u2 && !strncmp(s, s1, u1)) { - u3 = u1; - hd->attached_to = hd1->idx; - } - - s1 = free_mem(s1); - } - } - - s = free_mem(s); - } - } - - /* remove some entries */ - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->module == hd_data->module && - hd->sysfs_id && - !hd->tag.remove - ) { - - s = new_str(hd->sysfs_id); - t = strrchr(s, ':'); - if(t) *t = 0; - - for(hd1 = hd_data->hd; hd1; hd1 = hd1->next) { - if( - hd1 != hd && - hd1->module == hd_data->module && - hd1->sysfs_id && - !hd1->tag.remove && - hd1->base_class.id == hd->base_class.id - ) { - - s1 = new_str(hd1->sysfs_id); - t = strrchr(s1, ':'); - if(t) *t = 0; - - /* same usb device */ - if(!strcmp(s, s1)) { - hd1->tag.remove = 1; - ADD2LOG("removed: %s\n", hd1->sysfs_id); - } - - s1 = free_mem(s1); - } - } - - s = free_mem(s); - } - } - - remove_tagged_hd_entries(hd_data); - - -} - - -void set_class_entries(hd_data_t *hd_data, hd_t *hd, usb_t *usb) -{ - int cls, sub, prot; - unsigned u; - - if(usb->d_cls) { - cls = usb->d_cls; sub = usb->d_sub; prot = usb->d_prot; - } - else { - cls = usb->i_cls; sub = usb->i_sub; prot = usb->i_prot; - } - - switch(cls) { - case 2: - if(usb->i_sub == 6 && usb->i_prot == 0) { - hd->base_class.id = bc_network; - hd->sub_class.id = 0x91; - } - else if(usb->i_sub == 2 && usb->i_prot >= 1 && usb->i_prot <= 6) { - hd->base_class.id = bc_modem; - } - break; - - case 3: - if(sub == 1 && prot == 1) { - hd->base_class.id = bc_keyboard; - hd->sub_class.id = sc_keyboard_kbd; - break; - } - if(sub == 1 && prot == 2) { - if(!( - (usb->vendor == 0x056a && usb->device == 0x0022) /* Wacom Tablet */ -// || (usb->vendor == 0x08ca && usb->device == 0x0020) /* AIPTEK APT-6000U tablet */ - )) { - hd->base_class.id = bc_mouse; - hd->sub_class.id = sc_mou_usb; - hd->compat_vendor.id = MAKE_ID(TAG_SPECIAL, 0x0200); - hd->compat_device.id = MAKE_ID(TAG_SPECIAL, 0x001); - } - break; - } - break; - - case 6: - if(sub == 1 && prot == 1) { /* PTP camera */ - hd->base_class.id = bc_camera; - hd->sub_class.id = sc_camera_digital; - break; - } - break; - - case 7: - hd->base_class.id = bc_printer; - break; - - case 8: - hd->base_class.id = bc_storage_device; - switch(sub) { - case 1: /* flash devices & removable media */ - case 5: - case 6: - hd->sub_class.id = sc_sdev_disk; - break; - case 2: - hd->sub_class.id = sc_sdev_cdrom; - break; - case 3: - hd->sub_class.id = sc_sdev_tape; - break; - case 4: - hd->sub_class.id = sc_sdev_floppy; - break; - default: - hd->sub_class.id = sc_sdev_other; - } - break; - - case 9: - hd->base_class.id = bc_hub; - break; - - case 0xe0: - if(sub == 1 && prot == 1) { - hd->base_class.id = bc_bluetooth; - hd->sub_class.id = 0; - } - break; - - case 0xff: - /* hp psc 2100, 2200, 2150, officejet 6100 */ - if( - sub == 0xcc && - ( - usb->vendor == 0x03f0 && - ( - usb->device == 0x2811 || - usb->device == 0x2911 || - usb->device == 0x2a11 || - usb->device == 0x2d11 - ) - ) - ) { - hd->base_class.id = bc_scanner; - hd->sub_class.id = 1; - } - break; - } - - if((u = device_class(hd_data, hd->vendor.id, hd->device.id))) { - hd->base_class.id = u >> 8; - hd->sub_class.id = u & 0xff; - } - - /* FIXME: hack for bt isdn box */ - if( - hd->vendor.id == MAKE_ID(TAG_USB, 0x057c) && - hd->device.id == MAKE_ID(TAG_USB, 0x2200) - ) { - hd_set_hw_class(hd, hw_bluetooth); - } - -} - - -void get_input_devs(hd_data_t *hd_data) -{ - hd_t *hd; - char *s, *t; - hd_dev_num_t dev_num; - unsigned u1, u2; - - struct sysfs_class *sf_class; - struct sysfs_class_device *sf_cdev; - struct sysfs_device *sf_dev; - struct dlist *sf_cdev_list; - - sf_class = sysfs_open_class("input"); - - if(!sf_class) { - ADD2LOG("sysfs: no such class: input\n"); - return; - } - - sf_cdev_list = sysfs_get_class_devices(sf_class); - if(sf_cdev_list) dlist_for_each_data(sf_cdev_list, sf_cdev, struct sysfs_class_device) { - ADD2LOG( - " input: name = %s, path = %s\n", - sf_cdev->name, - hd_sysfs_id(sf_cdev->path) - ); - - if((s = hd_attr_str(sysfs_get_classdev_attr(sf_cdev, "dev")))) { - if(sscanf(s, "%u:%u", &u1, &u2) == 2) { - dev_num.type = 'c'; - dev_num.major = u1; - dev_num.minor = u2; - dev_num.range = 1; - } - ADD2LOG(" dev = %u:%u\n", u1, u2); - } - - sf_dev = sysfs_get_classdev_device(sf_cdev); - if(sf_dev) { - s = hd_sysfs_id(sf_dev->path); - - ADD2LOG( - " input device: bus = %s, bus_id = %s driver = %s\n path = %s\n", - sf_dev->bus, - sf_dev->bus_id, - sf_dev->driver_name, - s - ); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->module == hd_data->module && - hd->sysfs_id && - s && - !strcmp(s, hd->sysfs_id) - ) { - t = NULL; - str_printf(&t, 0, "/dev/input/%s", sf_cdev->name); - - if(strncmp(sf_cdev->name, "mouse", sizeof "mouse" - 1)) { - hd->unix_dev_name = t; - hd->unix_dev_num = dev_num; - } - else { - hd->unix_dev_name2 = t; - hd->unix_dev_num2 = dev_num; - - dev_num.major = 13; - dev_num.minor = 63; - hd->unix_dev_name = new_str(DEV_MICE); - hd->unix_dev_num = dev_num; - } - } - } - } - } - - sysfs_close_class(sf_class); -} - - -void get_printer_devs(hd_data_t *hd_data) -{ - hd_t *hd; - char *s, *t; - hd_dev_num_t dev_num; - unsigned u1, u2; - - struct sysfs_class *sf_class; - struct sysfs_class_device *sf_cdev; - struct sysfs_device *sf_dev; - struct dlist *sf_cdev_list; - - sf_class = sysfs_open_class("usb"); - - if(!sf_class) { - ADD2LOG("sysfs: no such class: usb\n"); - return; - } - - sf_cdev_list = sysfs_get_class_devices(sf_class); - if(sf_cdev_list) dlist_for_each_data(sf_cdev_list, sf_cdev, struct sysfs_class_device) { - if(strncmp(sf_cdev->name, "lp", 2)) continue; - - ADD2LOG( - " usb: name = %s, path = %s\n", - sf_cdev->name, - hd_sysfs_id(sf_cdev->path) - ); - - if((s = hd_attr_str(sysfs_get_classdev_attr(sf_cdev, "dev")))) { - if(sscanf(s, "%u:%u", &u1, &u2) == 2) { - dev_num.type = 'c'; - dev_num.major = u1; - dev_num.minor = u2; - dev_num.range = 1; - } - ADD2LOG(" dev = %u:%u\n", u1, u2); - } - - sf_dev = sysfs_get_classdev_device(sf_cdev); - if(sf_dev) { - s = hd_sysfs_id(sf_dev->path); - - ADD2LOG( - " usb device: bus = %s, bus_id = %s driver = %s\n path = %s\n", - sf_dev->bus, - sf_dev->bus_id, - sf_dev->driver_name, - s - ); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->module == hd_data->module && - hd->sysfs_id && - s && - !strcmp(s, hd->sysfs_id) - ) { - t = NULL; - str_printf(&t, 0, "/dev/usb/%s", sf_cdev->name); - - hd->unix_dev_name = t; - hd->unix_dev_num = dev_num; - - read_usb_lp(hd_data, hd); - } - } - } - } - - sysfs_close_class(sf_class); -} - - -#define MATCH_FIELD(field, var) \ - if(!strncasecmp(sl->str, field, sizeof field - 1)) var = sl->str + sizeof field - 1 - -/* - * assign /dev/usb/lp* to usb printers. - */ -void read_usb_lp(hd_data_t *hd_data, hd_t *hd) -{ - char *s; - char buf[1024]; - int fd, two_ints[2]; - unsigned bus; - str_list_t *sl0, *sl; - char *vend, *prod, *serial, *descr; - - if((fd = open(hd->unix_dev_name, O_RDWR)) < 0) return; - - if(ioctl(fd, LPIOC_GET_BUS_ADDRESS(sizeof two_ints), two_ints) == -1) { - close(fd); - return; - } - - ADD2LOG(" usb/lp: bus = %d, dev_nr = %d\n", two_ints[0], two_ints[1]); - bus = ((two_ints[0] & 0xff) << 8) + (two_ints[1] & 0xff); - - if(ioctl(fd, LPIOC_GET_VID_PID(sizeof two_ints), two_ints) != -1) { - /* just for the record */ - ADD2LOG(" usb/lp: vend = 0x%04x, prod = 0x%04x\n", two_ints[0], two_ints[1]); - } - - memset(buf, 0, sizeof buf); - if(!ioctl(fd, LPIOC_GET_DEVICE_ID(sizeof buf), buf)) { - buf[sizeof buf - 1] = 0; - s = canon_str(buf + 2, sizeof buf - 3); - ADD2LOG(" usb/lp: \"%s\"\n", s); - sl0 = hd_split(';', s); - free_mem(s); - vend = prod = serial = descr = NULL; - for(sl = sl0; sl; sl = sl->next) { - MATCH_FIELD("MFG:", vend); - MATCH_FIELD("MANUFACTURER:", vend); - MATCH_FIELD("MDL:", prod); - MATCH_FIELD("MODEL:", prod); - MATCH_FIELD("DES:", descr); - MATCH_FIELD("DESCRIPTION:", descr); - MATCH_FIELD("SERN:", serial); - MATCH_FIELD("SERIALNUMBER:", serial); - } - ADD2LOG( - " usb/lp: vend = %s, prod = %s, descr = %s, serial = %s\n", - vend ?: "", prod ?: "", descr ?: "", serial ?: "" - ); - if(descr) { - str_printf(&hd->model, 0, "%s", descr); - } - if(vend && prod) { - str_printf(&hd->sub_vendor.name, 0, "%s", vend); - str_printf(&hd->sub_device.name, 0, "%s", prod); - } - if(serial && !hd->serial) { - hd->serial = new_str(serial); - } - - free_str_list(sl0); - } - - close(fd); -} -#undef MATCH_FIELD - - -void get_serial_devs(hd_data_t *hd_data) -{ - hd_t *hd; - char *s, *t; - hd_dev_num_t dev_num; - unsigned u1, u2; - - struct sysfs_class *sf_class; - struct sysfs_class_device *sf_cdev; - struct sysfs_device *sf_dev; - struct dlist *sf_cdev_list; - - sf_class = sysfs_open_class("tty"); - - if(!sf_class) { - ADD2LOG("sysfs: no such class: tty\n"); - return; - } - - sf_cdev_list = sysfs_get_class_devices(sf_class); - if(sf_cdev_list) dlist_for_each_data(sf_cdev_list, sf_cdev, struct sysfs_class_device) { - if(strncmp(sf_cdev->name, "ttyUSB", 6)) continue; - - ADD2LOG( - " usb: name = %s, path = %s\n", - sf_cdev->name, - hd_sysfs_id(sf_cdev->path) - ); - - if((s = hd_attr_str(sysfs_get_classdev_attr(sf_cdev, "dev")))) { - if(sscanf(s, "%u:%u", &u1, &u2) == 2) { - dev_num.type = 'c'; - dev_num.major = u1; - dev_num.minor = u2; - dev_num.range = 1; - } - ADD2LOG(" dev = %u:%u\n", u1, u2); - } - - sf_dev = sysfs_get_classdev_device(sf_cdev); - if(sf_dev) { - s = hd_sysfs_id(sf_dev->path); - - if((t = strrchr(s, '/')) && !strncmp(t + 1, "ttyUSB", sizeof "ttyUSB" - 1)) *t =0; - - ADD2LOG( - " usb device: bus = %s, bus_id = %s driver = %s\n path = %s\n", - sf_dev->bus, - sf_dev->bus_id, - sf_dev->driver_name, - s - ); - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->module == hd_data->module && - hd->sysfs_id && - s && - !strcmp(s, hd->sysfs_id) - ) { - t = NULL; - str_printf(&t, 0, "/dev/%s", sf_cdev->name); - - hd->unix_dev_name = t; - hd->unix_dev_num = dev_num; - - hd->base_class.id = bc_comm; - hd->sub_class.id = sc_com_ser; - hd->prog_if.id = 0x80; - } - } - } - } - - sysfs_close_class(sf_class); -} - - diff --git a/src/hwinfo/src/hd/usb.h b/src/hwinfo/src/hd/usb.h deleted file mode 100644 index 9d35423a2c..0000000000 --- a/src/hwinfo/src/hd/usb.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_sysfs_usb(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/version.h b/src/hwinfo/src/hd/version.h deleted file mode 100644 index 99c90341f2..0000000000 --- a/src/hwinfo/src/hd/version.h +++ /dev/null @@ -1 +0,0 @@ -#define HD_VERSION_STRING "10.16" diff --git a/src/hwinfo/src/hd/veth.c b/src/hwinfo/src/hd/veth.c deleted file mode 100644 index facef7756f..0000000000 --- a/src/hwinfo/src/hd/veth.c +++ /dev/null @@ -1,63 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "veth.h" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * iSeries veth devices - * - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#if defined(__PPC__) - -void hd_scan_veth(hd_data_t *hd_data) -{ - unsigned u; - hd_t *hd; - DIR *dir; - struct dirent *de; - - if(!hd_probe_feature(hd_data, pr_veth)) return; - - hd_data->module = mod_veth; - - /* some clean-up */ - remove_hd_entries(hd_data); - - PROGRESS(1, 0, "read data"); - - if((dir = opendir(PROC_ISERIES_VETH))) { - while((de = readdir(dir))) { - if(sscanf(de->d_name, "veth%u", &u) == 1) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_network; - hd->slot = u; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x6001); // IBM - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1000); - str_printf(&hd->device.name, 0, "Virtual Ethernet card %d", hd->slot); - } - } - closedir(dir); - return; - } - if((dir = opendir(PROC_ISERIES))) { - hd = add_hd_entry(hd_data, __LINE__, 0); - hd->base_class.id = bc_network; - hd->slot = 0; - hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x6001); // IBM - hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1000); - str_printf(&hd->device.name, 0, "Virtual Ethernet card %d", hd->slot); - } - -} - -#endif /* __PPC__ */ diff --git a/src/hwinfo/src/hd/veth.h b/src/hwinfo/src/hd/veth.h deleted file mode 100644 index 8928941a46..0000000000 --- a/src/hwinfo/src/hd/veth.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_veth(hd_data_t *hd_data); diff --git a/src/hwinfo/src/hd/wlan.c b/src/hwinfo/src/hd/wlan.c deleted file mode 100644 index d327c8dd3b..0000000000 --- a/src/hwinfo/src/hd/wlan.c +++ /dev/null @@ -1,1041 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "wlan.h" - -#ifndef LIBHD_TINY - -#define AUTH_ALG_OPEN_SYSTEM 0x01 -#define AUTH_ALG_SHARED_KEY 0x02 -#define AUTH_ALG_LEAP 0x04 - -typedef enum { WPA_ALG_NONE, WPA_ALG_WEP, WPA_ALG_TKIP, WPA_ALG_CCMP } wpa_alg; -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; - -struct wpa_driver_ops { - int (*set_wpa)(const char *ifnmae, int enabled); - int (*set_auth_alg)(const char *ifname, int auth_alg); - int (*set_key)(const char *ifname, wpa_alg alg, unsigned char *addr, - int key_idx, int set_tx, u8 *seq, size_t seq_len, - u8 *key, size_t key_len); -}; - -struct wpa_driver_ops wpa_driver_hostap_ops; -struct wpa_driver_ops wpa_driver_prism54_ops; -struct wpa_driver_ops wpa_driver_hermes_ops; -struct wpa_driver_ops wpa_driver_madwifi_ops; -struct wpa_driver_ops wpa_driver_atmel_ops; -struct wpa_driver_ops wpa_driver_wext_ops; -struct wpa_driver_ops wpa_driver_ndiswrapper_ops; -struct wpa_driver_ops wpa_driver_ipw_ops; - -/* the iw_ functions are copied from libiw, so we do not need to - link against it */ - -int iw_sockets_open(void) -{ - static const int families[] = { - AF_INET, AF_IPX, AF_AX25, AF_APPLETALK - }; - unsigned int i; - int sock; - - /* - * Now pick any (exisiting) useful socket family for generic queries - * Note : don't open all the socket, only returns when one matches, - * all protocols might not be valid. - * Workaround by Jim Kaba - * Note : in 99% of the case, we will just open the inet_sock. - * The remaining 1% case are not fully correct... - */ - - /* Try all families we support */ - for(i = 0; i < sizeof(families)/sizeof(int); ++i) - { - /* Try to open the socket, if success returns it */ - sock = socket(families[i], SOCK_DGRAM, 0); - if(sock >= 0) - return sock; - } - - return -1; -} - -static inline int -iw_get_ext(int skfd, /* Socket to the kernel */ - const char * ifname, /* Device name */ - int request, /* WE ID */ - struct iwreq * pwrq) /* Fixed part of the request */ -{ - /* Set device name */ - strncpy(pwrq->ifr_name, ifname, IFNAMSIZ); - /* Do the request */ - return(ioctl(skfd, request, pwrq)); -} - -int iw_get_range_info(int skfd, - const char * ifname, - struct iw_range * range) -{ - struct iwreq wrq; - char buffer[sizeof(struct iw_range) * 2]; /* Large enough */ - struct iw_range * range_raw; - - /* Cleanup */ - bzero(buffer, sizeof(buffer)); - - wrq.u.data.pointer = (caddr_t) buffer; - wrq.u.data.length = sizeof(buffer); - wrq.u.data.flags = 0; - if(iw_get_ext(skfd, ifname, SIOCGIWRANGE, &wrq) < 0) - return(-1); - - /* Point to the buffer */ - range_raw = (struct iw_range *) buffer; - - /* For new versions, we can check the version directly, for old versions - * we use magic. 300 bytes is a also magic number, don't touch... */ - if(wrq.u.data.length < 300) { - /* That's v10 or earlier. Ouch ! Let's make a guess...*/ - range_raw->we_version_compiled = 9; - } - - /* Check how it needs to be processed */ - if(range_raw->we_version_compiled > 15) { - /* This is our native format, that's easy... */ - /* Copy stuff at the right place, ignore extra */ - memcpy((char *) range, buffer, sizeof(struct iw_range)); - } - else { - /* not supported */ - return(-1); - } - - return(0); -} - -double iw_freq2float(const struct iw_freq * in) -{ - int i; - double res = (double) in->m; - for(i = 0; i < in->e; i++) - res *= 10; - return(res); -} - -void hd_scan_wlan(hd_data_t *hd_data) -{ - hd_t *hd; - hd_res_t *res; - struct iw_range range; - int k; - int skfd; - struct wpa_driver_ops *wpa_drv=NULL; - - if(!hd_probe_feature(hd_data, pr_wlan)) return; - - hd_data->module = mod_wlan; - - PROGRESS(1, 0, "detecting wlan features"); - - if ((skfd = iw_sockets_open()) < 0) { - ADD2LOG( "could not open socket, wlan feature query failed\n" ); - return; - } - - for(hd = hd_data->hd; hd; hd = hd->next) { - if( - hd->base_class.id == bc_network && - hd->unix_dev_name ) { - /* Get list of frequencies / channels */ - if(iw_get_range_info(skfd, hd->unix_dev_name, &range) < 0) { - /* this failed, maybe device does not support wireless extensions */ - continue; - } - ADD2LOG("*** device %s is wireless ***\n", hd->unix_dev_name); - hd->is.wlan = 1; - res = new_mem(sizeof *res); - res->any.type = res_wlan; - - if(range.num_frequency > 0) { - char buff[20]; - for(k = 0; k < range.num_frequency; k++) { - snprintf(buff, 19, "%i", range.freq[k].i); - add_str_list(&res->wlan.channels, buff); - snprintf(buff, 19, "%g", (float)iw_freq2float(&(range.freq[k]))/1000000000); - add_str_list(&res->wlan.frequencies, buff); - } - for(k = 0; k < range.num_bitrates; k++) { - snprintf(buff, 19, "%g", (float)range.bitrate[k]/1000000); - add_str_list(&res->wlan.bitrates, buff); - } - for(k = 0; k < range.num_encoding_sizes; k++) { - snprintf(buff, 19, "WEP%i", range.encoding_size[k]*8); - add_str_list(&res->wlan.enc_modes, buff); - } - - /* open mode is always supported */ - add_str_list(&res->wlan.auth_modes, "open"); - /* if WEP is supported, be assume shared key auth support */ - if(range.num_encoding_sizes) { - add_str_list(&res->wlan.auth_modes, "sharedkey"); - } - - /* detect WPA capabilities */ - if (hd->drivers) { - if (search_str_list(hd->drivers, "hostap_cs") || - search_str_list(hd->drivers, "hostap_pci") || - search_str_list(hd->drivers, "hostap_plx") ) - wpa_drv = &wpa_driver_hostap_ops; - /* prism54 is not ready yet - else if (search_str_list(hd->drivers, "prism54")==0) - wpa_drv = &wpa_driver_prism54_ops; - */ - else if (search_str_list(hd->drivers, "ath_pci")) - wpa_drv = &wpa_driver_madwifi_ops; - else if (strncmp(hd->drivers->str, "at76", 4)==0) - wpa_drv = &wpa_driver_atmel_ops; - else if (search_str_list(hd->drivers, "ndiswrapper")) - wpa_drv = &wpa_driver_ndiswrapper_ops; - else if ((search_str_list(hd->drivers, "ipw2100")) || - (search_str_list(hd->drivers, "ipw2200")) ) - wpa_drv = &wpa_driver_ipw_ops; - } - - if (wpa_drv) { - if (wpa_drv->set_wpa(hd->unix_dev_name, 1) == 0) { - add_str_list(&res->wlan.auth_modes, "wpa-psk"); - add_str_list(&res->wlan.auth_modes, "wpa-eap"); - if (wpa_drv->set_auth_alg && - wpa_drv->set_auth_alg(hd->unix_dev_name, AUTH_ALG_LEAP)==0) - add_str_list(&res->wlan.auth_modes, "wpa-leap"); - if (wpa_drv->set_key(hd->unix_dev_name, WPA_ALG_TKIP, "ff:ff:ff:ff:ff:ff", - 0, 0, 0, 0, - "00000000000000000000000000000000", 32) ==0) - add_str_list(&res->wlan.enc_modes, "TKIP"); - if (wpa_drv->set_key(hd->unix_dev_name, WPA_ALG_CCMP, "ff:ff:ff:ff:ff:ff", - 0, 0, 0, 0, - "0000000000000000", 16) ==0) - add_str_list(&res->wlan.enc_modes, "CCMP"); - wpa_drv->set_wpa(hd->unix_dev_name, 0); - } - } - } - add_res_entry(&hd->res, res); - } - } -} - -/* following functions are copied from wpa_supplicant - they are used to detect WPA capabilities */ - -/* begin hostap */ - -#define PRISM2_IOCTL_PRISM2_PARAM (SIOCIWFIRSTPRIV + 0) -#define PRISM2_IOCTL_HOSTAPD (SIOCDEVPRIVATE + 14) -#define HOSTAP_CRYPT_ALG_NAME_LEN 16 -#define HOSTAP_CRYPT_FLAG_SET_TX_KEY (1 << (0)) -#define PRISM2_HOSTAPD_GENERIC_ELEMENT_HDR_LEN \ - ((int) (&((struct prism2_hostapd_param *) 0)->u.generic_elem.data)) - -enum { - PRISM2_SET_ENCRYPTION = 6, - PRISM2_HOSTAPD_SET_GENERIC_ELEMENT = 12, - PRISM2_PARAM_AP_AUTH_ALGS = 15, - PRISM2_PARAM_HOST_ROAMING = 21, - PRISM2_PARAM_WPA = 36, - PRISM2_PARAM_PRIVACY_INVOKED = 37, -}; - -struct prism2_hostapd_param { - u32 cmd; - u8 sta_addr[ETH_ALEN]; - union { - struct { - u16 aid; - u16 capability; - u8 tx_supp_rates; - } add_sta; - struct { - u32 inactive_sec; - } get_info_sta; - struct { - u8 alg[HOSTAP_CRYPT_ALG_NAME_LEN]; - u32 flags; - u32 err; - u8 idx; - u8 seq[8]; /* sequence counter (set: RX, get: TX) */ - u16 key_len; - u8 key[0]; - } crypt; - struct { - u32 flags_and; - u32 flags_or; - } set_flags_sta; - struct { - u16 rid; - u16 len; - u8 data[0]; - } rid; - struct { - u8 len; - u8 data[0]; - } generic_elem; - struct { - u16 cmd; - u16 reason_code; - } mlme; - struct { - u8 ssid_len; - u8 ssid[32]; - } scan_req; - } u; -}; - - -int hostapd_ioctl(const char *dev, struct prism2_hostapd_param *param, - int len, int show_err) -{ - int s; - int ret =0; - struct iwreq iwr; - - s = socket(PF_INET, SOCK_DGRAM, 0); - if (s < 0) { - return -1; - } - - memset(&iwr, 0, sizeof(iwr)); - strncpy(iwr.ifr_name, dev, IFNAMSIZ); - iwr.u.data.pointer = (caddr_t) param; - iwr.u.data.length = len; - - if (ioctl(s, PRISM2_IOCTL_HOSTAPD, &iwr) < 0) { - ret=1; - } - close(s); - - return 0; -} - -int prism2param(const char *ifname, int param, int value) -{ - struct iwreq iwr; - int *i, s, ret = 0; - - s = socket(PF_INET, SOCK_DGRAM, 0); - if (s < 0) { - return -1; - } - - memset(&iwr, 0, sizeof(iwr)); - strncpy(iwr.ifr_name, ifname, IFNAMSIZ); - i = (int *) iwr.u.name; - *i++ = param; - *i++ = value; - - if (ioctl(s, PRISM2_IOCTL_PRISM2_PARAM, &iwr) < 0) { - ret = -1; - } - close(s); - return ret; -} - -int wpa_driver_hostap_set_auth_alg(const char *ifname, int auth_alg) -{ - int algs = 0; - - if (auth_alg & AUTH_ALG_OPEN_SYSTEM) - algs |= 1; - if (auth_alg & AUTH_ALG_SHARED_KEY) - algs |= 2; - if (auth_alg & AUTH_ALG_LEAP) - algs |= 4; - if (algs == 0) - algs = 1; /* at least one algorithm should be set */ - - return prism2param(ifname, PRISM2_PARAM_AP_AUTH_ALGS, algs); -} - -int wpa_driver_hostap_set_wpa(const char *ifname, int enabled) -{ - int ret = 0; - - if (prism2param(ifname, PRISM2_PARAM_HOST_ROAMING, - enabled ? 2 : 0) < 0) - ret = -1; - if (prism2param(ifname, PRISM2_PARAM_PRIVACY_INVOKED, enabled) < 0) - ret = -1; - if (prism2param(ifname, PRISM2_PARAM_WPA, enabled) < 0) - ret = -1; - - return ret; -} - -int wpa_driver_hostap_set_key(const char *ifname, wpa_alg alg, - unsigned char *addr, int key_idx, - int set_tx, u8 *seq, size_t seq_len, - u8 *key, size_t key_len) -{ - struct prism2_hostapd_param *param; - u8 *buf; - size_t blen; - int ret = 0; - char *alg_name; - - switch (alg) { - case WPA_ALG_NONE: - alg_name = "none"; - break; - case WPA_ALG_WEP: - alg_name = "WEP"; - break; - case WPA_ALG_TKIP: - alg_name = "TKIP"; - break; - case WPA_ALG_CCMP: - alg_name = "CCMP"; - break; - default: - return -1; - } - - if (seq_len > 8) - return -2; - - blen = sizeof(*param) + key_len; - buf = malloc(blen); - if (buf == NULL) - return -1; - memset(buf, 0, blen); - - param = (struct prism2_hostapd_param *) buf; - param->cmd = PRISM2_SET_ENCRYPTION; - memset(param->sta_addr, 0xff, ETH_ALEN); - - strncpy(param->u.crypt.alg, alg_name, HOSTAP_CRYPT_ALG_NAME_LEN); - param->u.crypt.flags = set_tx ? HOSTAP_CRYPT_FLAG_SET_TX_KEY : 0; - param->u.crypt.idx = key_idx; - memcpy(param->u.crypt.seq, seq, seq_len); - param->u.crypt.key_len = key_len; - memcpy((u8 *) (param + 1), key, key_len); - - if (hostapd_ioctl(ifname, param, blen, 1)) { - ret = -1; - } - free(buf); - - return ret; -} - -struct wpa_driver_ops wpa_driver_hostap_ops = { - .set_wpa = wpa_driver_hostap_set_wpa, - .set_key = wpa_driver_hostap_set_key, - .set_auth_alg = wpa_driver_hostap_set_auth_alg, -}; - -/* end hostap */ - -/* begin madwifi */ - -#define IEEE80211_IOCTL_SETPARAM (SIOCIWFIRSTPRIV+0) -#define IEEE80211_IOCTL_SETKEY (SIOCIWFIRSTPRIV+2) -#define IEEE80211_CIPHER_WEP 0 -#define IEEE80211_CIPHER_TKIP 1 -#define IEEE80211_CIPHER_AES_CCM 3 -#define IEEE80211_ADDR_LEN 6 -#define IEEE80211_KEY_XMIT 0x01 -#define IEEE80211_KEY_RECV 0x02 -#define IEEE80211_KEYBUF_SIZE 16 -#define IEEE80211_MICBUF_SIZE 16 - -enum { - IEEE80211_PARAM_WPA = 10, /* WPA mode (0,1,2) */ - IEEE80211_PARAM_ROAMING = 12, /* roaming mode */ - IEEE80211_PARAM_PRIVACY = 13, /* privacy invoked */ -}; - -struct ieee80211req_key { - u_int8_t ik_type; /* key/cipher type */ - u_int8_t ik_pad; - u_int16_t ik_keyix; /* key index */ - u_int8_t ik_keylen; /* key length in bytes */ - u_int8_t ik_flags; -#define IEEE80211_KEY_DEFAULT 0x80 /* default xmit key */ - u_int8_t ik_macaddr[IEEE80211_ADDR_LEN]; - u_int64_t ik_keyrsc; /* key receive sequence counter */ - u_int64_t ik_keytsc; /* key transmit sequence counter */ - u_int8_t ik_keydata[IEEE80211_KEYBUF_SIZE+IEEE80211_MICBUF_SIZE]; -}; - -int -set80211param(const char *dev, int op, int arg) -{ - struct iwreq iwr; - int s=-1; - - if (s < 0 ? (s = socket(AF_INET, SOCK_DGRAM, 0)) == -1 : 0) { - return -1; - } - - memset(&iwr, 0, sizeof(iwr)); - strncpy(iwr.ifr_name, dev, IFNAMSIZ); - iwr.u.mode = op; - memcpy(iwr.u.name+sizeof(__u32), &arg, sizeof(arg)); - - if (ioctl(s, IEEE80211_IOCTL_SETPARAM, &iwr) < 0) { - return -1; - } - return 0; -} - -static int -wpa_driver_madwifi_set_wpa(const char *ifname, int enabled) -{ - int ret = 0; - - if (set80211param(ifname, IEEE80211_PARAM_ROAMING, enabled ? 2 : 0) < 0) - ret = -1; - if (set80211param(ifname, IEEE80211_PARAM_PRIVACY, enabled) < 0) - ret = -1; - if (set80211param(ifname, IEEE80211_PARAM_WPA, enabled ? 3 : 0) < 0) - ret = -1; - - return ret; -} - -static int -set80211priv(const char *dev, int op, void *data, int len) -{ - struct iwreq iwr; - int s=-1; - - if (s < 0 ? (s = socket(AF_INET, SOCK_DGRAM, 0)) == -1 : 0) { - return -1; - } - - memset(&iwr, 0, sizeof(iwr)); - strncpy(iwr.ifr_name, dev, IFNAMSIZ); - if (len < IFNAMSIZ) { - /* - * Argument data fits inline; put it there. - */ - memcpy(iwr.u.name, data, len); - } else { - /* - * Argument data too big for inline transfer; setup a - * parameter block instead; the kernel will transfer - * the data for the driver. - */ - iwr.u.data.pointer = data; - iwr.u.data.length = len; - } - - if (ioctl(s, op, &iwr) < 0) { - return -1; - } - return 0; -} - -static int -wpa_driver_madwifi_set_key(const char *ifname, wpa_alg alg, - unsigned char *addr, int key_idx, - int set_tx, u8 *seq, size_t seq_len, - u8 *key, size_t key_len) -{ - struct ieee80211req_key wk; - char *alg_name; - u_int8_t cipher; - - if (alg == WPA_ALG_NONE) - return 0; - - switch (alg) { - case WPA_ALG_WEP: - alg_name = "WEP"; - cipher = IEEE80211_CIPHER_WEP; - break; - case WPA_ALG_TKIP: - alg_name = "TKIP"; - cipher = IEEE80211_CIPHER_TKIP; - break; - case WPA_ALG_CCMP: - alg_name = "CCMP"; - cipher = IEEE80211_CIPHER_AES_CCM; - break; - default: - return -1; - } - - if (seq_len > sizeof(u_int64_t)) { - return -2; - } - if (key_len > sizeof(wk.ik_keydata)) { - return -3; - } - - memset(&wk, 0, sizeof(wk)); - wk.ik_type = cipher; - wk.ik_flags = IEEE80211_KEY_RECV; - if (set_tx) { - wk.ik_flags |= IEEE80211_KEY_XMIT | IEEE80211_KEY_DEFAULT; - memcpy(wk.ik_macaddr, addr, IEEE80211_ADDR_LEN); - } else - memset(wk.ik_macaddr, 0, IEEE80211_ADDR_LEN); - wk.ik_keyix = key_idx; - wk.ik_keylen = key_len; - memcpy(&wk.ik_keyrsc, seq, seq_len); - memcpy(wk.ik_keydata, key, key_len); - - return set80211priv(ifname, IEEE80211_IOCTL_SETKEY, &wk, sizeof(wk)); -} - -struct wpa_driver_ops wpa_driver_madwifi_ops = { - .set_wpa = wpa_driver_madwifi_set_wpa, - .set_key = wpa_driver_madwifi_set_key, -}; - -/* end madwifi */ - -/* begin ipw */ - -#define IPW_IOCTL_WPA_SUPPLICANT SIOCIWFIRSTPRIV+30 -#define IPW_CMD_SET_WPA_PARAM 1 -#define IPW_CMD_SET_ENCRYPTION 3 -#define IPW_PARAM_WPA_ENABLED 1 -#define IPW_PARAM_AUTH_ALGS 5 -#define IPW_CRYPT_ALG_NAME_LEN 16 - -struct ipw_param { - u32 cmd; - u8 sta_addr[ETH_ALEN]; - union { - struct { - u8 name; - u32 value; - } wpa_param; - struct { - u32 len; - u8 *data; - } wpa_ie; - struct{ - int command; - int reason_code; - } mlme; - struct { - u8 alg[IPW_CRYPT_ALG_NAME_LEN]; - u8 set_tx; - u32 err; - u8 idx; - u8 seq[8]; - u16 key_len; - u8 key[0]; - } crypt; - - } u; -}; - -int ipw_ioctl(const char *dev, struct ipw_param *param, int len) -{ - struct iwreq iwr; - int s; - int ret = 0; - - s = socket(PF_INET, SOCK_DGRAM, 0); - if (s < 0) { - return -1; - } - - memset(&iwr, 0, sizeof(iwr)); - strncpy(iwr.ifr_name, dev, IFNAMSIZ); - iwr.u.data.pointer = (caddr_t) param; - iwr.u.data.length = len; - - if (ioctl(s, IPW_IOCTL_WPA_SUPPLICANT, &iwr) < 0) { - ret = -1; - } - - close(s); - return ret; -} - -int wpa_driver_ipw_set_wpa(const char *ifname, int enabled) -{ - int ret = 0; - struct ipw_param param; - - memset(¶m, 0, sizeof(param)); - param.cmd = IPW_CMD_SET_WPA_PARAM; - param.u.wpa_param.name = IPW_PARAM_WPA_ENABLED; - param.u.wpa_param.value = enabled; - - if (ipw_ioctl(ifname, ¶m, sizeof(param)) < 0) - ret = -1; - - return ret; -} - -int wpa_driver_ipw_set_key(const char *ifname, wpa_alg alg, - unsigned char *addr, int key_idx, int set_tx, - u8 *seq, size_t seq_len, - u8 *key, size_t key_len) -{ - struct ipw_param *param; - u8 *buf; - size_t blen; - int ret = 0; - char *alg_name; - - switch (alg) { - case WPA_ALG_NONE: - alg_name = "none"; - break; - case WPA_ALG_WEP: - alg_name = "WEP"; - break; - case WPA_ALG_TKIP: - alg_name = "TKIP"; - break; - case WPA_ALG_CCMP: - alg_name = "CCMP"; - break; - default: - return -1; - } - - if (seq_len > 8) - return -2; - - blen = sizeof(*param) + key_len; - buf = malloc(blen); - if (buf == NULL) - return -1; - memset(buf, 0, blen); - - param = (struct ipw_param *) buf; - param->cmd = IPW_CMD_SET_ENCRYPTION; - memset(param->sta_addr, 0xff, ETH_ALEN); - strncpy(param->u.crypt.alg, alg_name, IPW_CRYPT_ALG_NAME_LEN); - param->u.crypt.set_tx = set_tx ? 1 : 0; - param->u.crypt.idx = key_idx; - memcpy(param->u.crypt.seq, seq, seq_len); - param->u.crypt.key_len = key_len; - memcpy((u8 *) (param + 1), key, key_len); - - if (ipw_ioctl(ifname, param, blen)) { - ret = -1; - } - free(buf); - - return ret; -} - -int wpa_driver_ipw_set_auth_alg(const char *ifname, int auth_alg) -{ - int algs = 0; - struct ipw_param param; - - if (auth_alg & AUTH_ALG_OPEN_SYSTEM) - algs |= 1; - if (auth_alg & AUTH_ALG_SHARED_KEY) - algs |= 2; - if (auth_alg & AUTH_ALG_LEAP) - algs |= 4; - if (algs == 0) - algs = 1; /* at least one algorithm should be set */ - - memset(¶m, 0, sizeof(param)); - param.cmd = IPW_CMD_SET_WPA_PARAM; - param.u.wpa_param.name = IPW_PARAM_AUTH_ALGS; - param.u.wpa_param.value = algs; - - return ipw_ioctl(ifname, ¶m, sizeof(param)); -} - -struct wpa_driver_ops wpa_driver_ipw_ops = { - .set_wpa = wpa_driver_ipw_set_wpa, - .set_key = wpa_driver_ipw_set_key, - .set_auth_alg = wpa_driver_ipw_set_auth_alg -}; - -/* end ipw */ - -/* begin atmel */ - -#define ATMEL_WPA_IOCTL (SIOCIWFIRSTPRIV + 2) -#define ATMEL_WPA_IOCTL_PARAM (SIOCIWFIRSTPRIV + 3) -#define ATMEL_WPA_IOCTL_GET_PARAM (SIOCIWFIRSTPRIV + 4) - -#define MAX_KEY_LENGTH 40 - -/* ATMEL_WPA_IOCTL ioctl() cmd: */ -enum { - SET_WPA_ENCRYPTION = 1, - SET_CIPHER_SUITES = 2, -}; - -/* ATMEL_WPA_IOCTL_PARAM ioctl() cmd: */ -enum { - ATMEL_PARAM_WPA = 1, - ATMEL_PARAM_PRIVACY_INVOKED = 2, - ATMEL_PARAM_WPA_TYPE = 3, -}; - -struct atmel_param{ - unsigned char sta_addr[6]; - int cmd; - u8 alg; - u8 key_idx; - u8 set_tx; - u8 seq[8]; - u8 seq_len; - u16 key_len; - u8 key[MAX_KEY_LENGTH]; - struct{ - int reason_code; - u8 state; - }mlme; - u8 pairwise_suite; - u8 group_suite; - u8 key_mgmt_suite; -}; - -int atmel_ioctl(const char *dev, struct atmel_param *param, int len) -{ - int s; - int ret=0; - struct iwreq iwr; - - s = socket(PF_INET, SOCK_DGRAM, 0); - if (s < 0) { - return -1; - } - - memset(&iwr, 0, sizeof(iwr)); - strncpy(iwr.ifr_name, dev, IFNAMSIZ); - iwr.u.data.pointer = (caddr_t) param; - iwr.u.data.length = len; - - if (ioctl(s, ATMEL_WPA_IOCTL, &iwr) < 0) { - ret = -1; - } - close(s); - - return 0; -} - -int atmel2param(const char *ifname, int param, int value) -{ - struct iwreq iwr; - int *i, s, ret = 0; - - s = socket(PF_INET, SOCK_DGRAM, 0); - if (s < 0) { - return -1; - } - - memset(&iwr, 0, sizeof(iwr)); - strncpy(iwr.ifr_name, ifname, IFNAMSIZ); - i = (int *) iwr.u.name; - *i++ = param; - *i++ = value; - - if (ioctl(s, ATMEL_WPA_IOCTL_PARAM, &iwr) < 0) { - ret = -1; - } - close(s); - return ret; -} - -int wpa_driver_atmel_set_wpa(const char *ifname, int enabled) -{ - int ret = 0; - - if (atmel2param(ifname, ATMEL_PARAM_PRIVACY_INVOKED, enabled) < 0) - ret = -1; - if (atmel2param(ifname, ATMEL_PARAM_WPA, enabled) < 0) - ret = -1; - - return ret; -} - -int wpa_driver_atmel_set_key(const char *ifname, wpa_alg alg, - unsigned char *addr, int key_idx, - int set_tx, u8 *seq, size_t seq_len, - u8 *key, size_t key_len) -{ - int ret = 0; - struct atmel_param *param; - u8 *buf; - u8 alg_type; - - size_t blen; - char *alg_name; - - switch (alg) { - case WPA_ALG_NONE: - alg_name = "none"; - alg_type = 0; - break; - case WPA_ALG_WEP: - alg_name = "WEP"; - alg_type = 1; - break; - case WPA_ALG_TKIP: - alg_name = "TKIP"; - alg_type = 2; - break; - case WPA_ALG_CCMP: - alg_name = "CCMP"; - alg_type = 3; - break; - default: - return -1; - } - - if (seq_len > 8) - return -2; - - blen = sizeof(*param) + key_len; - buf = malloc(blen); - if (buf == NULL) - return -1; - memset(buf, 0, blen); - - param = (struct atmel_param *) buf; - - param->cmd = SET_WPA_ENCRYPTION; - - if (addr == NULL) - memset(param->sta_addr, 0xff, ETH_ALEN); - else - memcpy(param->sta_addr, addr, ETH_ALEN); - - param->alg = alg_type; - param->key_idx = key_idx; - param->set_tx = set_tx; - memcpy(param->seq, seq, seq_len); - param->seq_len = seq_len; - param->key_len = key_len; - memcpy((u8 *)param->key, key, key_len); - - if (atmel_ioctl(ifname, param, blen)) { - ret = -1; - } - free(buf); - - return ret; -} - -struct wpa_driver_ops wpa_driver_atmel_ops = { - .set_wpa = wpa_driver_atmel_set_wpa, - .set_key = wpa_driver_atmel_set_key, -}; - -/* end atmel */ - -/* begin ndiswrapper */ - -#define WPA_SET_WPA SIOCIWFIRSTPRIV+1 -#define WPA_SET_KEY SIOCIWFIRSTPRIV+2 -#define WPA_SET_AUTH_ALG SIOCIWFIRSTPRIV+8 - -struct wpa_key -{ - wpa_alg alg; - u8 *addr; - int key_index; - int set_tx; - u8 *seq; - size_t seq_len; - u8 *key; - size_t key_len; -}; - -int wpa_ndiswrapper_set_ext(const char *ifname, int request, struct iwreq *pwrq) -{ - int s; - int ret; - - s = socket( AF_INET, SOCK_DGRAM, 0); - if (s < 0) - return -1; - - strncpy(pwrq->ifr_name, ifname, IFNAMSIZ); - ret = ioctl(s, request, pwrq); - close(s); - return ret; -} - -int wpa_ndiswrapper_set_wpa(const char *ifname, int enabled) -{ - struct iwreq priv_req; - int ret = 0; - - memset(&priv_req, 0, sizeof(priv_req)); - - priv_req.u.data.flags = enabled; - if (wpa_ndiswrapper_set_ext(ifname, WPA_SET_WPA, &priv_req) < 0) - ret = -1; - return ret; -} - -int wpa_ndiswrapper_set_key(const char *ifname, wpa_alg alg, u8 *addr, - int key_idx, int set_tx, u8 *seq, - size_t seq_len, u8 *key, size_t key_len) -{ - struct wpa_key wpa_key; - int ret = 0; - struct iwreq priv_req; - - memset(&priv_req, 0, sizeof(priv_req)); - - wpa_key.alg = alg; - wpa_key.addr = addr; - wpa_key.key_index = key_idx; - wpa_key.set_tx = set_tx; - wpa_key.seq = seq; - wpa_key.seq_len = seq_len; - wpa_key.key = key; - wpa_key.key_len = key_len; - - priv_req.u.data.pointer = (void *)&wpa_key; - - if (wpa_ndiswrapper_set_ext(ifname, WPA_SET_KEY, &priv_req) < 0) - ret = -1; - return ret; -} - -static int wpa_ndiswrapper_set_auth_alg(const char *ifname, int auth_alg) -{ - int ret = 0; - struct iwreq priv_req; - - memset(&priv_req, 0, sizeof(priv_req)); - - priv_req.u.param.value = auth_alg; - if (wpa_ndiswrapper_set_ext(ifname, WPA_SET_AUTH_ALG, &priv_req) < 0) - ret = -1; - return ret; -} - -struct wpa_driver_ops wpa_driver_ndiswrapper_ops = { - .set_wpa = wpa_ndiswrapper_set_wpa, - .set_key = wpa_ndiswrapper_set_key, - .set_auth_alg = wpa_ndiswrapper_set_auth_alg, -}; - -/* end ndiswrapper */ - -#endif /* !defined(LIBHD_TINY) */ - diff --git a/src/hwinfo/src/hd/wlan.h b/src/hwinfo/src/hd/wlan.h deleted file mode 100644 index 6608a303a5..0000000000 --- a/src/hwinfo/src/hd/wlan.h +++ /dev/null @@ -1 +0,0 @@ -void hd_scan_wlan(hd_data_t *hd_data); diff --git a/src/hwinfo/src/ids/Makefile b/src/hwinfo/src/ids/Makefile deleted file mode 100644 index 53b8b37650..0000000000 --- a/src/hwinfo/src/ids/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -TOPDIR = ../.. -TARGETS = $(LIBHD_D) -CLEANFILES = *.log src/*~ -DISTCLEANFILES = *.h *.xml *.ids check_hd - -include $(TOPDIR)/Makefile.common - -ifeq "$(ARCH)" "ppc" -IDFILES += src/ppc -endif - -ifeq "$(ARCH)" "ppc64" -IDFILES += src/ppc -endif - -IDFILES += src/bus src/class src/extra src/special src/scanner src/network \ - src/usb src/usb2 src/isapnp src/monitor src/camera src/tv src/dvb \ - src/chipcard src/modem src/pcmcia src/s390 - -ifeq "$(ARCH)" "i386" -IDFILES += src/x11.i386 src/modem.i386 -endif - -ifeq "$(ARCH)" "ppc" -IDFILES += src/x11.ppc src/x11.ppc.special -endif - -ifeq "$(ARCH)" "alpha" -IDFILES += src/x11.axp -endif - -ifeq "$(ARCH)" "sparc" -IDFILES += src/x11.sparc -endif - -ifeq "$(ARCH)" "sparc64" -IDFILES += src/x11.sparc -endif - -ifeq "$(ARCH)" "ia64" -IDFILES += src/x11.ia64 -endif - -ifeq "$(ARCH)" "x86_64" -IDFILES += src/x11.amd64 -endif - -IDFILES += src/pci src/storage src/sound src/mouse src/braille - -$(LIBHD_D): hd_ids.o - ar r $(LIBHD) $? - -check_hd: check_hd.c - $(CC) $(CFLAGS) $< -o $@ - -hd_ids.c: hd_ids.h hd_ids_tiny.h - -hd_ids.h hd.ids: check_hd $(IDFILES) - ./check_hd --check --sort --cfile hd_ids.h $(IDFILES) - -hd_ids_tiny.h: check_hd hd.ids - ./check_hd --mini --cfile hd_ids_tiny.h --log=hd_tiny.log --out=hd_tiny.ids hd.ids - diff --git a/src/hwinfo/src/ids/cdb_x11 b/src/hwinfo/src/ids/cdb_x11 deleted file mode 100755 index 9be446cd91..0000000000 --- a/src/hwinfo/src/ids/cdb_x11 +++ /dev/null @@ -1,349 +0,0 @@ -#!/usr/bin/perl -w -# Copyright (c) 1996 SuSE GmbH Nuernberg, Germany. All rights reserved. -# -# Author: Dirk Hessing , 08/2001 -# -# Exporting hw-data for x11 from developer-CDB - - -use DBI; -use strict; -use IO::Handle; -use Getopt::Long; - -# MySQL-Host / MySQL-User -my $hostname = "cdbintern.suse.de"; -my $mysql_user = "cdbclient"; -my $mysql_passwd = "cdb"; -my $target = "cdb"; - -my $driver = DBI->install_driver('mysql'); -my $dbh = DBI->connect('DBI:mysql:'.$target.':'.$hostname,$mysql_user,$mysql_passwd) - or die "Can't connect to the MySQL Database, table $target"; - -### Log-Handle und STDOUT-Handle auf ungepufferte Ausgabe setzten (schlechtere Performance ;-) -STDOUT->autoflush(); - - -my $dist_name = "Stable"; -my $date = localtime(); - -my (@query,$x,$result,$arch_name,@arch_names,$filename,$count); -my ($product_id,$product_name,$vendor_name,$bus_name,$subclass_name); -my ($vId,$dId,$sdId,$svId); -my (%tooltopics,$tooltopic_name,$vario_name,$charvalue); - -my $opt_dir = "tmp"; - - -# convert to new id format -sub new_id -{ - my ($old_id, $id_class, $tag, $id); - - ($old_id, $id_class) = @_; - - if($old_id =~ /^([us]?)(\S{4})$/) { - $tag = $1; - $id = $2; - } - else { - die "invalid id format: \"$old_id\"\n"; - } - - if($tag eq "" && $id_class && $id_class =~ /^([us]?)(\S{4})$/) { - $tag = $1; - } - - if($tag eq "s") { - $tag = "special "; - } - elsif($tag eq "u") { - $tag = "usb "; - } - elsif($tag eq "") { - $tag = "pci "; - } - else { - die "invalid id format: \"$old_id\"\n"; - } - - return "${tag}0x$id"; -} - - -# write data to FH -sub write_info -{ - my ($arch, $xfree, $has3d, $vId, $dId, $svId, $sdId, $vName, $dName, $tt, $raw, @raw); - - ($arch, $xfree, $has3d, $vId, $dId, $svId, $sdId, $vName, $dName, $tt) = @_; - - return unless $vId ne "" && $dId ne ""; - - # print FH "\n# vId = $vId, dId = $dId, svId = $svId, sdId = $sdId, vName = \"$vName\", dName = \"$dName\"\n"; - - if($svId ne "" && $sdId ne "") { - print FH "\n vendor.id\t\t${\new_id $vId}\n"; - print FH "+vendor.name\t\t$vName\n"; - - print FH "\n vendor.id\t\t${\new_id $vId}\n"; - print FH "&device.id\t\t${\new_id $dId, $vId}\n"; - print FH "&subvendor.id\t\t${\new_id $svId, $vId}\n"; - print FH "&subdevice.id\t\t${\new_id $sdId, $vId}\n"; - print FH "+subdevice.name\t\t$dName\n"; - } - else { - print FH "\n vendor.id\t\t${\new_id $vId}\n"; - print FH "+vendor.name\t\t$vName\n"; - - print FH "\n vendor.id\t\t${\new_id $vId}\n"; - print FH "&device.id\t\t${\new_id $dId, $vId}\n"; - print FH "+device.name\t\t$dName\n"; - } - - if($$tt{resol} ne "") { - $$tt{resol} =~ s/bpp//g; - } - - # Teste ob mehr als ein driver- oder installscript-topic vorhanden ist: - if(($$tt{driver} =~ /,/) || ($$tt{installscript} =~ /,/)) { - warn - "\nMore than one driver- or installscript-topic.\n" . - " Product-id = $product_id, Vario = $vario_name, Arch = $arch\n" . - " Id = (${\new_id $vId}, ${\new_id $dId, $vId}), Name = $dName\n" . - " Driver = \"$$tt{driver}\", script = \"$$tt{installscript}\"\n"; - } - - print FH - "+driver.xfree\t\t$xfree|$$tt{driver}|" . - ($has3d ? "3d" : "") . - "|$$tt{package}|$$tt{extension}|$$tt{option}|$$tt{resol}||$$tt{installscript}|\n"; - - if ($$tt{raw} ne "") { - @raw = (split(',',$$tt{raw})); - foreach $raw (@raw) { - print FH "+driver.xfree.config\t$raw\n"; - } - } -} - - -# get product info and write everything to FH -sub get_info -{ - my ($arch_name, $xfree, $has3d); - - ($arch_name, $vario_name) = @_; - - $xfree = $vario_name =~ /XFree3/ ? 3 : 4; - $has3d = $vario_name =~ /3D/ ? 1 : 0; - - $tooltopics{driver} = ""; - $tooltopics{package} = ""; - $tooltopics{extension} = ""; - $tooltopics{option} = ""; - $tooltopics{resol} = ""; - $tooltopics{installscript} = ""; - $tooltopics{raw} = ""; - - # Product supported=full? - $query[2] = $dbh->prepare("SELECT toolproperty.charvalue FROM toolproperty - LEFT JOIN tooltopic ON toolproperty.tooltopic_id=tooltopic.id - LEFT JOIN arch_dist_l_vario ON toolproperty.arch_dist_l_vario_id=arch_dist_l_vario.id - LEFT JOIN arch ON arch_dist_l_vario.arch_id=arch.id - LEFT JOIN distribution ON arch_dist_l_vario.distribution_id=distribution.id - LEFT JOIN vario ON arch_dist_l_vario.vario_id=vario.id - WHERE toolproperty.product_id=$product_id - AND tooltopic.name='supported' - AND arch.name='$arch_name' - AND distribution.name='$dist_name' - AND vario.name='$vario_name' - AND toolproperty.valid=1 - AND tooltopic.valid=1 - AND arch_dist_l_vario.valid=1") - or die "Can\'t select table toolproperty"; - $query[2]->execute or die "Can\'t select table toolproperty"; - - undef $result; - $count = 0; - while ($x = $query[2]->fetchrow_array) { - $result = $x if defined $x; - multiple_supportedtopics($dbh,$product_id,$product_name,$arch_name,$dist_name,$vario_name) if $count > 0; - $count++; - } - $result = "" if not defined $result; - - if ($result eq "full") { - $query[2] = $dbh->prepare("SELECT tooltopic.name,toolproperty.charvalue FROM toolproperty - LEFT JOIN tooltopic ON toolproperty.tooltopic_id=tooltopic.id - LEFT JOIN arch_dist_l_vario ON toolproperty.arch_dist_l_vario_id=arch_dist_l_vario.id - LEFT JOIN arch ON arch_dist_l_vario.arch_id=arch.id - LEFT JOIN distribution ON arch_dist_l_vario.distribution_id=distribution.id - LEFT JOIN language ON arch_dist_l_vario.lang_id=language.id - LEFT JOIN vario ON arch_dist_l_vario.vario_id=vario.id - WHERE arch.name='$arch_name' - AND distribution.name='$dist_name' - AND vario.name='$vario_name' - AND toolproperty.product_id=$product_id - AND tooltopic.name != 'supported' - AND toolproperty.valid=1 - AND tooltopic.valid=1 - AND arch_dist_l_vario.valid=1") - or die "Can\'t select table toolproperty"; - $query[2]->execute or die "Can\'t select table toolproperty"; - - while ( ($tooltopic_name,$charvalue) = ($query[2]->fetchrow_array) ) { - if (($charvalue eq "none") || ($charvalue eq "None")) { - $charvalue = ""; - } - next if $charvalue eq ""; - if (!$tooltopics{"$tooltopic_name"}) { - $tooltopics{"$tooltopic_name"} = $charvalue; - } else { - $tooltopics{"$tooltopic_name"} .= ",".$charvalue; - } - } - - write_info $arch_name, $xfree, $has3d, $vId, $dId, $svId, $sdId, $vendor_name, $product_name, \%tooltopics; - } -} - - -GetOptions( - 'dir=s' => \$opt_dir -) ; - - -print "\n\nGenerating x11.hwinfo-files, one for each architecture.\n"; -mkdir($opt_dir, 0755) || die "\nmkdir: $opt_dir: $!\n" unless -d $opt_dir; - -print "\nStoring files in \"$opt_dir\"\n\n"; - -$query[0] = $dbh->prepare("SELECT name FROM arch WHERE valid=1") - or die "Can\'t select table arch"; -$query[0]->execute or die "Can\'t select table arch"; -while ($result = $query[0]->fetchrow_array) { - push(@arch_names,$result); -} - -# Für jede Architektur wird eine eigene Datei geschrieben -foreach $arch_name (@arch_names) { - $filename = "$opt_dir/x11.hwinfo.$arch_name"; - open(FH,"> $filename") or die "Can\'t open $filename"; - print FH "#\n"; - print FH "# x11.hwinfo-file for architecture $arch_name\n"; - print FH "#\n"; - print FH "# generated at: $date\n"; - print FH "# data source: CDB\n"; - print FH "# distribution: $dist_name\n"; - print FH "#\n\n\n"; - - $query[0] = $dbh->prepare("SELECT product.id,product.name, - product.vId,product.dId,product.svId,product.sdId, - vendor.longname,product.vId, - bus.name,subclass.name FROM product - LEFT JOIN product_area ON product.id=product_area.product_id - LEFT JOIN groups ON product_area.group_id=groups.id - LEFT JOIN vendor ON product.vendor_id=vendor.id - LEFT JOIN bus ON product.bus_id=bus.id - LEFT JOIN subclass ON product.subclass_id=subclass.id - WHERE groups.name='graphic-developer' - AND product_area.valid=1 - AND product.valid=1") - or die "Can\'t select table product"; - $query[0]->execute or die "Can\'t select table product"; - while ( ($product_id,$product_name,$vId,$dId,$svId,$sdId,$vendor_name,$vId,$bus_name,$subclass_name) = ($query[0]->fetchrow_array) ) { - # Postinitialisierung, falls undefinierte Werte - $vId = "----" if !defined($vId); - $dId = "----" if !defined($dId); - $svId = "----" if !defined($svId); - $sdId = "----" if !defined($sdId); - - $vId = "" if $vId eq "----"; - $dId = "" if $dId eq "----"; - $svId = "" if $svId eq "----"; - $sdId = "" if $sdId eq "----"; - - # Step 1: Erzeuge Zeilen für XFree 3 ohne 3D - get_info $arch_name, "XFree3"; - - # Step 2: Erzeuge Zeilen für XFree 3 mit 3D - get_info $arch_name, "XFree3 with 3D"; - - # Step 2: Erzeuge Zeilen für XFree 4 ohne 3D - get_info $arch_name, "XFree4"; - - # Step 2: Erzeuge Zeilen für XFree 4 mit 3D - get_info $arch_name, "XFree4 with 3D"; - - } # Ende der Produktschleife - close(FH); -} # Ende der Arch-Schleife - - - - -sub multiple_supportedtopics { - my $handle = shift; - my $product_id = shift; - my $product_name = shift; - my $arch_name = shift; - my $dist_name = shift; - my $vario_name = shift; - my ($query,$id,$value,$name,$time,$htime,%topic,$key,$answer,%key); - - my $min_key = "0"; - undef %key; - - print "\n *********** Unconsistency registered *******************"; - print "\nMultiple supported-topics:"; - print "\nProduct_name: $product_name ID=$product_id"; - print "\nArch=$arch_name Dist=$dist_name Vario=$vario_name"; - print "\n"; - - $query = $handle->prepare("SELECT toolproperty.id,tooltopic.name, - toolproperty.charvalue,toolproperty.createtime - FROM toolproperty - LEFT JOIN tooltopic ON toolproperty.tooltopic_id=tooltopic.id - LEFT JOIN arch_dist_l_vario ON toolproperty.arch_dist_l_vario_id=arch_dist_l_vario.id - LEFT JOIN arch ON arch_dist_l_vario.arch_id=arch.id - LEFT JOIN distribution ON arch_dist_l_vario.distribution_id=distribution.id - LEFT JOIN vario ON arch_dist_l_vario.vario_id=vario.id - WHERE toolproperty.product_id=$product_id - AND tooltopic.name='supported' - AND toolproperty.valid=1 - AND arch.name='$arch_name' - AND distribution.name='$dist_name' - AND vario.name='$vario_name'") - or die "Can\'t select table toolproperty"; - $query->execute or die "Can\'t select table toolproperty"; - while (($id,$name,$value,$time) = ($query->fetchrow_array)) { - $htime = localtime($time); - $topic{$id} = $htime." ".$value; - $min_key = $id; - } - foreach $key (sort keys %topic) { - $min_key = $key if $key<$min_key; - } - foreach $key (sort keys %topic) { - print "\nD toolproperty-ID $key: $topic{$key}" if $key != $min_key; - } - print "\n* toolproperty-ID $min_key:$topic{$min_key}"; - print "\n\nDeleting doublettes marked with D (* will be left the valid one) [N|y] ?"; - $answer = ; - chop($answer); - if ( ($answer eq "y") || ($answer eq "Y") ) { - print "\n\nDeleting supported-doublettes.... done\n"; - foreach $key (keys %topic) { - if ($key != $min_key) { - $query = $handle->prepare("DELETE FROM toolproperty - WHERE id=$key") - or die "Can\'t delete from toolproperty"; - $query->execute or die "Can\'t delete from toolproperty"; - } - } - } - return; -} - diff --git a/src/hwinfo/src/ids/check_hd.c b/src/hwinfo/src/ids/check_hd.c deleted file mode 100644 index eedbe4aa1f..0000000000 --- a/src/hwinfo/src/ids/check_hd.c +++ /dev/null @@ -1,2859 +0,0 @@ -#define _GNU_SOURCE /* memmem */ -#include -#include -#include -#include -#include -#include -#include -#include - -#include "../hd/hddb_int.h" - -#define TAG_PCI 1 /* pci ids */ -#define TAG_EISA 2 /* eisa ids */ -#define TAG_USB 3 /* usb ids */ -#define TAG_SPECIAL 4 /* internally used ids */ -#define TAG_PCMCIA 5 /* pcmcia ids */ - -#define ID_VALUE(id) ((id) & 0xffff) -#define ID_TAG(id) (((id) >> 16) & 0xf) -#define MAKE_ID(tag, id_val) ((tag << 16) | (id_val)) - -typedef uint32_t hddb_entry_mask_t; - -typedef enum { - match_any, match_all -} match_t; - -typedef enum { - pref_empty, pref_new, pref_and, pref_or, pref_add -} prefix_t; - -typedef struct line_s { - prefix_t prefix; - hddb_entry_t key; - char *value; -} line_t; - -typedef struct str_s { - struct str_s *next; - char *str; -} str_t; - -typedef struct list_any_s { - struct list_any_s *next; -} list_any_t; - -typedef struct { - void *first; - void *last; -} list_t; - -typedef struct { - unsigned flag; - unsigned remove; -} hid_any_t; - -typedef struct { - unsigned flag; - unsigned remove; - unsigned tag; - unsigned id; - unsigned range; - unsigned mask; - struct { - unsigned range:1; - unsigned mask:1; - } has; -} hid_num_t; - -typedef struct { - unsigned flag; - unsigned remove; - list_t list; -} hid_str_t; - -typedef union { - hid_any_t any; - hid_num_t num; - hid_str_t str; -} hid_t; - -typedef struct skey_s { - struct skey_s *next; - hid_t *hid[he_nomask]; -} skey_t; - -typedef struct item_s { - struct item_s *next; - unsigned remove:1; - char *pos; - list_t key; /* skey_t */ - skey_t *value; -} item_t; - - -typedef struct hddb_list_s { - hddb_entry_mask_t key_mask; - hddb_entry_mask_t value_mask; - unsigned key; - unsigned value; -} hddb_list_t; - -typedef struct { - unsigned list_len, list_max; - hddb_list_t *list; - unsigned ids_len, ids_max; - unsigned *ids; - unsigned strings_len, strings_max; - char *strings; -} hddb_data_t; - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -#ifdef UCLIBC -void *memmem(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen); -#endif -void *new_mem(size_t size); -void *free_mem(void *ptr); -char *new_str(char *str); -void *add_list(list_t *list, void *entry); -void sort_list(list_t *list, int (*cmp_func)(const void *, const void *)); -unsigned eisa_id(char *s); -char *eisa_str(unsigned id); -void write_stats(FILE *f); - -void read_items(char *file); -line_t *parse_line(char *str); -hddb_entry_mask_t add_entry(skey_t *skey, hddb_entry_t idx, char *val); - -void write_items(char *file, list_t *hd); -void write_item(FILE *f, item_t *item); -void write_skey(FILE *f, prefix_t pre, skey_t *skey); -void write_ent_name(FILE *f, hid_t *hid, char pre, hddb_entry_t ent); -void write_id(FILE *f, hddb_entry_t ent, hid_t *hid); -void write_drv(FILE *f, char pre, hid_t *hid); -void write_drv1(FILE *f, hid_t *hid, char pre, char *val); -void log_items(FILE *f, item_t *item0, item_t *item1); - -int count_common_hids(skey_t *skey0, skey_t *skey1); -int strip_skey(skey_t *skey0, skey_t *skey1, int do_it); -void remove_deleted_hids(skey_t *skey); -void undelete_hids(skey_t *skey); -str_t *split(char del, char *s); -char *join(char del, str_t *str); - -int cmp_driver_info(char *str0, char *str1); -int cmp_str_s(const void *p0, const void *p1); -int cmp_hid(hid_t *hid0, hid_t *hid1); -int cmp_skey(skey_t *skey0, skey_t *skey1); -int cmp_skey_s(const void *p0, const void *p1); -int cmp_item(item_t *item0, item_t *item1); -int cmp_item_s(const void *p0, const void *p1); - -int match_hid(hid_t *hid0, hid_t *hid1, match_t match); -int match_skey(skey_t *skey0, skey_t *skey1, match_t match); -int match_item(item_t *item0, item_t *item1, match_t match); - -int combine_keys(skey_t *skey0, skey_t *skey1); - -str_t *clone_str(str_t *str); -hid_t *clone_hid(hid_t *hid); -skey_t *clone_skey(skey_t *skey); -item_t *clone_item(item_t *item); - -str_t *free_str(str_t *str, int follow_next); -hid_t *free_hid(hid_t *hid); -skey_t *free_skey(skey_t *skey, int follow_next); -item_t *free_item(item_t *item, int follow_next); - -unsigned driver_entry_types(hid_t *hid); - -void remove_items(list_t *hd); -void remove_nops(list_t *hd); -void check_items(list_t *hd); -void split_items(list_t *hd); -void combine_driver(list_t *hd); -void combine_requires(list_t *hd); -void join_items_by_value(list_t *hd); -void join_items_by_key(list_t *hd); -void remove_unimportant_items(list_t *hd); - -void write_cfile(FILE *f, list_t *hd); - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -struct option options[] = { - { "help", 0, NULL, 1 }, -// { "debug", 1, NULL, 2 }, - { "log", 1, NULL, 3 }, - { "mini", 0, NULL, 4 }, - { "sort", 0, NULL, 5 }, - { "reverse", 0, NULL, 6 }, /* for debugging */ - { "random", 0, NULL, 7 }, /* dto */ - { "check", 0, NULL, 8 }, - { "with-source", 0, NULL, 9 }, - { "out", 1, NULL, 10}, - { "split", 0, NULL, 11}, - { "cfile", 1, NULL, 12}, - { "no-compact", 0, NULL, 13}, - { "join-keys-first", 0, NULL, 14}, - { "combine", 0, NULL, 15}, - { } -}; - -list_t hd; - -char *item_ind = NULL; -FILE *logfh = NULL; - -struct { - int debug; - unsigned sort:1; - unsigned reverse:1; - unsigned random:1; - unsigned check:1; - unsigned with_source:1; - unsigned mini:1; - unsigned split:1; - unsigned no_compact:1; - unsigned join_keys_first:1; - unsigned combine:1; /* always combine driver info */ - char *logfile; - char *outfile; - char *cfile; -} opt = { - logfile: "hd.log", - outfile: "hd.ids" -}; - -struct { - unsigned items_in, items_out; - unsigned diffs, errors, errors_res; -} stats; - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -int main(int argc, char **argv) -{ - int i, close_log = 0, close_cfile = 0; - item_t *item; - FILE *cfile; - - for(opterr = 0; (i = getopt_long(argc, argv, "", options, NULL)) != -1; ) { - switch(i) { -#if 0 - case 2: - opt.debug = strtol(optarg, NULL, 0); - break; -#endif - - case 3: - opt.logfile = optarg; - if(!*opt.logfile) opt.logfile = NULL; - break; - - case 4: - opt.mini = 1; - break; - - case 5: - opt.sort = 1; - break; - - case 6: - opt.reverse = 1; - break; - - case 7: - opt.random = 1; - srand(time(NULL)); - break; - - case 8: - opt.check = 1; - break; - - case 9: - opt.with_source = 1; - break; - - case 10: - opt.outfile = optarg; - if(!*opt.outfile) opt.outfile = NULL; - break; - - case 11: - opt.split = 1; - break; - - case 12: - opt.cfile = optarg; - if(!*opt.cfile) opt.cfile = NULL; - break; - - case 13: - opt.no_compact = 1; - break; - - case 14: - opt.join_keys_first = 1; - break; - - case 15: - opt.combine = 1; - break; - - default: - fprintf(stderr, - "Usage: check_hd [options] files\n" - "Try to put hardware data into a consistent form.\n" - " --check\t\tdo a lot of checks and remove unnecessary data\n" - " --sort\t\tsort data\n" - " --reverse\t\treverse sorting order\n" - " --split\t\twrite separate entries for each key\n" - " --with-source\t\tadd comment to each item indicating info source\n" - " --mini\t\tminimal data base (basically driver info only)\n" - " --join-keys-first\twhen combining similar items, join entries with\n" - " \t\t\tcommon keys first (default is common values first)\n" - " --cfile file\t\tcreate C file to be included in libhd\n" - " --no-compact\t\tdon't try to make C version as small as possible\n" - " --out file\t\twrite results to file, default is \"hd.ids\"\n" - " --log file\t\twrite log info to file, default is \"hd.log\"\n\n" - " Note: check_hd works with libhd/hwinfo internal format only;\n" - " to convert to other formats, use convert_hd\n" - ); - return 1; - } - } - - if(opt.logfile && strcmp(opt.logfile, "-")) { - logfh = fopen(opt.logfile, "w"); - if(!logfh) { - perror(opt.logfile); - return 3; - } - close_log = 1; - } - else { - logfh = stdout; - } - - for(argv += optind; *argv; argv++) { - read_items(*argv); - } - - for(item = hd.first; item; item = item->next) stats.items_in++; - - fprintf(logfh, "- removing useless entries\n"); - fflush(logfh); - remove_nops(&hd); - - if(opt.mini) { - fprintf(logfh, "- building mini version\n"); - fflush(logfh); - remove_unimportant_items(&hd); - } - - if(opt.check || opt.split) { - fprintf(logfh, "- splitting entries\n"); - fflush(logfh); - split_items(&hd); - } - - if(opt.check) { - fprintf(logfh, "- combining driver info\n"); - fflush(logfh); - combine_driver(&hd); - - fprintf(logfh, "- combining requires info\n"); - fflush(logfh); - combine_requires(&hd); - - fprintf(logfh, "- checking for consistency\n"); - fflush(logfh); - check_items(&hd); - - fprintf(logfh, "- join items\n"); - fflush(logfh); - if(opt.join_keys_first) { - join_items_by_key(&hd); - join_items_by_value(&hd); - } - else { - join_items_by_value(&hd); - join_items_by_key(&hd); - } - - if(opt.split) split_items(&hd); - } - - if(opt.sort) { - fprintf(logfh, "- sorting\n"); - fflush(logfh); - sort_list(&hd, cmp_item_s); - } - - for(item = hd.first; item; item = item->next) stats.items_out++; - - write_items(opt.outfile, &hd); - - if(opt.cfile) { - if(opt.cfile && strcmp(opt.cfile, "-")) { - cfile = fopen(opt.cfile, "w"); - if(!cfile) { - perror(opt.cfile); - return 3; - } - close_cfile = 1; - } - else { - cfile = stdout; - } - - split_items(&hd); - - write_cfile(cfile, &hd); - - if(close_cfile) fclose(cfile); - } - - fprintf(logfh, "- statistics\n"); - write_stats(logfh); - if(logfh != stdout) { - if(opt.outfile && strcmp(opt.outfile, "-")) { - fprintf(stderr, "data written to \"%s\"\n", opt.outfile); - } - if(opt.logfile && strcmp(opt.logfile, "-")) { - fprintf(stderr, "log written to \"%s\"\n", opt.logfile); - } - fprintf(stderr, "statistics:\n"); - write_stats(stderr); - } - - free_item(hd.first, 1); - - if(close_log) fclose(logfh); - - return 0; -} - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -void *new_mem(size_t size) -{ - if(size == 0) return NULL; - - return calloc(size, 1); -} - - -void *free_mem(void *ptr) -{ - if(ptr) free(ptr); - - return NULL; -} - - -char *new_str(char *str) -{ - if(!str) return NULL; - - return strdup(str); -} - - -void *add_list(list_t *list, void *entry) -{ - if(list->last) { - ((list_any_t *) list->last)->next = entry; - } - list->last = entry; - - if(!list->first) { - list->first = entry; - } - - return entry; -} - - -void sort_list(list_t *list, int (*cmp_func)(const void *, const void *)) -{ - int i, list_len = 0; - list_any_t *list_entry; - list_t new_list = {}; - list_any_t **list_array; - - for(list_entry = list->first; list_entry; list_entry = list_entry->next) list_len++; - if(list_len < 2) return; - - list_array = new_mem(list_len * sizeof *list_array); - for(i = 0, list_entry = list->first; list_entry; list_entry = list_entry->next) { - list_array[i++] = list_entry; - } - - qsort(list_array, list_len, sizeof *list_array, cmp_func); - - for(i = 0; i < list_len; i++) { - add_list(&new_list, list_array[i]); - } - - if(new_list.last) { - ((list_any_t *) new_list.last)->next = NULL; - } - - *list = new_list; - - free_mem(list_array); -} - - -unsigned eisa_id(char *s) -{ - int i; - unsigned u = 0; - - for(i = 0; i < 3; i++) { - u <<= 5; - if(s[i] < 'A' - 1 || s[i] > 'A' - 1 + 0x1f) return 0; - u += s[i] - 'A' + 1; - } - - return MAKE_ID(TAG_EISA, u); -} - - -char *eisa_str(unsigned id) -{ - static char s[4]; - - s[0] = ((id >> 10) & 0x1f) + 'A' - 1; - s[1] = ((id >> 5) & 0x1f) + 'A' - 1; - s[2] = ( id & 0x1f) + 'A' - 1; - s[3] = 0; - - return s; -} - - -void write_stats(FILE *f) -{ - fprintf(f, " %u inconsistencies%s\n", stats.diffs, stats.diffs ? " fixed" : ""); - fprintf(f, " %u errors", stats.errors + stats.errors_res); - if(stats.errors_res) fprintf(f, ", %u resolved", stats.errors_res); - fprintf(f, "\n"); - fprintf(f, " %u items in\n", stats.items_in); - fprintf(f, " %u items out\n", stats.items_out); -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -void read_items(char *file) -{ - FILE *f; - char buf[1024], fpos[256]; - unsigned u, state, l_nr; - hddb_entry_mask_t entry_mask = 0; - line_t *l; - item_t *item; - skey_t *skey; - - if(!(f = fopen(file, "r"))) { - perror(file); - return; - } - - item = new_mem(sizeof *item); - skey = new_mem(sizeof *skey); - - sprintf(fpos, "%s(1)", file); - item->pos = new_str(fpos); - - for(l_nr = 1, state = 0; fgets(buf, sizeof buf, f); l_nr++) { - l = parse_line(buf); - if(!l) { - fprintf(stderr, "%s: invalid line\n", fpos); - state = 4; - break; - }; - if(l->prefix == pref_empty) continue; - switch(l->prefix) { - case pref_new: - if(state == 1) { - add_list(&item->key, skey); - skey = new_mem(sizeof *skey); - } - else if(state == 2) { - item->value = skey; - skey = new_mem(sizeof *skey); - } - if(state == 2 || state == 1) { - add_list(&hd, item); - item = new_mem(sizeof *item); - if(!item->pos) { - sprintf(fpos, "%s(%d)", file, l_nr); - item->pos = new_str(fpos); - } - } - entry_mask = 0; - state = 1; - break; - - case pref_and: - if(state != 1) { - fprintf(stderr, "%s: must start item first\n", fpos); - state = 4; - break; - } - break; - - case pref_or: - if(state != 1 || !entry_mask) { - fprintf(stderr, "%s: must start item first\n", fpos); - state = 4; - break; - } - add_list(&item->key, skey); - skey = new_mem(sizeof *skey); - entry_mask = 0; - break; - - case pref_add: - if(state == 1 && !entry_mask) { - fprintf(stderr, "%s: driver info not allowed\n", fpos); - state = 4; - break; - } - if(state == 1) { - add_list(&item->key, skey); - skey = new_mem(sizeof *skey); - entry_mask = 0; - state = 2; - } - if(state != 2) { - fprintf(stderr, "%s: driver info not allowed\n", fpos); - state = 4; - break; - } - break; - - default: - state = 4; - } - - if(state != 4) { - u = add_entry(skey, l->key, l->value); - if(u) { - entry_mask |= u; - } - else { - fprintf(stderr, "%s: invalid info\n", fpos); - state = 4; - } - } - - if(state == 4) break; /* error */ - - } - - /* finalize last item */ - if(entry_mask && (state == 1 || state == 2)) { - if(state == 1) { - add_list(&item->key, skey); - skey = NULL; - } - else if(state == 2) { - item->value = skey; - skey = NULL; - } - add_list(&hd, item); - item = NULL; - } - - free_mem(skey); - free_mem(item); - - fclose(f); -} - - -line_t *parse_line(char *str) -{ - static line_t l; - char *s; - int i; - - /* drop leading spaces */ - while(isspace(*str)) str++; - - /* skip emtpy lines and comments */ - if(!*str || *str == ';' || *str == '#') { - l.prefix = pref_empty; - return &l; - } - - l.prefix = pref_new; - - switch(*str) { - case '&': - l.prefix = pref_and; - str++; - break; - - case '|': - l.prefix = pref_or; - str++; - break; - - case '+': - l.prefix = pref_add; - str++; - break; - } - - /* skip spaces */ - while(isspace(*str)) str++; - - s = str; - while(*str && !isspace(*str)) str++; - if(*str) *str++ = 0; - while(isspace(*str)) str++; - - for(i = 0; (unsigned) i < sizeof hddb_entry_strings / sizeof *hddb_entry_strings; i++) { - if(!strcmp(s, hddb_entry_strings[i])) { - l.key = i; - break; - } - } - - if((unsigned) i >= sizeof hddb_entry_strings / sizeof *hddb_entry_strings) return NULL; - - l.value = str; - - /* drop trailing white space */ - i = strlen(str); - while(i > 0) { - if(isspace(str[i - 1])) - str[--i] = 0; - else - break; - } - - /* special case: drop leading and final double quotes, if any */ - i = strlen(l.value); - if(i >= 2 && l.value[0] == '"' && l.value[i - 1] == '"') { - l.value[i - 1] = 0; - l.value++; - } - - // fprintf(stderr, "pre = %d, key = %d, val = \"%s\"\n", l.prefix, l.key, l.value); - - return &l; -} - - -int parse_id(char *str, unsigned *id, unsigned *tag, unsigned *range, unsigned *mask) -{ - static unsigned id0, val; - char c = 0, *s, *t = NULL; - - *id = *tag = *range = *mask = 0; - - if(!str || !*str) return 0; - - for(s = str; *str && !isspace(*str); str++); - if(*str) { - c = *(t = str); /* remember for later */ - *str++ = 0; - } - while(isspace(*str)) str++; - - if(*s) { - if(!strcmp(s, "pci")) *tag = TAG_PCI; - else if(!strcmp(s, "usb")) *tag = TAG_USB; - else if(!strcmp(s, "special")) *tag = TAG_SPECIAL; - else if(!strcmp(s, "eisa")) *tag = TAG_EISA; - else if(!strcmp(s, "isapnp")) *tag = TAG_EISA; - else if(!strcmp(s, "pcmcia")) *tag = TAG_PCMCIA; - else { - str = s; - if(t) *t = c; /* restore */ - } - } - - id0 = strtoul(str, &s, 0); - - if(s == str) { - id0 = eisa_id(str); - if(!id0) return 0; - s = str + 3; - id0 = ID_VALUE(id0); - if(!*tag) *tag = TAG_EISA; - } - - while(isspace(*s)) s++; - if(*s && *s != '&' && *s != '+') return 0; - - *id = id0; - - if(!*s) return 1; - - c = *s++; - - while(isspace(*s)) s++; - - val = strtoul(s, &str, 0); - - if(s == str) return 0; - - while(isspace(*str)) str++; - - if(*str) return 0; - - if(c == '+') *range = val; else *mask = val; - - return c == '+' ? 2 : 3; -} - - -hddb_entry_mask_t add_entry(skey_t *skey, hddb_entry_t idx, char *val) -{ - hddb_entry_mask_t e_mask = 0; - int i; - unsigned id, tag, range, mask; - char *s, *s1, *s2, c; - hid_t *hid; - str_t *str; - - for(i = 0; (unsigned) i < sizeof hddb_is_numeric / sizeof *hddb_is_numeric; i++) { - if(idx == hddb_is_numeric[i]) break; - } - - // printf("i = %d, idx = %d, val = >%s<\n", i, idx, val); - - if((unsigned) i < sizeof hddb_is_numeric / sizeof *hddb_is_numeric) { - /* numeric id */ - e_mask |= 1 << idx; - - i = parse_id(val, &id, &tag, &range, &mask); - - // printf("parse_id = %d\n", i); - - if(i) { - skey->hid[idx] = hid = new_mem(sizeof *hid); - hid->num.flag = FLAG_ID; - hid->num.tag = tag; - hid->num.id = id; - } - else { - return 0; - } - - switch(i) { - case 1: - break; - - case 2: - hid->num.range = range; - hid->num.has.range = 1; - break; - - case 3: - hid->num.mask = mask; - hid->num.has.mask = 1; - break; - - default: - return 0; - } - } - else { - if(idx < he_nomask) { - /* strings */ - - e_mask |= 1 << idx; - skey->hid[idx] = hid = new_mem(sizeof *hid); - hid->str.flag = FLAG_STRING; - str = add_list(&hid->str.list, new_mem(sizeof *str)); - str->str = new_str(val); - } - else { - /* special */ - - if(idx == he_class_id) { - i = parse_id(val, &id, &tag, &range, &mask); - if(i != 1) return 0; - - skey->hid[he_baseclass_id] = hid = new_mem(sizeof *hid); - hid->num.flag = FLAG_ID; - hid->num.tag = tag; - hid->num.id = id >> 8; - - skey->hid[he_subclass_id] = hid = new_mem(sizeof *hid); - hid->num.flag = FLAG_ID; - hid->num.tag = tag; - hid->num.id = id & 0xff; - - e_mask |= (1 << he_baseclass_id) + (1 << he_subclass_id) /* + (1 << he_progif_id) */; - } - else { - switch(idx) { - case he_driver_module_insmod: - c = 'i'; - break; - - case he_driver_module_modprobe: - c = 'm'; - break; - - case he_driver_module_config: - c = 'M'; - break; - - case he_driver_xfree: - c = 'x'; - break; - - case he_driver_xfree_config: - c = 'X'; - break; - - case he_driver_mouse: - c = 'p'; - break; - - case he_driver_display: - c = 'd'; - break; - - case he_driver_any: - c = 'a'; - break; - - default: - c = 0; - break; - } - if(c) { - s = new_mem(strlen(val) + 3); - s[0] = c; - s[1] = '\t'; - strcpy(s + 2, val); - hid = skey->hid[he_driver]; - if(!hid) { - skey->hid[he_driver] = hid = new_mem(sizeof *hid); - hid->str.flag = FLAG_STRING; - } - if( - (c == 'X' || c == 'M') && - hid->str.list.last && - (s1 = ((str_t *) hid->str.list.last)->str) - ) { - s2 = new_mem(strlen(s1) + strlen(s) + 2); - sprintf(s2, "%s\001%s", s1, s); - free_mem(s1); - ((str_t *) hid->str.list.last)->str = s2; - } - else { - str = add_list(&hid->str.list, new_mem(sizeof *str)); - str->str = new_str(s); - } - e_mask |= (1 << he_driver); - s = free_mem(s); - } - } - } - } - - return e_mask; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -void write_items(char *file, list_t *hd) -{ - FILE *f; - item_t *item; - int close_it = 0; - - if(file && strcmp(file, "-")) { - f = fopen(file, "w"); - if(!f) { - perror(file); - return; - } - close_it = 1; - } - else { - f = stdout; - } - - for(item = hd->first; item; item = item->next) { - if(opt.with_source) fprintf(f, "# %s\n", item->pos); - write_item(f, item); - fputc('\n', f); - } - - if(close_it) fclose(f); -} - - -void write_item(FILE *f, item_t *item) -{ - skey_t *skey; - prefix_t pre; - - pre = pref_new; - for(skey = item->key.first; skey; skey = skey->next) { - write_skey(f, pre, skey); - pre = pref_or; - } - write_skey(f, pref_add, item->value); -} - - -void write_skey(FILE *f, prefix_t pre, skey_t *skey) -{ - static char pref_char[5] = { ' ', ' ', '&', '|', '+' }; - int i; - - if(pre >= sizeof pref_char) { - fprintf(stderr, "internal oops\n"); - exit(2); - } - - if(!skey) return; - - for(i = 0; (unsigned) i < sizeof skey->hid / sizeof *skey->hid; i++) { - if(skey->hid[i]) { - if(i != he_driver) { - write_ent_name(f, skey->hid[i], pref_char[pre], i); - write_id(f, i, skey->hid[i]); - fputc('\n', f); - } - else { - write_drv(f, pref_char[pre], skey->hid[i]); - } - if(pre != pref_add) pre = pref_and; - } - } -} - - -void write_ent_name(FILE *f, hid_t *hid, char pre, hddb_entry_t ent) -{ - int len, tab_ind = 24; - char c; - - if(ent >= sizeof hddb_entry_strings / sizeof *hddb_entry_strings) { - fprintf(stderr, "internal oops\n"); - exit(2); - } - - len = item_ind ? strlen(item_ind) : 0; - - if(!len) { - fprintf(f, "%c%s\t", pre, hddb_entry_strings[ent]); - } - else { - c = hid->any.remove ? '*' : ':'; - fprintf(f, "%s%c %c%s\t", item_ind, c, pre, hddb_entry_strings[ent]); - len += 2; - tab_ind += 8; - } - - len += strlen(hddb_entry_strings[ent]) + 1; - - for(len = (len & ~7) + 8; len < tab_ind; len += 8) { - fputc('\t', f); - } -} - - -void write_id(FILE *f, hddb_entry_t ent, hid_t *hid) -{ - static char *tag_name[6] = { "", "pci ", "eisa ", "usb ", "special ", "pcmcia " }; - int tag; - unsigned u; - char c; - - switch(hid->any.flag) { - case FLAG_ID: - tag = hid->num.tag; - if((unsigned) tag >= sizeof tag_name / sizeof *tag_name) { - fprintf(stderr, "internal oops\n"); - exit(2); - } - if(tag == TAG_EISA && (ent == he_vendor_id || ent == he_subvendor_id)) { - fprintf(f, "%s", eisa_str(hid->num.id)); - } - else { - u = 4; - if(ent == he_bus_id || ent == he_subclass_id || ent == he_progif_id) { - u = 2; - } - else if(ent == he_baseclass_id) { - u = 3; - } - fprintf(f, "%s0x%0*x", tag_name[tag], u, hid->num.id); - } - if(hid->num.has.range || hid->num.has.mask) { - if(hid->num.has.range) { - u = hid->num.range; - c = '+'; - } - else { - u = hid->num.mask; - c = '&'; - } - fprintf(f, "%c0x%04x", c, u); - } - break; - - case FLAG_STRING: - if( /* not exactly 1 string */ - !hid->str.list.first || - ((str_t *) hid->str.list.first)->next - ) { - fprintf(stderr, "internal oops\n"); - exit(2); - } - fprintf(f, "%s", ((str_t *) hid->str.list.first)->str); - break; - - default: - fprintf(stderr, "internal oops\n"); - exit(2); - break; - } -} - - -void write_drv(FILE *f, char pre, hid_t *hid) -{ - str_t *str; - char *s, *t; - - if(hid->any.flag != FLAG_STRING) { - fprintf(stderr, "internal oops\n"); - exit(2); - } - - for(str = hid->str.list.first; str; str = str->next) { - for(s = str->str; (t = strchr(s, '\001')); s = t + 1) { - *t = 0; - write_drv1(f, hid, pre, s); - *t = '\001'; - } - write_drv1(f, hid, pre, s); - } -} - - -void write_drv1(FILE *f, hid_t *hid, char pre, char *val) -{ - char type; - int ent; - - type = val[0]; - if(!type || val[1] != '\t') { - fprintf(stderr, "internal oops\n"); - exit(2); - } - - switch(type) { - case 'x': - ent = he_driver_xfree; - break; - - case 'X': - ent = he_driver_xfree_config; - break; - - case 'i': - ent = he_driver_module_insmod; - break; - - case 'm': - ent = he_driver_module_modprobe; - break; - - case 'M': - ent = he_driver_module_config; - break; - - case 'p': - ent = he_driver_mouse; - break; - - case 'd': - ent = he_driver_display; - break; - - case 'a': - ent = he_driver_any; - break; - - default: - fprintf(stderr, "internal oops\n"); - exit(2); - break; - } - - write_ent_name(f, hid, pre, ent); - fprintf(f, "%s\n", val + 2); - -} - - -void log_items(FILE *f, item_t *item0, item_t *item1) -{ - char *save_ind = item_ind; - - if(item0) { - item_ind = " 0"; - write_item(f, item0); - } - - if(item1) { - item_ind = " 1"; - write_item(f, item1); - } - - item_ind = save_ind; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -/* count common defined hid entries */ -int count_common_hids(skey_t *skey0, skey_t *skey1) -{ - int i, cnt = 0; - - if(!skey0 || !skey1) return 0; - - for(i = 0; (unsigned) i < sizeof skey0->hid / sizeof *skey0->hid; i++) { - if(skey0->hid[i] && skey1->hid[i]) cnt++; - } - - return cnt; -} - - -/* - * remove hid entries from skey0 that are defined in skey1 - * - * do_it: - * 0: don't remove anything, just count - * 1: remove identical entries - * 2: remove differing entries - * 3: both of the above - * - * return - * bits 0- 7: identical entries - * 8-15: different entries - * 16-23: critical conflicts - */ -int strip_skey(skey_t *skey0, skey_t *skey1, int do_it) -{ - int i, cnt; - - for(i = cnt = 0; (unsigned) i < sizeof skey0->hid / sizeof *skey0->hid; i++) { - if(!skey0->hid[i] || !skey1->hid[i]) continue; - if(cmp_hid(skey0->hid[i], skey1->hid[i])) { - cnt += 1 << 8; - if(i == he_driver || i == he_requires) { - cnt += 1 << 16; - } - if((do_it & 2)) skey0->hid[i]->any.remove = 1; - } - else { - cnt++; - if((do_it & 1)) skey0->hid[i]->any.remove = 1; - } - } - - return cnt; -} - - -/* - * remove deleted hid entries from skey - */ -void remove_deleted_hids(skey_t *skey) -{ - int i; - - for(i = 0; (unsigned) i < sizeof skey->hid / sizeof *skey->hid; i++) { - if(skey->hid[i] && skey->hid[i]->any.remove) { - skey->hid[i] = free_hid(skey->hid[i]); - } - } -} - - -/* - * undeleted hid entries from skey - */ -void undelete_hids(skey_t *skey) -{ - int i; - - for(i = 0; (unsigned) i < sizeof skey->hid / sizeof *skey->hid; i++) { - if(skey->hid[i]) skey->hid[i]->any.remove = 0; - } -} - - -str_t *split(char del, char *s) -{ - char *t, *s0; - list_t list = {}; - str_t *str; - - if(!s) return NULL; - - for(s0 = s = new_str(s); (t = strchr(s, del)); s = t + 1) { - *t = 0; - str = add_list(&list, new_mem(sizeof *str)); - str->str = new_str(s); - } - str = add_list(&list, new_mem(sizeof *str)); - str->str = new_str(s); - - free_mem(s0); - - return list.first; -} - - -char *join(char del, str_t *str) -{ - char *s, t[2]; - str_t *str0; - int len = 0; - - for(str0 = str; str0; str0 = str0->next) { - len += strlen(str0->str) + 1; - } - - if(!len) return NULL; - - s = new_mem(len); - - t[0] = del; t[1] = 0; - - for(; str; str = str->next) { - strcat(s, str->str); - if(str->next) strcat(s, t); - } - - return s; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -/* - * str0 & str1 _must_ hold valid driver info - */ -int cmp_driver_info(char *str0, char *str1) -{ - char type0, type1; - str_t *sl0, *sl1; - int _3d0, _3d1, res; - - type0 = *str0; - type1 = *str1; - - if(type0 == 'a' || type1 == 'a') { - if(type0 == 'a' && type1 == 'a') return 0; - if(type0 == 'a') return 1; - return -1; - } - - if(type0 != 'x' || type1 != 'x') return 0; - - str0 += 2; - str1 += 2; - - sl0 = split('|', str0); - sl1 = split('|', str1); - - res = 0; - - if(sl0 && sl1) { - - /* xfree v4 first, then xfree v3 */ - if(*sl0->str != *sl1->str) res = *sl0->str < *sl1->str ? 1 : -1; - - if(!res) { - _3d0 = _3d1 = 0; - - if(sl0->next && sl0->next->next && *sl0->next->next->str) _3d0 = 1; - if(sl1->next && sl1->next->next && *sl1->next->next->str) _3d1 = 1; - - /* entries without 3d support first */ - res = _3d0 - _3d1; - } - } - - free_str(sl0, 1); - free_str(sl1, 1); - - return res; -} - - -/* wrapper for qsort */ -int cmp_str_s(const void *p0, const void *p1) -{ - str_t **str0, **str1; - - str0 = (str_t **) p0; - str1 = (str_t **) p1; - - return strcmp((*str0)->str, (*str1)->str); -} - - -int cmp_hid(hid_t *hid0, hid_t *hid1) -{ - int i = 0; - str_t *str0, *str1; - - if(!hid0 && !hid1) return 0; - if(!hid0) return -1; - if(!hid1) return 1; - - if(hid0->any.flag != hid1->any.flag) { - return hid0->any.flag < hid1->any.flag ? -1 : 1; - } - - if(hid0->any.flag == FLAG_STRING) { - str0 = hid0->str.list.first; - str1 = hid1->str.list.first; - for(; str0 && str1; str0 = str0->next, str1 = str1->next) { - i = strcmp(str0->str, str1->str); - if(i) { - i = i > 0 ? 1 : -1; - break; - } - } - if(!i) { - if(str0) i = 1; else if(str1) i = -1; - } - } - else if(hid0->any.flag == FLAG_ID) { - if(hid0->num.tag != hid1->num.tag) { - i = hid0->num.tag < hid1->num.tag ? -1 : 1; - } - else if(hid0->num.id != hid1->num.id) { - i = hid0->num.id < hid1->num.id ? -1 : 1; - } - else if(hid0->num.has.range || hid1->num.has.range) { - if(!hid0->num.has.range) { - i = -1; - } - else if(!hid1->num.has.range) { - i = 1; - } - else if(hid0->num.range != hid1->num.range) { - i = hid0->num.range < hid1->num.range ? -1 : 1; - } - } - else if(hid0->num.has.mask || hid1->num.has.mask) { - if(!hid0->num.has.mask) { - i = -1; - } - else if(!hid1->num.has.mask) { - i = 1; - } - else if(hid0->num.mask != hid1->num.mask) { - i = hid0->num.mask < hid1->num.mask ? -1 : 1; - } - } - } - - return i; -} - - -int cmp_skey(skey_t *skey0, skey_t *skey1) -{ - int i, j, len0, len1, len; - - if(!skey0 && !skey1) return 0; - if(!skey0) return -1; - if(!skey1) return 1; - - for(i = len0 = len1 = 0; (unsigned) i < sizeof skey0->hid / sizeof *skey0->hid; i++) { - if(skey0->hid[i]) len0 = i; - if(skey1->hid[i]) len1 = i; - } - len0++; - len1++; - - // printf("len0 = %d, len1 = %d\n", len0, len1); - - len = len0 < len1 ? len0 : len1; - - for(i = j = 0; j < len; j++) { - // printf("0: j = %d\n", j); - - if(!skey0->hid[j] && !skey1->hid[j]) continue; - - /* note: this looks reversed, but is intentional! */ - if(!skey0->hid[j]) { i = 1; break; } - if(!skey1->hid[j]) { i = -1; break; } - - i = cmp_hid(skey0->hid[j], skey1->hid[j]); - // printf("1: j = %d, i = %d\n", j, i); - - if(i) break; - } - - if(!i && len0 != len1) { - i = len0 > len1 ? 1 : -1; - } - - return i; -} - - -/* wrapper for qsort */ -int cmp_skey_s(const void *p0, const void *p1) -{ - skey_t **skey0, **skey1; - - skey0 = (skey_t **) p0; - skey1 = (skey_t **) p1; - - return cmp_skey(*skey0, *skey1); -} - - -int cmp_item(item_t *item0, item_t *item1) -{ - int i; - skey_t *skey0, *skey1; - - skey0 = item0->key.first; - skey1 = item1->key.first; - for(i = 0; skey0 && skey1; skey0 = skey0->next, skey1 = skey1->next) { - if((i = cmp_skey(skey0, skey1))) break; - } - if(!i) i = cmp_skey(skey0, skey1); - - if(!i) i = 2 * cmp_skey(item0->value, item1->value); - - // printf("%s -- %s : %d\n", item0->pos, item1->pos, i); - - return i; -} - - -/* wrapper for qsort */ -int cmp_item_s(const void *p0, const void *p1) -{ - int i; - item_t **item0, **item1; - - item0 = (item_t **) p0; - item1 = (item_t **) p1; - - if(opt.random) { - i = ((rand() / 317) % 3) - 1; - } - else if(opt.reverse) { - i = cmp_item(*item1, *item0); - } - else { - i = cmp_item(*item0, *item1); - } - - return i; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -/* - * Does hid1 match if hid0 does? - * > 0: yes, 0: no, < 0: maybe - * - * match: - * match_any: at least one common id in hid1 & hid0 - * match_all: hid1 matches whenever hid0 does (hid0 is special case of hid1)) - */ -int match_hid(hid_t *hid0, hid_t *hid1, match_t match) -{ - int i, m = -1; - str_t *str0, *str1; - - if(!hid1) return 1; - if(!hid0) return 0; - - if(hid0->any.flag != hid1->any.flag) return 0; - - if(hid0->any.flag == FLAG_STRING) { - str0 = hid0->str.list.first; - str1 = hid1->str.list.first; - for(; str0 && str1; str0 = str0->next, str1 = str1->next) { - i = strcmp(str0->str, str1->str); - if(i) return 0; - } - m = str0 || str1 ? 0 : 1; - } - else if(hid0->any.flag == FLAG_ID) { - if(hid0->num.tag != hid1->num.tag) return 0; - - if(match == match_any) { - - if(hid0->num.has.range) { - if(hid1->num.has.range) { - m = - ( - hid1->num.id >= hid0->num.id && - hid1->num.id < hid0->num.id + hid0->num.range - ) || - ( - hid0->num.id >= hid1->num.id && - hid0->num.id < hid1->num.id + hid1->num.range - ) ? 1 : 0; - - } - else if(hid1->num.has.mask) { - - } - else { - m = - ( - hid1->num.id >= hid0->num.id && - hid1->num.id < hid0->num.id + hid0->num.range - ) ? 1 : 0; - } - } - else if(hid0->num.has.mask) { - if(hid1->num.has.range) { - - } - else if(hid1->num.has.mask) { - - } - else { - m = (hid1->num.id & ~hid0->num.mask) == hid0->num.id ? 1 : 0; - } - } - else { - if(hid1->num.has.range) { - m = - ( - hid0->num.id >= hid1->num.id && - hid0->num.id < hid1->num.id + hid1->num.range - ) ? 1 : 0; - } - else if(hid1->num.has.mask) { - m = (hid0->num.id & ~hid1->num.mask) == hid1->num.id ? 1 : 0; - } - else { - m = hid0->num.id == hid1->num.id ? 1 : 0; - } - } - - } - else { /* match_all */ - - if(hid0->num.has.range) { - if(hid1->num.has.range) { - m = - ( - hid0->num.id >= hid1->num.id && - hid0->num.id + hid0->num.range <= hid1->num.id + hid1->num.range - ) ? 1 : 0; -// fprintf(logfh, "id0 = 0x%x, id1 = 0x%x, m = %d\n", hid0->num.id, hid1->num.id, m); - } - else if(hid1->num.has.mask) { - - } - else { - m = hid1->num.id == hid0->num.id && hid0->num.range == 1 ? 1 : 0; - } - } - else if(hid0->num.has.mask) { - if(hid1->num.has.range) { - - } - else if(hid1->num.has.mask) { - - } - else { - m = (hid1->num.id & ~hid0->num.mask) == hid0->num.id && hid0->num.mask == 0 ? 1 : 0; - } - } - else { - if(hid1->num.has.range) { - m = - ( - hid0->num.id >= hid1->num.id && - hid0->num.id < hid1->num.id + hid1->num.range - ) ? 1 : 0; - } - else if(hid1->num.has.mask) { - m = (hid0->num.id & ~hid1->num.mask) == hid1->num.id ? 1 : 0; - } - else { - m = hid0->num.id == hid1->num.id ? 1 : 0; - } - } - - } - } - - return m; -} - - -/* - * Does skey1 match if skey0 does? - * > 0: yes, 0: no, < 0: maybe - */ -int match_skey(skey_t *skey0, skey_t *skey1, match_t match) -{ - int i, k, m = 1; - - for(i = k = 0; (unsigned) i < sizeof skey0->hid / sizeof *skey0->hid; i++) { - k = match_hid(skey0->hid[i], skey1->hid[i], match); - if(k > 0) continue; - if(!k) return 0; - m = k; - } - - return m; -} - - -/* - * Does item1 match if item0 does? - * > 0: yes, 0: no, < 0: maybe - */ -int match_item(item_t *item0, item_t *item1, match_t match) -{ - int i, k = 0; - skey_t *skey0, *skey1; - - skey0 = item0->key.first; - skey1 = item1->key.first; - - for(skey0 = item0->key.first; skey0; skey0 = skey0->next) { - for(skey1 = item1->key.first; skey1; skey1 = skey1->next) { - i = match_skey(skey0, skey1, match); - if(i > 0) return i; - if(i) k = i; - } - } - - return k; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -int combine_keys(skey_t *skey0, skey_t *skey1) -{ - int i, ind; - unsigned r0, r1; - hid_t *hid0, *hid1; - - for(ind = -1, i = 0; (unsigned) i < sizeof skey0->hid / sizeof *skey0->hid; i++) { - if(!skey0->hid[i] && !skey1->hid[i]) continue; - if(!skey0->hid[i] || !skey1->hid[i]) return 0; - if(!cmp_hid(skey0->hid[i], skey1->hid[i])) continue; - if(ind >= 0) return 0; - ind = i; - } - - if(ind < 0) return 0; - - /* ok, exactly one hid differs */ - hid0 = skey0->hid[ind]; - hid1 = skey1->hid[ind]; - - /* must be numerical */ - if(hid0->any.flag != FLAG_ID || hid1->any.flag != FLAG_ID) return 0; - - /* no mask value */ - if(hid0->num.has.mask || hid1->num.has.mask) return 0; - - /* must be adjacent ranges, can overlap */ - r0 = hid0->num.has.range ? hid0->num.range : 1; - r1 = hid1->num.has.range ? hid1->num.range : 1; - - if(hid1->num.id >= hid0->num.id && hid1->num.id <= hid0->num.id + r0) { - i = hid1->num.id + r1 - hid0->num.id; - if((unsigned) i < r0) i = r0; - if(i != 1) { - hid0->num.range = i; - hid0->num.has.range = 1; - } - else { - hid0->num.range = 0; - hid0->num.has.range = 0; - } - } - else { - return 0; - } - - return 1; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -str_t *clone_str(str_t *str) -{ - str_t *n_str; - - if(!str) return NULL; - - n_str = new_mem(sizeof *n_str); - n_str->str = new_str(str->str); - - return n_str; -} - - -hid_t *clone_hid(hid_t *hid) -{ - hid_t *new_hid; - str_t *str; - - if(!hid) return NULL; - - new_hid = new_mem(sizeof *new_hid); - - *new_hid = *hid; - - if(hid->any.flag == FLAG_STRING) { - memset(&new_hid->str.list, 0, sizeof new_hid->str.list); - for(str = hid->str.list.first; str; str = str->next) { - add_list(&new_hid->str.list, clone_str(str)); - } - } - - return new_hid; -} - - -skey_t *clone_skey(skey_t *skey) -{ - int i; - skey_t *new_skey; - - if(!skey) return NULL; - - new_skey = new_mem(sizeof *new_skey); - - for(i = 0; (unsigned) i < sizeof skey->hid / sizeof *skey->hid; i++) { - new_skey->hid[i] = clone_hid(skey->hid[i]); - } - - return new_skey; -} - - -item_t *clone_item(item_t *item) -{ - item_t *new_item; - skey_t *skey; - - if(!item) return NULL; - - new_item = new_mem(sizeof *new_item); - - new_item->pos = new_str(item->pos); - - for(skey = item->key.first; skey; skey = skey->next) { - add_list(&new_item->key, clone_skey(skey)); - } - - new_item->value = clone_skey(item->value); - - return new_item; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -str_t *free_str(str_t *str, int follow_next) -{ - str_t *next; - - for(; str; str = next) { - next = str->next; - - free_mem(str->str); - free_mem(str); - - if(!follow_next) break; - } - - return NULL; -} - - -hid_t *free_hid(hid_t *hid) -{ - if(!hid) return NULL; - - if(hid->any.flag == FLAG_STRING) { - free_str(hid->str.list.first, 1); - } - free_mem(hid); - - return NULL; -} - - -skey_t *free_skey(skey_t *skey, int follow_next) -{ - skey_t *next; - int i; - - for(; skey; skey = next) { - next = skey->next; - - for(i = 0; (unsigned) i < sizeof skey->hid / sizeof *skey->hid; i++) { - free_hid(skey->hid[i]); - } - - free_mem(skey); - - if(!follow_next) break; - } - - return NULL; -} - - -item_t *free_item(item_t *item, int follow_next) -{ - item_t *next; - - for(; item; item = next) { - next = item->next; - - free_mem(item->pos); - - free_skey(item->key.first, 1); - free_skey(item->value, 0); - - free_mem(item); - - if(!follow_next) break; - } - - return NULL; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -unsigned driver_entry_types(hid_t *hid) -{ - str_t *str; - unsigned ent = 0; - - for(str = hid->str.list.first; str; str = str->next) { - if(!str->str[0] || str->str[1] != '\t') break; - switch(str->str[0]) { - case 'a': - ent |= 1; - break; - - case 'x': - case 'X': - ent |= 2; - break; - - default: - ent |= 4; - } - } - - return ent; -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -void remove_items(list_t *hd) -{ - item_t *item, *next; - list_t hd_new = {}; - - for(item = hd->first; item; item = next) { - next = item->next; - if(item->remove) { - free_item(item, 0); - } - else { - add_list(&hd_new, item); - } - } - - if(hd_new.last) { - ((list_any_t *) hd_new.last)->next = NULL; - } - - *hd = hd_new; -} - - -void remove_nops(list_t *hd) -{ - item_t *item; - int cnt = 0; - - for(item = hd->first; item; item = item->next) { - if(!item->value || !item->key.first) { - item->remove = 1; - cnt++; - } - } - - if(cnt) remove_items(hd); -} - - -void split_items(list_t *hd) -{ - item_t *item, *new_item, *next_item; - skey_t *skey, *next; - list_t hd_new = {}; - int cnt, l; - char buf[16]; - - for(item = hd->first; item; item = next_item) { - next_item = item->next; - skey = item->key.first; - if(skey && skey->next) { - for(cnt = 0, skey = item->key.first; skey; skey = next) { - next = skey->next; - new_item = add_list(&hd_new, new_mem(sizeof *new_item)); - if(item->pos && (l = strlen(item->pos))) { - sprintf(buf, ",%d)", cnt++); - new_item->pos = new_mem(l - 1 + strlen(buf) + 1); - strcpy(new_item->pos, item->pos); - strcpy(new_item->pos + l - 1, buf); - } - new_item->value = clone_skey(item->value); - add_list(&new_item->key, clone_skey(skey)); - } - free_item(item, 0); - } - else { - add_list(&hd_new, item); - } - } - - if(hd_new.last) { - ((list_any_t *) hd_new.last)->next = NULL; - } - - *hd = hd_new; -} - - -void check_items(list_t *hd) -{ - int i, j, k, m, mr, m_all, mr_all, c_ident, c_diff, c_crit; - char *s; - item_t *item0, *item1, *item_a, *item_b; - unsigned *stat_cnt; - - for(item0 = hd->first; item0; item0 = item0->next) { - if(item0->remove) continue; - for(item1 = item0->next; item1 && !item0->remove; item1 = item1->next) { - if(item1->remove) continue; - - item_a = item0; item_b = item1; - - m = match_item(item0, item1, match_any); - mr = match_item(item1, item0, match_any); - - m_all = mr_all = 0; - - if(m && mr) { - m_all = match_item(item0, item1, match_all); - mr_all = match_item(item1, item0, match_all); - if(mr_all) { - item_a = item1; item_b = item0; - i = m_all; m_all = mr_all; mr_all = i; - i = m; m = mr; mr = i; - } - } - else if(mr && !m) { - item_a = item1; item_b = item0; - m = mr; mr = 0; - } - - if(m && !mr) { - m_all = match_item(item_a, item_b, match_all); - mr_all = match_item(item_b, item_a, match_all); - } - - if(m) { -#if 0 - fprintf( - logfh, "a = %s, b = %s, m = %d, mr = %d, m_all = %d, mr_all = %d\n", - item_a->pos, item_b->pos, - m, mr, m_all, mr_all - ); -#endif - - if(m_all) { - /* - * item_b matches (at least) everything that item_a does - * (item_a is a special case of item_b) - */ - - i = cmp_item(item_a, item_b); /* just informational */ - if(!i) { - /* identical keys and values */ - fprintf(logfh, - "%s: duplicate of %s, item removed\n", - item_a->pos, item_b->pos - ); - item_a->remove = 1; - } - else { - /* matching keys, differing values */ - - j = count_common_hids(item_a->key.first, item_b->key.first); - k = ( - j == count_common_hids(item_b->key.first, item_b->key.first) && - j < count_common_hids(item_a->key.first, item_a->key.first) - ) ? 1 : 0; - - if(k) { - /* - * item_a is a special case of item_b _and_ item_a has more hid fields - * --> libhd can handle differing info in this case - */ - j = strip_skey(item_a->value, item_b->value, 1); - if(j) { - c_ident = j & 0xff; - c_diff = (j >> 8) & 0xff; - if(c_diff && c_ident) { - fprintf(logfh, - "%s: some info identical to %s, identical info removed\n", - item_a->pos, item_b->pos - ); - log_items(logfh, item_a, item_b); - } - else if(!c_diff) { - fprintf(logfh, - "%s: info is identical to %s, info removed\n", - item_a->pos, item_b->pos - ); - log_items(logfh, item_a, item_b); - } - remove_deleted_hids(item_a->value); - } - } - else { - j = strip_skey(item_a->value, item_b->value, 3); - if(j) { - c_ident = j & 0xff; - c_diff = (j >> 8) & 0xff; - c_crit = (j >> 16) & 0xff; - if(c_crit || cmp_skey(item_a->key.first, item_b->key.first)) { - s = "conflicts with"; - stat_cnt = &stats.errors_res; - } - else { - s = "differs from"; - stat_cnt = &stats.diffs; - } - /* - * if the keys are identical, make it a warning, - * else make it an error - */ - if(c_diff && !c_ident) { - (*stat_cnt)++; - fprintf(logfh, - "%s: info %s %s, info removed\n", - item_a->pos, s, item_b->pos - ); - } - else if(c_diff && c_ident) { - (*stat_cnt)++; - fprintf(logfh, - "%s: info %s/is identical to %s, info removed\n", - item_a->pos, s, item_b->pos - ); - } - else { - fprintf(logfh, - "%s: info is identical to %s, info removed\n", - item_a->pos, item_b->pos - ); - } - log_items(logfh, item_a, item_b); - remove_deleted_hids(item_a->value); - } - } - - if(!count_common_hids(item_a->value, item_a->value)) { - /* remove if no values left */ - item_a->remove = 1; - fprintf(logfh, "%s: no info left, item removed\n", item_a->pos); - } - - } - } - else if(count_common_hids(item_a->value, item_b->value)) { - /* different keys, potentially conflicting values */ - k = cmp_skey(item_a->value, item_b->value); - if(k) { - /* differing keys, differing values */ - j = strip_skey(item_b->value, item_a->value, 2); - c_diff = (j >> 8) & 0xff; - if(c_diff) { - /* different keys, conflicting values --> error */ - stats.errors++; - fprintf(logfh, - "%s: info conflicts with %s\n", - item_b->pos, item_a->pos - ); - log_items(logfh, item_b, item_a); - } - undelete_hids(item_b->value); - } - } - } - } - } - - remove_items(hd); -} - - -void combine_driver(list_t *hd) -{ - int i; - item_t *item0, *item1, *item_a, *item_b; - hid_t *hid0, *hid1, *new_hid, *hid_a, *hid_b; - str_t *str0, *str1, *tmp_str, *last_str; - unsigned type0, type1; - - for(item0 = hd->first; item0; item0 = item0->next) { - if( - item0->remove || - !item0->value || - !(hid0 = item0->value->hid[he_driver]) || - hid0->any.flag != FLAG_STRING - ) continue; - for(item1 = item0->next; item1 && !item0->remove; item1 = item1->next) { - hid0 = item0->value->hid[he_driver]; - if( - item1->remove || - !item1->value || - !(hid1 = item1->value->hid[he_driver]) || - hid1->any.flag != FLAG_STRING - ) continue; - - i = cmp_item(item0, item1); - - /* remove duplicate entries */ - if(!i) { - item1->remove = 1; - continue; - } - - /* work only on entries with identical keys */ - if(i == -1 || i == 1) continue; - - /* ensure these are proper driver entries */ - if(!(type0 = driver_entry_types(hid0))) continue; - if(!(type1 = driver_entry_types(hid1))) continue; - - /* - * Allow only (x11 + x11) & (!any + any) - * unless --combine option was used. - */ - if(!opt.combine && (((type0 & type1) & 5) || ((type0 | type1) & 6) == 6)) { - fprintf(logfh, - "%s: can't combine driver info with %s %d %d\n", - item0->pos, item1->pos, type0, type1 - ); - log_items(logfh, item0, item1); - continue; - } - - item_a = item0; - item_b = item1; - hid_a = hid0; - hid_b = hid1; - - if(type0 == 1) { - item_a = item1; - item_b = item0; - hid_a = hid1; - hid_b = hid0; - } - - fprintf(logfh, "%s: combine with %s\n", item_a->pos, item_b->pos); - log_items(logfh, item_a, item_b); - - new_hid = clone_hid(hid_a); - - for(str1 = hid_b->str.list.first; str1; str1 = str1->next) { - last_str = NULL; - for(str0 = new_hid->str.list.first; str0; last_str = str0, str0 = str0->next) { - i = cmp_driver_info(str1->str, str0->str); - if(i < 0) break; - } - if(last_str) { - tmp_str = last_str->next; - last_str->next = clone_str(str1); - last_str->next->next = tmp_str; - if(!tmp_str) { - new_hid->str.list.last = last_str->next; - } - } - else { - /* smaller than first entry */ - tmp_str = clone_str(str1); - tmp_str->next = new_hid->str.list.first; - new_hid->str.list.first = tmp_str; - } - } - - free_hid(item_a->value->hid[he_driver]); - item_a->value->hid[he_driver] = new_hid; - item_b->value->hid[he_driver] = free_hid(item_b->value->hid[he_driver]); - - fprintf(logfh, " --\n"); - log_items(logfh, item_a, item_b); - - if(!count_common_hids(item_b->value, item_b->value)) { - /* remove if no values left */ - item_b->remove = 1; - fprintf(logfh, "%s: no info left, item removed\n", item_b->pos); - } - - } - } - - remove_items(hd); -} - - -void combine_requires(list_t *hd) -{ - int i; - item_t *item0, *item1; - hid_t *hid0, *hid1; - list_t slist = {}; - str_t *str, *str0, *str1; - - for(item0 = hd->first; item0; item0 = item0->next) { - if( - item0->remove || - !item0->value || - !(hid0 = item0->value->hid[he_requires]) || - hid0->any.flag != FLAG_STRING - ) continue; - for(item1 = item0->next; item1; item1 = item1->next) { - if( - item1->remove || - !item1->value || - !(hid1 = item1->value->hid[he_requires]) || - hid1->any.flag != FLAG_STRING - ) continue; - - i = cmp_item(item0, item1); - - /* remove duplicate entries */ - if(!i) { - item1->remove = 1; - continue; - } - - /* work only on entries with identical keys */ - if(i == -1 || i == 1) continue; - - if(!cmp_hid(hid0, hid1)) { - hid1->any.remove = 1; - fprintf(logfh, - "%s: info is identical to %s, info removed\n", - item1->pos, item0->pos - ); - log_items(logfh, item1, item0); - item1->value->hid[he_requires] = free_hid(item1->value->hid[he_requires]); - } - else { - slist.first = split('|', ((str_t *) hid0->str.list.first)->str); - - /* add pointer to last element */ - for(str = slist.first; str; str = str->next) { - if(!str->next) slist.last = str; - } - - str1 = split('|', ((str_t *) hid1->str.list.first)->str); - for(str = str1; str; str = str->next) { - for(str0 = slist.first; str0; str0 = str0->next) { - if(!strcmp(str->str, str0->str)) break; - } - if(!str0) add_list(&slist, clone_str(str)); - } - free_str(str1, 1); - - sort_list(&slist, cmp_str_s); - - free_str(hid0->str.list.first, 1); - hid0->str.list.last = NULL; - hid0->str.list.first = add_list(&hid0->str.list, new_mem(sizeof (str_t))); - ((str_t *) hid0->str.list.first)->str = join('|', slist.first); - - free_str(slist.first, 1); - - hid1->any.remove = 1; - - fprintf(logfh, - "%s: combine with %s, info removed\n", - item1->pos, item0->pos - ); - log_items(logfh, item1, item0); - item1->value->hid[he_requires] = free_hid(item1->value->hid[he_requires]); - } - - if(!count_common_hids(item1->value, item1->value)) { - /* remove if no values left */ - item1->remove = 1; - fprintf(logfh, "%s: no info left, item removed\n", item1->pos); - } - } - } - - remove_items(hd); -} - - -void join_items_by_value(list_t *hd) -{ - item_t *item0, *item1; - skey_t *skey, *next; - int i; - - for(item0 = hd->first; item0; item0 = item0->next) { - if(item0->remove) continue; - for(item1 = item0->next; item1; item1 = item1->next) { - if(item1->remove) continue; - - if(!cmp_skey(item0->value, item1->value)) { - for(skey = item1->key.first; skey; skey = next) { - next = skey->next; - add_list(&item0->key, skey); - } - memset(&item1->key, 0, sizeof item1->key); - item1->remove = 1; - fprintf(logfh, "%s: info added to %s, item removed\n", item1->pos, item0->pos); - } - } - } - - remove_items(hd); - - for(item0 = hd->first; item0; item0 = item0->next) { - - /* sort key entries */ - sort_list(&item0->key, cmp_skey_s); - - /* try to join adjacent keys */ - for(skey = item0->key.first; skey && (next = skey->next); ) { - i = combine_keys(skey, next); - if(!i) { - skey = next; - continue; - } - if(!(skey->next = next->next)) { - /* last element has changed */ - item0->key.last = skey; - } - free_skey(next, 0); - } - } -} - - -void join_items_by_key(list_t *hd) -{ - item_t *item0, *item1; - skey_t *val0, *val1; - int i; - - for(item0 = hd->first; item0; item0 = item0->next) { - if(item0->remove) continue; - val0 = item0->value; - for(item1 = item0->next; item1; item1 = item1->next) { - if(item1->remove) continue; - - i = cmp_item(item0, item1); - - if(i == 2 || i == -2) { - /* identical keys, values differ */ - val1 = item1->value; - if(!count_common_hids(val0, val1)) { - /* move everything from item1 to item0 */ - - for(i = 0; (unsigned) i < sizeof val1->hid / sizeof *val1->hid; i++) { - if(val1->hid[i]) { - val0->hid[i] = val1->hid[i]; - val1->hid[i] = NULL; - } - } - item1->remove = 1; - fprintf(logfh, "%s: info added to %s, item removed\n", item1->pos, item0->pos); - } - } - } - } - - remove_items(hd); -} - - -void remove_unimportant_items(list_t *hd) -{ - item_t *item; - skey_t *val; - str_t *str; - int i, cnt; - - for(item = hd->first; item; item = item->next) { - val = item->value; - cnt = 0; - if(val) { - for(i = 0; (unsigned) i < sizeof val->hid / sizeof *val->hid; i++) { - if(i == he_driver && val->hid[i]) { - if(!( - val->hid[i]->any.flag == FLAG_STRING && - (str = val->hid[i]->str.list.first) && - str->str && - (*str->str == 'i' || *str->str == 'm') - )) { - val->hid[i] = free_hid(val->hid[i]); - } - } - else if(val->hid[i]) { - if(val->hid[i]->any.flag != FLAG_ID) val->hid[i] = free_hid(val->hid[i]); - } - if(val->hid[i]) cnt++; - } - } - /* no values left */ - if(!cnt) item->remove = 1; - } - - remove_items(hd); -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -#if 0 -/* returns index in hddb2->ids */ -unsigned store_entry(hddb2_data_t *x, tmp_entry_t *te) -{ - int i, j; - unsigned ent = -1, u, v; - - for(i = 0; i < he_nomask; i++) { - if(te[i].len) { - for(j = 0; j < te[i].len; j++) { - v = te[i].val[j] | (1 << 31); - if(j == te[i].len - 1) v &= ~(1 << 31); - u = store_value(x, v); - if(ent == -1) ent = u; - } - } - } - - return ent; -} - -void add_value(tmp_entry_t *te, hddb_entry_t idx, unsigned val) -{ - if(idx >= he_nomask) return; - te += idx; - - if(te->len >= sizeof te->val / sizeof *te->val) return; - - te->val[te->len++] = val; -} - -#endif - - - -unsigned hddb_store_string(hddb_data_t *hddb, char *str) -{ - unsigned l = strlen(str), u; - char *s; - - if(!opt.no_compact) { - /* maybe we already have it... */ - if(l && l < hddb->strings_len) { - s = memmem(hddb->strings, hddb->strings_len, str, l + 1); - if(s) return s - hddb->strings; - } - } - - if(hddb->strings_len + l >= hddb->strings_max) { - hddb->strings_max += l + 0x1000; /* >4k steps */ - hddb->strings = realloc(hddb->strings, hddb->strings_max * sizeof *hddb->strings); - } - - /* make sure the 1st byte is 0 */ - if(hddb->strings_len == 0) { - *hddb->strings = 0; /* realloc does _not_ clear memory */ - hddb->strings_len = 1; - } - - if(l == 0) return 0; /* 1st byte is always 0 */ - - strcpy(hddb->strings + (u = hddb->strings_len), str); - hddb->strings_len += l + 1; - - return u; -} - - -unsigned hddb_store_value(hddb_data_t *hddb, unsigned val) -{ - if(hddb->ids_len == hddb->ids_max) { - hddb->ids_max += 0x400; /* 4k steps */ - hddb->ids = realloc(hddb->ids, hddb->ids_max * sizeof *hddb->ids); - } - - hddb->ids[hddb->ids_len++] = val; - - return hddb->ids_len - 1; -} - - -unsigned hddb_store_hid(hddb_data_t *hddb, hid_t *hid, hddb_entry_t entry) -{ - unsigned u, idx = -1; - str_t *str, *str0, *str1; - - if(!hid) return idx; - - if(hid->any.flag == FLAG_ID) { - if(hid->num.has.range) { - idx = hddb_store_value(hddb, MAKE_DATA(FLAG_RANGE, hid->num.range) | (1 << 31)); - } - else if(hid->num.has.mask) { - idx = hddb_store_value(hddb, MAKE_DATA(FLAG_MASK, hid->num.mask) | (1 << 31)); - } - u = hddb_store_value(hddb, MAKE_DATA(FLAG_ID, hid->num.id + (hid->num.tag << 16))); - if(idx == -1u) idx = u; - } - else if(hid->any.flag == FLAG_STRING) { - if(entry == he_driver ) { - for(str = hid->str.list.first; str; str = str->next) { - str0 = split('\001', str->str); - for(str1 = str0; str1; str1 = str1->next) { - u = hddb_store_string(hddb, str1->str); - if(str->next || str1->next) u |= 1 << 31; - u = hddb_store_value(hddb, MAKE_DATA(FLAG_STRING, u)); - if(idx == -1u) idx = u; - } - free_str(str0, 1); - } - } - else { - u = hddb_store_string(hddb, ((str_t *) hid->str.list.first)->str); - idx = hddb_store_value(hddb, MAKE_DATA(FLAG_STRING, u)); - } - } - - return idx; -} - - -void hddb_store_skey(hddb_data_t *hddb, skey_t *skey, unsigned *mask, unsigned *idx) -{ - int i, j, end; - unsigned ent; - hddb_data_t save_db = *hddb; - - *mask = 0; - *idx = 0; - - if(!skey) return; - - for(i = 0; (unsigned) i < sizeof skey->hid / sizeof *skey->hid; i++) { - if(skey->hid[i]) { - ent = hddb_store_hid(hddb, skey->hid[i], i); - if(!*mask) *idx = ent; - *mask |= (1 << i); - } - } - - if(!opt.no_compact) { - /* maybe there was an identical skey before... */ - if(save_db.ids_len && hddb->ids_len > save_db.ids_len) { - j = hddb->ids_len - save_db.ids_len; - end = save_db.ids_len - j; - /* this is pretty slow, but avoids memmem() alignment problems */ - for(i = 0; i < end; i++) { - if(!memcmp(hddb->ids + i, hddb->ids + save_db.ids_len, j * sizeof *hddb->ids)) { - /* remove new id entries and return existing entry */ - hddb->ids_len = save_db.ids_len; - *idx = i; - break; - } - } - } - } -} - - -void hddb_store_list(hddb_data_t *hddb, hddb_list_t *list) -{ - if(!list || !list->key_mask || !list->value_mask) return; - - if(hddb->list_len == hddb->list_max) { - hddb->list_max += 0x100; /* 4k steps */ - hddb->list = realloc(hddb->list, hddb->list_max * sizeof *hddb->list); - } - - hddb->list[hddb->list_len++] = *list; -} - - -void hddb_init(hddb_data_t *hddb, list_t *hd) -{ - item_t *item; - hddb_list_t db_list = {}; - unsigned item_cnt; - - for(item_cnt = 0, item = hd->first; item; item = item->next, item_cnt++) { - - hddb_store_skey(hddb, item->key.first, &db_list.key_mask, &db_list.key); - hddb_store_skey(hddb, item->value, &db_list.value_mask, &db_list.value); - - hddb_store_list(hddb, &db_list); - } -} - - -unsigned char *quote_string(unsigned char *str, int len) -{ - unsigned char *qstr; - int i, j; - - if(!str || !len) return NULL; - - qstr = new_mem(4 * len + 1); /* enough */ - - for(i = j = 0; i < len; i++) { - if(str[i] == '\\' || str[i] == '"' || str[i] == '?') { - qstr[j++] = '\\'; - qstr[j++] = str[i]; - } - else if(str[i] == '\n') { - qstr[j++] = '\\'; - qstr[j++] = 'n'; - } - else if(str[i] == '\t') { - qstr[j++] = '\\'; - qstr[j++] = 't'; - } - else if(str[i] < ' ') { - qstr[j++] = '\\'; - qstr[j++] = (str[i] >> 6) + '0'; - qstr[j++] = ((str[i] >> 3) & 7) + '0'; - qstr[j++] = (str[i] & 7) + '0'; - } - else { - qstr[j++] = str[i]; - } - } - - return qstr; -} - - -void write_cfile(FILE *f, list_t *hd) -{ - hddb_data_t hddb = {}; - char *qstr; - unsigned u, qstr_len, len; - - fprintf(logfh, "- building C version\n"); - fflush(logfh); - - hddb_init(&hddb, hd); - - fprintf(logfh, " db size: %u bytes\n", - (unsigned) (sizeof hddb + - hddb.strings_len + - hddb.ids_len * sizeof *hddb.ids + - hddb.list_len * sizeof *hddb.list) - ); - - fprintf(f, - "static hddb_list_t hddb_internal_list[];\n" - "static unsigned hddb_internal_ids[];\n" - "static char hddb_internal_strings[];\n\n" - "hddb2_data_t hddb_internal = {\n" - " %u, %u, hddb_internal_list,\n" - " %u, %u, hddb_internal_ids,\n" - " %u, %u, hddb_internal_strings\n" - "};\n\n", - hddb.list_len, hddb.list_len, - hddb.ids_len, hddb.ids_len, - hddb.strings_len, hddb.strings_len - ); - - fprintf(f, "static hddb_list_t hddb_internal_list[%u] = {\n", hddb.list_len); - for(u = 0; u < hddb.list_len; u++) { - fprintf(f, - " { 0x%08x, 0x%08x, 0x%08x, 0x%08x }%s\n", - hddb.list[u].key_mask, hddb.list[u].value_mask, - hddb.list[u].key, hddb.list[u].value, - u + 1 == hddb.list_len ? "" : "," - ); - } - fprintf(f, "};\n\n"); - - fprintf(f, "static unsigned hddb_internal_ids[%u] = {\n", hddb.ids_len); - for(u = 0; u < hddb.ids_len; u++) { - if((u % 6) == 0) fputc(' ', f); - fprintf(f, " 0x%08x", hddb.ids[u]); - if(u + 1 != hddb.ids_len) fputc(',', f); - if(u % 6 == 6 - 1 || u + 1 == hddb.ids_len) fputc('\n', f); - } - fprintf(f, "};\n\n"); - - qstr = quote_string(hddb.strings, hddb.strings_len); - qstr_len = qstr ? strlen(qstr) : 0; - fprintf(f, "static char hddb_internal_strings[%u] = \"\\\n", hddb.strings_len); - for(u = 0; u < qstr_len; ) { - len = qstr_len - u; - if(len > 72) len = 72; - while(len--) fputc(qstr[u++], f); - fprintf(f, "\\\n"); - } - fprintf(f, "\";\n\n"); - - free_mem(qstr); - - free_mem(hddb.list); - free_mem(hddb.ids); - free_mem(hddb.strings); -} - - diff --git a/src/hwinfo/src/ids/convert_hd b/src/hwinfo/src/ids/convert_hd deleted file mode 100755 index a76f353155..0000000000 --- a/src/hwinfo/src/ids/convert_hd +++ /dev/null @@ -1,2931 +0,0 @@ -#! /usr/bin/perl - -use Getopt::Long; -use XML::Writer; -use XML::Parser; -use IO; -use Dumpvalue; - -sub help; - -sub read_name_file; -sub read_driver_file; -sub read_id_file; -sub read_pcimap_file; -sub read_usbmap_file; -sub read_alias_file; -sub read_modinfo_file; -sub eisa_id; -sub eisa_str; - -sub remove_nops; -sub remove_duplicates; -sub fix_driver_info; - -sub cmp_id; -sub cmp_skey; -sub cmp_item; - -sub match_id; -sub match_skey; -sub match_item; - -sub join_skey; - -sub split_item; - -sub get_xml_data; -sub parse_xml_item; -sub parse_xml_key; -sub parse_xml_id; -sub parse_xml_id_id; -sub parse_xml_id_range; -sub parse_xml_id_mask; -sub parse_xml_driver; -sub parse_xml_driver_display; -sub parse_xml_driver_module; -sub parse_xml_driver_mouse; -sub parse_xml_driver_xfree; -sub parse_xml_pair; -sub parse_xml_cdata; -sub idstr2value; - -sub dump2ids; -sub dump2xml; -sub dump_xml_item; -sub dump_xml_names; -sub dump_xml_drivers; -sub id2xml; - -sub hd_dtd; -sub hd_dtd_internal; - -$dump = new Dumpvalue(); - -( - $he_other, $he_bus_id, $he_baseclass_id, $he_subclass_id, $he_progif_id, - $he_vendor_id, $he_device_id, $he_subvendor_id, $he_subdevice_id, $he_rev_id, - $he_bus_name, $he_baseclass_name, $he_subclass_name, $he_progif_name, - $he_vendor_name, $he_device_name, $he_subvendor_name, $he_subdevice_name, - $he_rev_name, $he_serial, $he_driver, $he_requires, - $he_nomask, - $he_driver_module_insmod, $he_driver_module_modprobe, - $he_driver_module_config, $he_driver_xfree, $he_driver_xfree_config, - $he_driver_mouse, $he_driver_display, $he_driver_any -) = ( 0 .. 100 ); -$he_class_id = $he_nomask; - -@ent_names = ( - "other", "bus.id", "baseclass.id", "subclass.id", "progif.id", - "vendor.id", "device.id", "subvendor.id", "subdevice.id", "rev.id", - "bus.name", "baseclass.name", "subclass.name", "progif.name", - "vendor.name", "device.name", "subvendor.name", "subdevice.name", - "rev.name", "serial", "driver", "requires", - "class.id", "driver.module.insmod", "driver.module.modprobe", - "driver.module.config", "driver.xfree", "driver.xfree.config", - "driver.mouse", "driver.display", "driver.any" -); -@ent_values{@ent_names} = ( 0 .. 100 ); - -@xml_names = ( - "other", "bus", "baseclass", "subclass", "progif", - "vendor", "device", "subvendor", "subdevice", "revision", - "bus", "baseclass", "subclass", "progif", - "vendor", "device", "subvendor", "subdevice", - "revision", "serial", "driver", "requires" -); -@xml_values{@xml_names} = ( 0 .. 100 ); - -( $tag_none, $tag_pci, $tag_eisa, $tag_usb, $tag_special, $tag_pcmcia ) = ( 0 .. 5 ); - -@tag_name = ( "", "pci", "eisa", "usb", "special", "pcmcia" ); -@tag_values{@tag_name} = ( 0 .. 5 ); -$tag_values{none} = 0; - -( $flag_id, $flag_range, $flag_mask, $flag_string, $flag_regexp ) = ( 0 .. 4 ); -$flag_cont = 8; - -# map usb modules to device classes -%usbmod2class = ( - 'ov511' => [ 0x10f, 0 ], - 'pwc' => [ 0x10f, 0 ], - 'hpusbscsi' => [ 0x10c, 0 ], - 'microtek' => [ 0x10c, 0 ], - 'scanner' => [ 0x10c, 0 ] -); - - -# options -$opt_write_ids = 1; -$opt_write_xml = 0; -$opt_sort_ids = 0; -$opt_sort_reverse = 0; -$opt_sort_random = 0; # for testing -$opt_split = 0; -$opt_with_source = 0; -$opt_fix_driver = 1; -$opt_help = 0; -$opt_internal_dtd = 0; - -$opt_ok = GetOptions( - 'ids' => \$opt_write_ids, - 'no-ids' => sub { $opt_write_ids = 0 }, - 'xml' => \$opt_write_xml, - 'no-xml' => sub { $opt_write_xml = 0 }, - 'sort' => \$opt_sort, - 'reverse' => \$opt_sort_reverse, - 'random' => \$opt_sort_random, - 'split' => \$opt_split, - 'with-source' => \$opt_with_source, - 'fix-driver' => \$opt_fix_driver, - 'no-fix-driver' => sub { $opt_fix_driver = 0 }, - 'internal-dtd' => \$opt_internal_dtd, - 'help' => \&help -) ; - -for $f (@ARGV) { - if(open F, $f) { - @f = (); - close F; - - # file format check - - undef $format; - - for (@f) { - if(/^\s*\<\?xml\s/) { - $format = 'xml'; - last; - } - - if(/^#\s+pci\s+module\s+vendor\s+device\s+subvendor\s+subdevice\s+class\s+class_mask\s+driver_data\s*$/) { - $format = 'pcimap'; - last; - } - - if(/^#\s+usb\s+module\s+match_flags\s+idVendor\s+idProduct\s+/) { - $format = 'usbmap'; - last; - } - - if(/^\s*alias\s+(pci|pnp|usb):\S+\s+\S+$/) { - $format = 'alias'; - last; - } - - if(/^\s*alias:\s+(pci|pnp|usb):\S+\s*$/) { - $format = 'modinfo'; - last; - } - - } - - if(!$format) { - $i = join "|", map "\Q$_", @ent_names; - for (@f) { - if(/^\s*[+&|]?($i)\s/) { - $format = 'ids'; - last; - } - } - } - - if(!$format) { - for (@f) { - if(/^\t[a-z]\s/) { - $format = 'drivers'; - last; - } - } - } - - $format = 'names' if !$format; - - if($format eq 'names') { - - print STDERR "====== \"$f\": name info ======\n"; - read_name_file $f, \@f; - - } - elsif($format eq 'drivers') { - - print STDERR "====== \"$f\": driver info ======\n"; - read_driver_file $f, \@f; - - } - elsif($format eq 'xml') { - - print STDERR "====== \"$f\": xml info ======\n"; - $xmlp = new XML::Parser(Style => 'Tree', ParseParamEnt => 1); - get_xml_data $xmlp->parsefile($f); - - } - elsif($format eq 'ids') { - - print STDERR "====== \"$f\": id info ======\n"; - read_id_file $f, \@f; - - } - elsif($format eq 'pcimap') { - - print STDERR "====== \"$f\": pcimap info ======\n"; - read_pcimap_file $f, \@f; - - } - elsif($format eq 'usbmap') { - - print STDERR "====== \"$f\": usbmap info ======\n"; - read_usbmap_file $f, \@f; - - } - elsif($format eq 'alias') { - - print STDERR "====== \"$f\": alias info ======\n"; - read_alias_file $f, \@f; - - } - elsif($format eq 'modinfo') { - - print STDERR "====== \"$f\": module info ======\n"; - read_modinfo_file $f, \@f; - - } - } - else { - die "$f: $!\n" - } -} - -print STDERR "removing unnecessary items\n"; -remove_nops; - -print STDERR "got ${\scalar @hd} items\n"; - -if($opt_fix_driver) { - fix_driver_info; -} - -if($opt_split) { - print STDERR "splitting items\n"; - for (@hd) { - push @hd_new, split_item($_); - } - @hd = @hd_new; - undef @hd_new; -} - -if($opt_sort_ids) { - print STDERR "sorting\n"; - if($opt_sort_random) { - @hd = sort { $cmp_item_cnt++, rand() <=> rand() } @hd; - } - elsif($opt_sort_reverse) { - @hd = sort { cmp_item $b, $a } @hd; - } - else { - @hd = sort { cmp_item $a, $b } @hd; - } -} - -if($opt_write_ids) { - print STDERR "writing \"hd.ids\"\n"; - dump2ids; -} - -if($opt_write_xml) { - print STDERR "writing \"hd.xml\"\n"; - dump2xml; -} - -print STDERR "cmps: $cmp_item_cnt\n" if $cmp_item_cnt; - -# $dump->dumpValue( \@hd ); - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -sub help -{ - print STDERR - "Usage: convert_hd [options] files\n" . - "Convert various hardware info to libhd/hwinfo internal format or to XML.\n" . - " --ids write internal format (default) to \"hd.ids\"\n" . - " --no-ids do not write internal format\n" . - " --xml write XML to \"hd.xml\", DTD to \"hd.dtd\"\n" . - " --no-xml do not write XML (default)\n" . - " --with-source add comment to each item indicating info source\n" . - " --internal-dtd generate internal dtd\n\n" . - " Note: for more sophisticated operations on hardware data use check_hd.\n"; - - exit 0; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -sub num -{ - return $_[0] =~ /^0/ ? oct $_[0] : return $_[0] + 0; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# read file with name/class info -# -# (either pciutils or SaX/SaX2 format) -# - -sub read_name_file -{ - my ( $file_name, $file, $line, $sax_version, $tag, $id, $val, $ent ); - my ( @id0, @id1, @id2, @id3, @id4, $raw, $opt, $ext, $srv, $str ); - local $_; - - my $rnf_add_id0 = sub - { - my ( $id0, $name0, $ent_id0, $ent_name0, $id, $val ); - - # note: $tag belongs to read_name_file() - ( $ent_id0, $ent_name0, $tag, $id0, $name0 ) = @_; - - $ent = $ent_id0; - - @id0 = ( $flag_id, $tag, $id0 ); - undef @id1; undef @id2; undef @id3; - - $id->[$ent_id0] = [ @id0 ]; - $val->[$ent_name0] = [ $flag_string, $name0 ]; - - push @hd, [ "$file_name($line)", [ $id ], $val ]; - }; - - my $rnf_add_bus = sub - { - $rnf_add_id0->($he_bus_id, $he_bus_name, 0, @_); - }; - - my $rnf_add_baseclass = sub - { - $rnf_add_id0->($he_baseclass_id, $he_baseclass_name, 0, @_); - }; - - my $rnf_add_vendor = sub - { - $rnf_add_id0->($he_vendor_id, $he_vendor_name, @_); - }; - - my $rnf_add_subdevice = sub - { - my ( $id2, $id3, $range, $name, $class, $id, $val ); - - ( $id2, $id3, $range, $name, $class ) = @_; - - @id2 = ( $flag_id, $tag, $id2 ); - @id3 = ( $flag_id, $tag, $id3 ); - $id3[3] = $range if defined $range; - - if($ent == $he_device_id || $ent == $he_subdevice_id) { - $ent = $he_subdevice_id; - - $id->[$he_vendor_id] = [ @id0 ]; - $id->[$he_device_id] = [ @id1 ]; - $id->[$he_subvendor_id] = [ @id2 ]; - $id->[$he_subdevice_id] = [ @id3 ]; - $val->[$he_subdevice_name] = [ $flag_string, $name ]; - if(defined $class) { - $val->[$he_baseclass_id] = [ $flag_id, $tag_none, $class >> 8 ]; - $val->[$he_subclass_id] = [ $flag_id, $tag_none, $class & 0xff ]; - } - } - else { - die "oops $file_name($line): subdevice id expected\n"; - } - - push @hd, [ "$file_name($line)", [ $id ], $val ]; - }; - - ( $file_name, $file ) = @_; - - $line = 0; - undef $sax_version; - - for (@$file) { - $line++; - chomp; - s/\s*$//; - next if /^\s*[#;]/; - next if /^$/; - - # SaX Identity file - if(/^NAME=(.+?)§DEVICE=(.+?)§VID=0x([0-9a-fA-F]+?)§DID=0x([0-9a-fA-F]+?)§SERVER=([^§]+)(§EXT=([^§]*))?(§OPT=([^§]*))?(§RAW=([^§]*))?$/) { - # 1 2 3 4 5 6 7 8 9 10 11 - - $rnf_add_vendor->($tag_pci, hex($3), $1); - - @id0 = ( $flag_id, $tag, hex($3) ); - @id1 = ( $flag_id, $tag, hex($4) ); - @id3 = ( $flag_string, $2 ); - - $id = []; - $val = []; - - $id->[$he_vendor_id] = [ @id0 ]; - $id->[$he_device_id] = [ @id1 ]; - $val->[$he_device_name] = [ @id3 ]; - - push @hd, [ "$file_name($line)", [ $id ], $val ]; - - ( $srv, $ext, $opt, $raw ) = ( $5, $7, $9, $11 ); - $sax_tmp = $srv =~ /^3DLABS|MACH64|P9000|RUSH|S3|SVGA|TGA$/ ? 1 : 2; - $sax_version = $sax_tmp unless defined $sax_version; - die "line has SaX$sax_tmp format (expected SaX$sax_version): $file_name($line)\n" if $sax_tmp != $sax_version; - - $id = []; - $val = []; - - $id->[$he_vendor_id] = [ @id0 ]; - $id->[$he_device_id] = [ @id1 ]; - - if($opt) { - $str = join "|", ( $sax_version == 1 ? 3 : 4, $srv, undef, undef, $ext, $opt ); - } - elsif($ext) { - $str = join "|", ( $sax_version == 1 ? 3 : 4, $srv, undef, undef, $ext ); - } - else { - $str = join "|", ( $sax_version == 1 ? 3 : 4, $srv ); - } - - @id4 = ( "x\t$str" ); - if($raw) { - for $str (split /,/, $raw) { $id4[0] .= "\x00X\t$str" } - } - - $val->[$he_driver] = [ $flag_string, @id4 ]; - - push @hd, [ "$file_name($line)", [ $id ], $val ]; - } - - elsif(/^B\s+([0-9a-fA-F]+)\s+(.*?)\s*$/) { - - $rnf_add_bus->(hex($1), $2); - - } - - elsif(/^C\s+([0-9a-fA-F]+)\s+(.*?)\s*$/) { - - $rnf_add_baseclass->(hex($1), $2); - - } - - elsif(/^([0-9a-fA-F]{4})(\s+(.*?))?\s*$/) { - - $rnf_add_vendor->($tag_pci, hex($1), $3); - - } - - elsif(/^u([0-9a-fA-F]{4})(\s+(.*?))?\s*$/) { - - $rnf_add_vendor->($tag_usb, hex($1), $3); - - } - - elsif(/^s([0-9a-fA-F]{4})(\s+(.*?))?\s*$/) { - - $rnf_add_vendor->($tag_special, hex($1), $3); - - } - - elsif(/^([A-Z_@]{3})(\s+(.*?))?\s*$/) { - - $rnf_add_vendor->($tag_eisa, eisa_id($1), $3); - - } - - elsif(/^\t([0-9a-fA-F]{1,4})(\+([0-9a-fA-F]+))?(\.([0-9a-fA-F]+))?(\s+(.*?))?\s*$/) { - - $range = $3 ? hex($3) : undef; - $class = $5 ? hex($5) : undef; - - @id1 = ( $flag_id, $tag, hex($1) ); - $id1[3] = $range if defined $range; - undef @id2; undef @id3; - - $id = []; - $val = []; - - if($ent == $he_baseclass_id || $ent == $he_subclass_id) { - $ent = $he_subclass_id; - - $id->[$he_baseclass_id] = [ @id0 ]; - $id->[$he_subclass_id] = [ @id1 ]; - $val->[$he_subclass_name] = [ $flag_string, $7 ]; - } - elsif($ent == $he_vendor_id || $ent == $he_device_id || $ent == $he_subdevice_id) { - $ent = $he_device_id; - - $id->[$he_vendor_id] = [ @id0 ]; - $id->[$he_device_id] = [ @id1 ]; - $val->[$he_device_name] = [ $flag_string, $7 ]; - if(defined $class) { - $val->[$he_baseclass_id] = [ $flag_id, $tag_none, $class >> 8 ]; - $val->[$he_subclass_id] = [ $flag_id, $tag_none, $class & 0xff ]; - } - } - else { - die "oops $file_name($line): device id expected\n"; - } - - push @hd, [ "$file_name($line)", [ $id ], $val ]; - - } - - elsif($ent == $he_subclass_id && /^\t\t([0-9a-fA-F]+)\s+(.*?)\s*$/) { - - @id2 = ( $flag_id, $tag, hex($1) ); - undef @id3; - - $id = []; - $val = []; - - $id->[$he_baseclass_id] = [ @id0 ]; - $id->[$he_subclass_id] = [ @id1 ]; - $id->[$he_progif_id] = [ @id2 ]; - $val->[$he_progif_name] = [ $flag_string, $2 ]; - - push @hd, [ "$file_name($line)", [ $id ], $val ]; - - } - - elsif(/^\t\t([0-9a-fA-F]{4})\s+([0-9a-fA-F]{4})(\+([0-9a-fA-F]+))?(\.([0-9a-fA-F]+))?(\s+(.*?))?\s*$/) { - - $rnf_add_subdevice->(hex($1), hex($2), $4 ? hex($4) : undef, $8, $6 ? hex($6) : undef); - - } - - elsif(/^\t\t([A-Z_@]{3})\s+([0-9a-fA-F]{4})(\+([0-9a-fA-F]+))?(\.([0-9a-fA-F]+))?(\s+(.*?))?\s*$/) { - - $rnf_add_subdevice->(eisa_id($1), hex($2), $4 ? hex($4) : undef, $8, $6 ? hex($6) : undef); - - } - - elsif(/^\t\t([0-9a-fA-F]{4})([0-9a-fA-F]{4})\s+(.*?)\s*$/) { - - # NOTE: subvendor & subdevice ids are reversed! - $rnf_add_subdevice->(hex($2), hex($1), undef, $3); - - } - - else { - die "invalid line: $file_name($line)\n"; - } - } -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# read file with driver info -# - -sub read_driver_file -{ - my ( $line, @drv, $file, $file_name, $drv_type, $tag ); - local $_; - - my $rdf_save_drv = sub - { - if($drv_type) { - push @hd, [ @drv ] if defined @drv; - @drv = ( "$file_name($line)" ); - $drv[2][$he_driver] = [ $flag_string ]; - $drv_type = undef; - } - }; - - my $rdf_add_id = sub - { - my ( $tag, $id0, $id1, $range1, $id2, $id3, $range3, $id ); - - ( $tag, $id0, $id1, $range1, $id2, $id3, $range3 ) = @_; - - $rdf_save_drv->(); - - $id = []; - - @id0 = ( $flag_id, $tag, $id0 ); - @id1 = ( $flag_id, $tag, $id1 ); - $id1[3] = $range1 if defined $range1; - - $id->[$he_vendor_id] = [ @id0 ]; - $id->[$he_device_id] = [ @id1 ]; - - if(defined $id2) { - @id2 = ( $flag_id, $tag, $id2 ); - @id3 = ( $flag_id, $tag, $id3 ); - $id3[3] = $range3 if defined $range3; - - $id->[$he_subvendor_id] = [ @id2 ]; - $id->[$he_subdevice_id] = [ @id3 ]; - } - push @{$drv[1]}, $id; - }; - - ( $file_name, $file ) = @_; - - $drv_type = 1; - - for (@$file) { - $line++; - chomp; - s/\s*$//; - next if /^[#;]/; - next if /^$/; - - if(/^([us]?)([0-9a-fA-F]{4})\s+([0-9a-fA-F]{4})(\+([0-9a-fA-F]+))?\s*$/) { - - $tag = $tag_pci; - $tag = $tag_usb if $1 eq 'u'; - $tag = $tag_special if $1 eq 's'; - - $rdf_add_id->($tag, hex($2), hex($3), $5 ? hex($5) : undef); - - } - - elsif(/^([A-Z_@]{3})\s+([0-9a-fA-F]{4})(\+([0-9a-fA-F]+))?\s*$/) { - - $rdf_add_id->($tag_eisa, eisa_id($1), hex($2), $4 ? hex($4) : undef); - - } - - elsif(/^([us]?)([0-9a-fA-F]{4})\s+([0-9a-fA-F]{4})(\+([0-9a-fA-F]+))?\s+([us]?)([0-9a-fA-F]{4})\s+([0-9a-fA-F]{4})(\+([0-9a-fA-F]+))?\s*$/) { - - $tag = $tag_pci; - $tag = $tag_usb if $1 eq 'u'; - $tag = $tag_special if $1 eq 's'; - - $rdf_add_id->($tag, hex($2), hex($3), $5 ? hex($5) : undef, hex($7), hex($8), $10 ? hex($10) : undef); - - } - - elsif(/^([A-Z_@]{3})\s+([0-9a-fA-F]{4})(\+([0-9a-fA-F]+))?\s+([A-Z_@]{3})\s+([0-9a-fA-F]{4})(\+([0-9a-fA-F]+))?\s*$/) { - - $rdf_add_id->($tag_eisa, eisa_id($1), hex($2), $4 ? hex($4) : undef, eisa_id($5), hex($6), $8 ? hex($8) : undef); - - } - - elsif(/^\t([a-z])\s+(.*?)\s*$/) { - - push @{$drv[2][$he_driver]}, "$1\t$2"; - $drv_type = $1; - - } - - elsif($drv_type && /^\t\t\s*(.*)$/) { - - $drv_type = "X" if $drv_type eq "x"; - $drv_type = "M" if $drv_type eq "m"; - $drv[2][$he_driver][-1] .= "\x00$drv_type\t$1"; - - } - - else { - die "invalid line: $file_name($line)\n"; - } - } - - $rdf_save_drv->(); -} - - -sub num -{ - return $_[0] =~ /^0/ ? oct $_[0] : return $_[0] + 0; -} - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# read file with id info -# - -sub read_id_file -{ - my ( $line, $file, $file_name, $tag, $pre, $fields, @item, @id, $state, $keyid ); - my ( $is_id, $i ); - local $_; - - my $rif_save_item = sub - { - if(@item > 1) { - push @hd, [ @item ]; - } - @item = ( "$file_name($line)" ); - }; - - # parse id field - my $str2id = sub - { - my ($val, $id, $tag, $mask, $range, @id); - - $val = shift; - - if($val =~ s/^(${\join '|', @tag_name})\s+//o) { - die "internal oops: $file_name($line)\n" unless exists $tag_values{$1}; - $tag = $tag_values{$1}; - } - else { - $tag = 0; - } - - if($val =~ /^\s*(\S+)\s*([&+])\s*(\S+)\s*$/) { - $id = $1; - if($2 eq "+") { - $range = $3; - } - else { - $mask = $3; - } - } - else { - $id = $val; - } - - if(defined $range) { - if($range =~ /^(0x[0-9a-zA-Z]+|\d+)$/) { - $range = num $range; - } - else { - die "$file_name($line): invalid range\n" - } - } - - if(defined $mask) { - if($mask =~ /^(0x[0-9a-zA-Z]+|\d+)$/) { - $mask = num $mask; - } - else { - die "$file_name($line): invalid mask\n" - } - } - - if($id =~ /^(0x[0-9a-zA-Z]+|\d+)$/) { - $id = num $id; - } - elsif(($tag == $tag_none || $tag == $tag_eisa) && $id =~ /^[A-Z_@]{3}$/) { - $id = eisa_id $id; - $tag = $tag_eisa; - } - else { - die "$file_name($line): invalid id\n" - } - - @id = ( $flag_id, $tag, $id ); - $id[3] = $range if defined $range; - $id[4] = $mask if defined $mask; - - return \@id; - }; - - ( $file_name, $file ) = @_; - - $fields = join "|", map "\Q$_", @ent_names; - - $state = 0; - - $rif_save_item->(); - - for (@$file) { - $line++; - chomp; - s/\s*$//; - next if /^\s*[#;]/; - next if /^$/; - - if(/^\s*([+&|]?)($fields)\s+(.+)/) { - ($pre, $key, $val) = ($1, $2, $3); - # print ">$pre< $is_id>$key< >$val<\n"; - die "internal oops: $file_name($line)\n" unless exists $ent_values{$key}; - $keyid = $ent_values{$key}; - $is_id = $keyid < $he_nomask && $key =~ /\.id$/ ? 1 : 0; - } - else { - die "invalid line: $file_name($line)\n"; - } - - if($pre eq "") { - die "invalid line: $file_name($line)\n" unless $state == 0 || $state == 2; - if($state == 2) { - $item[2] = [ @id ]; - undef @id; - } - $rif_save_item->(); - $state = 1; - } - elsif($pre eq "|") { - die "invalid line: $file_name($line)\n" unless $state == 1; - push @{$item[1]}, [ @id ]; - undef @id; - } - elsif($pre eq "&") { - die "invalid line: $file_name($line)\n" unless $state == 1; - } - elsif($pre eq "+") { - die "invalid line: $file_name($line)\n" unless $state == 1 || $state == 2; - if($state == 1) { - push @{$item[1]}, [ @id ]; - undef @id; - } - $state = 2; - } - else { - die "internal oops: $file_name($line)\n"; - } - - if($is_id) { - $id[$keyid] = $str2id->($val); - } - elsif($keyid < $he_nomask) { - $id[$keyid] = [ $flag_string, $val ]; - } - elsif($keyid == $he_class_id) { - $i = ${$str2id->($val)}[2]; - $id[$he_baseclass_id] = [ $flag_id, $tag_none, $i >> 8 ]; - $id[$he_subclass_id] = [ $flag_id, $tag_none, $i & 0xff ]; - } - else { - undef $i; - if($keyid == $he_driver_module_insmod) { - $i = "i"; - } - elsif($keyid == $he_driver_module_modprobe) { - $i = "m"; - } - elsif($keyid == $he_driver_module_config) { - $i = "M"; - } - elsif($keyid == $he_driver_xfree) { - $i = "x"; - } - elsif($keyid == $he_driver_xfree_config) { - $i = "X"; - } - elsif($keyid == $he_driver_mouse) { - $i = "p"; - } - elsif($keyid == $he_driver_display) { - $i = "d"; - } - elsif($keyid == $he_driver_any) { - $i = "a"; - } - else { - die "unhandled entry: $file_name($line)\n" - } - $val = "$i\t$val"; - if(!defined $id[$he_driver]) { - $id[$he_driver] = [ $flag_string ]; - } - if($i eq "X" || $i eq "M") { - $id[$he_driver]->[-1] .= "\x00$val" - } - else { - push @{$id[$he_driver]}, $val; - } - } - } - - if($state == 2) { - $item[2] = [ @id ]; - undef @id; - } - - $rif_save_item->(); -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# read pcimap file -# - -sub read_pcimap_file -{ - my (@l, $id, $n, $key, $val, $mask); - local $_; - - ( $file_name, $file ) = @_; - - for (@$file) { - $line++; - chomp; - s/\s*$//; - next if /^\s*#/; - next if /^$/; - - @l = split; - - die "invalid line: $file_name($line)\n" unless @l == 8; - - $val = []; - - $val->[$he_driver] = [ $flag_string, "m\t$l[0]" ]; - - $key = []; - - $key->[$he_vendor_id] = [ $flag_id, $tag_pci, $n ] if ($n = num $l[1]) != 0xffffffff; - $key->[$he_device_id] = [ $flag_id, $tag_pci, $n ] if ($n = num $l[2]) != 0xffffffff; - $key->[$he_subvendor_id] = [ $flag_id, $tag_pci, $n ] if ($n = num $l[3]) != 0xffffffff; - $key->[$he_subdevice_id] = [ $flag_id, $tag_pci, $n ] if ($n = num $l[4]) != 0xffffffff; - - $n = num $l[6]; - - if($mask = ($n >> 16) & 0xff) { - $key->[$he_baseclass_id] = [ $flag_id, $tag_none, (num($l[5]) >> 16) & 0xff ]; - if($mask != 0xff) { - $key->[$he_baseclass_id][4] = (~$mask & 0xff); - } - } - - if($mask = ($n >> 8) & 0xff) { - $key->[$he_subclass_id] = [ $flag_id, $tag_none, (num($l[5]) >> 8) & 0xff ]; - if($mask != 0xff) { - $key->[$he_subclass_id][4] = (~$mask & 0xff); - } - } - - if($mask = $n & 0xff) { - $key->[$he_progif_id] = [ $flag_id, $tag_none, num($l[5]) & 0xff ]; - if($mask != 0xff) { - $key->[$he_progif_id][4] = (~$mask & 0xff); - } - } - - push @hd, [ "$file_name($line)", [ $key ], $val ]; - } -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# read usbmap file -# - -sub read_usbmap_file -{ - my (@l, $id, $n, $key, $val, $mask); - local $_; - - ( $file_name, $file ) = @_; - - for (@$file) { - $line++; - chomp; - s/\s*$//; - next if /^\s*#/; - next if /^$/; - - @l = split; - - die "invalid line: $file_name($line)\n" unless @l == 13; - - next if num($l[1]) != 3; # match_flags != 3 - - $val = []; - - $key = []; - - $key->[$he_vendor_id] = [ $flag_id, $tag_usb, num($l[2]) ]; - $key->[$he_device_id] = [ $flag_id, $tag_usb, num($l[3]) ]; - - $val->[$he_driver] = [ $flag_string, "m\t$l[0]" ]; - - if($usbmod2class{$l[0]}) { - $val->[$he_baseclass_id] = [ $flag_id, $tag_none, $usbmod2class{$l[0]}[0] ] if defined $usbmod2class{$l[0]}[0]; - $val->[$he_subclass_id] = [ $flag_id, $tag_none, $usbmod2class{$l[0]}[1] ] if defined $usbmod2class{$l[0]}[1]; - } - - push @hd, [ "$file_name($line)", [ $key ], $val ]; - } -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# read alias file -# - -sub read_alias_file -{ - my ($f, $id, $n, $key, $val, $mask, $tag, $module, $spec, $t1, $t2); - local $_; - - $f = '[0-9A-F*]+'; - - ( $file_name, $file ) = @_; - - for (@$file) { - $line++; - chomp; - s/\s*$//; - next if /^\s*#/; - next if /^$/; - - next unless /^\s*alias\s+(pci|pnp|usb):(\S+)\s+(\S+)/; - - $tag = $tag_pci if $1 eq 'pci'; - $tag = $tag_eisa if $1 eq 'pnp'; - $tag = $tag_usb if $1 eq 'usb'; - - $spec = $2; - $module = $3; - - $val = []; - - $val->[$he_driver] = [ $flag_string, "m\t$module" ]; - - $key = []; - - if($spec =~ /^v($f)d($f)sv($f)sd($f)bc($f)sc($f)i($f)$/ ) { - $key->[$he_vendor_id] = [ $flag_id, $tag, hex $1 ] if $1 ne '*'; - $key->[$he_device_id] = [ $flag_id, $tag, hex $2 ] if $2 ne '*'; - $key->[$he_subvendor_id] = [ $flag_id, $tag, hex $3 ] if $3 ne '*'; - $key->[$he_subdevice_id] = [ $flag_id, $tag, hex $4 ] if $4 ne '*'; - $key->[$he_baseclass_id] = [ $flag_id, $tag_none, hex $5 ] if $5 ne '*'; - $key->[$he_subclass_id] = [ $flag_id, $tag_none, hex $6 ] if $6 ne '*'; - $key->[$he_progif_id] = [ $flag_id, $tag_none, hex $7 ] if $7 ne '*'; - - push @hd, [ "$file_name($line)", [ $key ], $val ]; - } - elsif($spec =~ /^v($f)p($f)dl($f)dh($f)dc($f)dsc($f)dp($f)ic($f)isc($f)ip($f)$/ ) { - - if( - $3 == '*' && $4 == '*' && $5 == '*' && - $6 == '*' && $7 == '*' && $8 == '*' && - $9 == '*' && $10 == '*' - ) { - $key->[$he_vendor_id] = [ $flag_id, $tag, hex $1 ] if $1 ne '*'; - $key->[$he_device_id] = [ $flag_id, $tag, hex $2 ] if $2 ne '*'; - - push @hd, [ "$file_name($line)", [ $key ], $val ]; - } - } - elsif($spec =~ /^[c|d](\S{3})([0-9a-fA-FX]{4})/ ) { - $t1 = $1; - $t2 = $2; - - if($t1 =~ /[\@A-Z\[\\\]\^_]{3}/ && $t2 ne 'XXXX') { - $key->[$he_vendor_id] = [ $flag_id, $tag, eisa_id $t1 ]; - $key->[$he_device_id] = [ $flag_id, $tag, hex $t2 ]; - - push @hd, [ "$file_name($line)", [ $key ], $val ]; - } - } - else { - die "invalid line: $file_name($line)\n" - } - } -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# read modinfo data -# - -sub read_modinfo_file -{ - my ($f, $id, $n, $key, $val, $mask, $tag, $module, $spec, $t1, $t2); - local $_; - - $f = '[0-9A-F*]+'; - - ( $file_name, $file ) = @_; - - for (@$file) { - $line++; - chomp; - s/\s*$//; - next if /^\s*#/; - next if /^$/; - - if(m#([^/]+)\.ko:$#) { - $module = $1; - next; - } - - next unless /^\s*alias:\s+(pci|pnp|usb):(\S+)\s*$/; - - $tag = $tag_pci if $1 eq 'pci'; - $tag = $tag_eisa if $1 eq 'pnp'; - $tag = $tag_usb if $1 eq 'usb'; - - $spec = $2; - - $val = []; - - $val->[$he_driver] = [ $flag_string, "m\t$module" ]; - - $key = []; - - if($spec =~ /^v($f)d($f)sv($f)sd($f)bc($f)sc($f)i($f)$/ ) { - $key->[$he_vendor_id] = [ $flag_id, $tag, hex $1 ] if $1 ne '*'; - $key->[$he_device_id] = [ $flag_id, $tag, hex $2 ] if $2 ne '*'; - $key->[$he_subvendor_id] = [ $flag_id, $tag, hex $3 ] if $3 ne '*'; - $key->[$he_subdevice_id] = [ $flag_id, $tag, hex $4 ] if $4 ne '*'; - $key->[$he_baseclass_id] = [ $flag_id, $tag_none, hex $5 ] if $5 ne '*'; - $key->[$he_subclass_id] = [ $flag_id, $tag_none, hex $6 ] if $6 ne '*'; - $key->[$he_progif_id] = [ $flag_id, $tag_none, hex $7 ] if $7 ne '*'; - - push @hd, [ "$file_name($line)", [ $key ], $val ]; - } - elsif($spec =~ /^v($f)p($f)dl($f)dh($f)dc($f)dsc($f)dp($f)ic($f)isc($f)ip($f)$/ ) { - - if( - $3 == '*' && $4 == '*' && $5 == '*' && - $6 == '*' && $7 == '*' && $8 == '*' && - $9 == '*' && $10 == '*' - ) { - $key->[$he_vendor_id] = [ $flag_id, $tag, hex $1 ] if $1 ne '*'; - $key->[$he_device_id] = [ $flag_id, $tag, hex $2 ] if $2 ne '*'; - - push @hd, [ "$file_name($line)", [ $key ], $val ]; - } - } - elsif($spec =~ /^[c|d](\S{3})([0-9a-fA-FX]{4})/ ) { - $t1 = $1; - $t2 = $2; - - if($t1 =~ /[\@A-Z\[\\\]\^_]{3}/ && $t2 ne 'XXXX') { - $key->[$he_vendor_id] = [ $flag_id, $tag, eisa_id $t1 ]; - $key->[$he_device_id] = [ $flag_id, $tag, hex $t2 ]; - - push @hd, [ "$file_name($line)", [ $key ], $val ]; - } - } - else { - die "invalid line: $file_name($line)\n" - } - } -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# convert 3-letter eisa id to number -# - -sub eisa_id -{ - my ( $str, $id, $i, $j ); - - $str = shift; - $id = 0; - - die "internal oops" unless length($str) == 3; - for($i = 0; $i < 3; $i++) { - $id <<= 5; - $j = ord substr $str, $i, 1; - $j -= ord('A') - 1; - die "internal oops" unless $j >= 0 && $j <= 0x1f; - $id += $j; - } - - return $id; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# convert numerical eisa id to 3-letter string -# - -sub eisa_str -{ - my ( $id, $str ); - - $id = shift; - - die "internal oops: eisa id \"$id\"" unless $id >= 0 && $id <= 0x7fff; - - $str = chr((($id >> 10) & 0x1f) + ord('A') - 1); - $str .= chr((($id >> 5) & 0x1f) + ord('A') - 1); - $str .= chr(( $id & 0x1f) + ord('A') - 1); - - return $str; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# remove entries that have no effect -# - -sub remove_nops -{ - my ($hd, $id, $f, $i, $cf); - local $_; - - for $hd (@hd) { - if(!defined($hd->[1]) || !@{$hd->[1]} || !defined($hd->[2]) || !@{$hd->[2]}) { - undef $hd; - next; - } - for $id (@{$hd->[1]}, $hd->[2]) { - if(defined($id)) { - $cf = 0; - for $f (@$id) { - if(defined $f) { - $cf++; - if(@$f == 2 && $f->[0] == $flag_string && $f->[1] eq "") { - undef $f; - $cf--; - } - } - } - undef $id if !$cf; - } - } - if(!defined($hd->[1]) || !@{$hd->[1]} || !defined($hd->[2]) || !@{$hd->[2]}) { - print STDERR "$hd->[0] has no info, dropped\n"; - undef $hd; - next; - } - } - - @hd = grep { defined } @hd; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# remove duplicate entries -# - -sub remove_duplicates -{ - my ($hd, $hd0, $hd1, $len, $i, $j, $m, $v, $buf, $errors, $drop); - local $_; - - $len = @hd; - - for($j = 0; $j < $len; $j++) { - print STDERR ">> $j\r"; - $hd0 = \$hd[$j]; - for($i = $j + 1; $i < $len; $i++) { - $hd1 = \$hd[$i]; - $m = match_item $$hd0, $$hd1; - # print "$$hd0->[0] -- $$hd1->[0]: $m\n"; - if($m) { - $drop = cmp_item $$hd0, $$hd1; - $drop = !$drop || abs($drop) == 2 ? ", dropped" : undef; - undef $buf; - # print STDERR "j: $$hd0->[0], $$hd1->[0]\n"; - $v = join_skey $$hd0->[2], $$hd1->[2], \$buf, \$errors; - if($errors) { - print STDERR "$$hd1->[0] conflicts with $$hd0->[0]$drop:\n$buf\n"; - $$hd1 = undef if $drop; - } - else { - if($drop) { - print STDERR "$$hd1->[0] added to $$hd0->[0] and dropped\n"; - $$hd0->[2] = $v; -# $$hd1 = undef; - } - else { - print STDERR "$$hd1->[0] shadowed by $$hd0->[0]\n"; - $$hd0->[2] = $v; - } - } - } - } - } - - @hd = grep { defined } @hd; - - for $hd (@hd) { - if( - !defined($hd->[2]) || - !defined($hd->[2][$he_driver]) || - !(defined($hd->[2][$he_device_name]) || defined($hd->[2][$he_subdevice_name])) - ) { - undef $hd; - next; - } - } - - @hd = grep { defined } @hd; - -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# remove duplicate entries -# - -sub remove_duplicatesx -{ - my ($hd0, $hd1, $len, $i, $j, $m, $v, $buf, $errors, $drop); - local $_; - - $len = @hd; - - for($j = 0; $j < $len; $j++) { - print STDERR ">> $j\r"; - $hd0 = \$hd[$j]; - for($i = $j + 1; $i < $len; $i++) { - $hd1 = \$hd[$i]; - $m = match_item $$hd0, $$hd1; - # print "$$hd0->[0] -- $$hd1->[0]: $m\n"; - if($m) { - $drop = cmp_item $$hd0, $$hd1; - $drop = !$drop || abs($drop) == 2 ? ", dropped" : undef; - undef $buf; - $v = join_skey $$hd0->[2], $$hd1->[2], \$buf, \$errors; - if($errors) { - print STDERR "$$hd1->[0] conflicts with $$hd0->[0]$drop:\n$buf\n"; - $$hd1 = undef if $drop; - } - else { - if($drop) { - print STDERR "$$hd1->[0] added to $$hd0->[0] and dropped\n"; - $$hd0->[2] = $v; - $$hd1 = undef; - } - else { - print STDERR "$$hd1->[0] shadowed by $$hd0->[0]\n"; - } - } - } - } - } - - @hd = grep { defined } @hd; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# fix drive info -# - -sub fix_driver_info -{ - my ($hd, $hid, $drv, $i, @i, @info, @req, %req); - - for $hd (@hd) { - if( - !defined($hd->[2]) || - !defined($hd->[2][$he_driver]) - ) { - next; - } - $hid = $hd->[2][$he_driver]; - next unless $hid->[0] == $flag_string; - - undef @req; - - for $drv (@$hid[1 .. @$hid - 1]) { - @i = split /\x00/, $drv; - for $i (@i) { - next if $i =~ /^[MX]\t/; - $i =~ s/\|+$//; - next unless $i =~ /^x\t/; - @info = split /\|/, $i; - # remove leasding 'XF86_' from server name - $info[1] =~ s/^XF86_// if $info[1]; - # sort package, extension and option lists - push @req, split /,/, $info[3] if $info[3]; - # $info[3] = join ',', sort split /,/, $info[3] if $info[3]; - $info[3] = undef if $info[3]; - $info[4] = join ',', sort split /,/, $info[4] if $info[4]; - $info[5] = join ',', sort split /,/, $info[5] if $info[5]; - $info[6] = join ',', sort { $a <=> $b } split /,/, $info[6] if $info[6]; - $i = join '|', @info; - } - $drv = join "\x00", @i; - # print ">$drv<\n" - } - - if(@req) { - $hid = $hd->[2][$he_requires]; - if($hid) { - if($hid->[0] != $flag_string) { - die "oops, invalid data" - } - push @req, split /\|/, $hid->[1]; - $hid->[1] = join '|', @req; - } - else { - $hd->[2][$he_requires] = [ $flag_string, join('|', @req) ]; - } - } - } - - for $hd (@hd) { - if( - !defined($hd->[2]) || - !defined($hd->[2][$he_requires]) - ) { - next; - } - $hid = $hd->[2][$he_requires]; - next unless $hid->[0] == $flag_string; - - undef @req; - undef %req; - - @req = split /\|/, $hid->[1]; - @req{@req} = @req; - - $hid->[1] = join '|', sort keys %req; - } -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# hd: [ "source", [ skey, skey, ... ], [ val ] ] -# skey/val: [ ... , id, ..., id, ... ] -# id: [ $flag_id, $tag, $value, $range, $mask ] -# id: [ $flag_string, "str", "str", ... ] - -sub cmp_id -{ - my ($id0, $id1, $len0, $len1, $len, $i, $k); - - ($id0, $id1) = @_; - - return 0 if !defined($id0) && !defined($id1); - return -1 if !defined($id0); - return 1 if !defined($id1); - - if($id0->[0] != $id1->[0]) { - return $id0->[0] <=> $id1->[0]; - } - - $len0 = @$id0; - $len1 = @$id1; - $len = $len0 < $len1 ? $len0 : $len1; - - if($id0->[0] == $flag_string) { - for($i = 1; $i < $len; $i++) { - $k = $id0->[$i] cmp $id1->[$i]; - return $k if $k; - } - return $len0 <=> $len1; - } - - if($id0->[0] == $flag_id) { - $k = $id0->[1] <=> $id1->[1]; - return $k if $k; - $k = $id0->[2] <=> $id1->[2]; - return $k if $k; - $k = $len0 <=> $len1; - return $k if $k || $len <= 3; - # print "-\n"; - # $dump->dumpValue( $id0 ); - # $dump->dumpValue( $id1 ); - # die "internal oops: strange id" if $len < 4; - $i = $len - 1; - return -1 if !defined($id0->[$i]); - return 1 if !defined($id1->[$i]); - return $id0->[$i] <=> $id1->[$i]; - } - - die "internal oops: can't compare that!"; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -sub cmp_skey -{ - my ($skey0, $skey1, $len0, $len1, $len, $i, $k); - - ($skey0, $skey1) = @_; - - return 0 if !defined($skey0) && !defined($skey1); - return -1 if !defined($skey0); - return 1 if !defined($skey1); - - $len0 = @$skey0; - $len1 = @$skey1; - $len = $len0 < $len1 ? $len0 : $len1; - - # $dump->dumpValue( $skey0 ); - # $dump->dumpValue( $skey1 ); - - for($i = 0; $i < $len; $i++) { - next unless defined($skey0->[$i]) || defined($skey1->[$i]); - - # note: this looks reversed, but is intentional! - return 1 if !defined($skey0->[$i]); - return -1 if !defined($skey1->[$i]); - - $k = cmp_id $skey0->[$i], $skey1->[$i]; - - return $k if $k; - } - - return $len0 <=> $len1; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# 0: equal -# +-1: differing keys -# +-2: differing values -# -sub cmp_item -{ - my ($item0, $item1, $len0, $len1, $len, $i, $k); - - ($item0, $item1) = @_; - - $cmp_item_cnt++; - - return 0 if !defined($item0) && !defined($item1); - return -1 if !defined($item0); - return 1 if !defined($item1); - - $len0 = @{$item0->[1]}; - $len1 = @{$item1->[1]}; - $len = $len0 < $len1 ? $len0 : $len1; - -# $dump->dumpValue( $item0 ); - - for($i = 0; $i < $len; $i++) { - return -1 if !defined($item0->[1][$i]); - return 1 if !defined($item1->[1][$i]); - $k = cmp_skey $item0->[1][$i], $item1->[1][$i]; - # print " skey: $k\n"; - return $k if $k; - } - $k = $len0 <=> $len1; - return $k if $k; - - return 0 if !defined($item0->[2]) && !defined($item1->[2]); - return -2 if !defined($item0->[2]); - return 2 if !defined($item1->[2]); - - $k = cmp_skey $item0->[2], $item1->[2]; - # print " val: $k\n"; - return 2 * $k; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# check if id1 is part of id0 -# -# return: -# 1: yes -# 0: no -# undef: don't know -# -# hd: [ "source", [ skey, skey, ... ], [ val ] ] -# skey/val: [ ... , id, ..., id, ... ] -# id: [ $flag_id, $tag, $value, $range, $mask ] -# id: [ $flag_string, "str", "str", ... ] - -sub match_id -{ - my ($id0, $id1, $len0, $len1, $len, $i, $k); - - ($id0, $id1) = @_; - - return 0 if !defined($id0) || !defined($id1); - - return 0 if $id0->[0] != $id1->[0]; - - $len0 = @$id0; - $len1 = @$id1; - $len = $len0 < $len1 ? $len0 : $len1; - - if($id0->[0] == $flag_string) { - for($i = 1; $i < $len; $i++) { - return 0 if $id0->[$i] cmp $id1->[$i]; - } - return $len0 != $len1 ? 0 : 1; - } - - if($id0->[0] == $flag_id) { - return 0 if $id0->[1] != $id1->[1]; - if($len1 == 3) { - if($len0 == 3) { - return $id0->[2] != $id1->[2] ? 0 : 1; - } - elsif($len0 == 4) { - return $id1->[2] >= $id0->[2] && $id1->[2] < $id0->[2] + $id0->[3] ? 1 : 0; - } - elsif($len0 == 5) { - return ($id1->[2] & ~$id0->[4]) == $id0->[2] ? 1 : 0; - } - else { - die "invalid id"; - } - } - elsif($len1 == 4) { - return undef; - } - elsif($len1 == 5) { - return undef; - } - else { - die "invalid id"; - } - } - - die "internal oops: can't match that!"; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# skey1 part of skey0? -# -sub match_skey -{ - my ($skey0, $skey1, $len0, $len1, $len, $i, $k); - - ($skey0, $skey1) = @_; - - return 0 if !defined($skey0) || !defined($skey1); - - $len0 = @$skey0; - $len1 = @$skey1; - - $len = $len0 > $len1 ? $len0 : $len1; - - # $dump->dumpValue( $skey0 ); - # $dump->dumpValue( $skey1 ); - - for($i = 0; $i < $len; $i++) { - next unless defined($skey1->[$i]); - - return 0 if !defined($skey0->[$i]) && defined($skey1->[$i]); - - $k = match_id $skey0->[$i], $skey1->[$i]; - - return $k if !$k; - } - - return 1; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# item1 part of item0? -# -sub match_item -{ - my ($item0, $item1, $len0, $len1, $i, $j, $k, $m); - - ($item0, $item1) = @_; - - $match_item_cnt++; - - return 0 if !defined($item0) || !defined($item1); - - $len0 = @{$item0->[1]}; - $len1 = @{$item1->[1]}; - - for($j = 0; $j < $len1; $j++) { - for($i = 0; $i < $len0; $i++) { - $k = match_skey $item0->[1][$i], $item1->[1][$j]; - $m = $k if defined $k; - return $k if $k; - } - } - - return $m -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# add skey1 to skey0 -# -sub join_skey -{ - my ($skey0, $skey1, $len, $i, $k, $n, $buf, $err); - - ($skey0, $skey1, $buf, $errors) = @_; - - $$errors = 0; - - return undef if !defined($skey0) && !defined($skey1); - return [ @$skey0 ] if !defined($skey1); - return [ @$skey1 ] if !defined($skey0); - - $n = [ @$skey0 ]; - - $len = @$skey1; - - for($i = 0; $i < $len; $i++) { - next unless defined $skey1->[$i]; - - $n->[$i] = $skey1->[$i]; - - next unless defined $skey0->[$i]; - - $k = cmp_id $skey0->[$i], $skey1->[$i]; - - if($k) { - if(defined $buf) { - if($i != $he_driver) { - $$buf .= ent_name_pr(" 0:", $ent_names[$i]); - $$buf .= id_dump($i, $skey0->[$i]) . "\n"; - $$buf .= ent_name_pr(" 1:", $ent_names[$i]); - $$buf .= id_dump($i, $skey1->[$i]) . "\n"; - } - else { - $$buf .= drv_dump(" 0:", $skey0->[$i]); - $$buf =~ s/\n&/\n 0:/; - $$buf .= drv_dump(" 1:", $skey1->[$i]); - $$buf =~ s/\n&/\n 1:/; - } - } - $$errors++ if defined $errors; - } - } - - return $n; -} - - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# split key fields -# -sub split_item -{ - my ($item, @items, $tmp); - local $_; - - $item = shift; - - return $item if !defined($item) || !defined($item->[1]); - - for (@{$item->[1]}) { - $tmp = [ @$item ]; - $tmp->[1] = [ $_ ]; - push @items, $tmp; - } - - return @items; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -sub get_xml_data -{ - my ($xml, $i, $j); - - $xml = shift; - - if($xml->[0] ne 'hwdata') { - die "invalid XML root element (expected 'hwdata')\n" - } - - for($i = 1; $i < @{$xml->[1]}; $i += 2) { - if($xml->[1][$i] eq 'item') { - push @hd, parse_xml_item($xml->[1][$i + 1]); - } - } -} - - -sub parse_xml_item -{ - my (@xml, %attr, $i, $item); - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - for($i = 0; $i < @xml; $i += 2) { - if($xml[$i] eq 'key') { - push @{$item->[1]}, parse_xml_key($xml[$i + 1]); - } - else { - $item->[2] = parse_xml_key($_[0]); - } - } - - return $item; -} - - -sub parse_xml_key -{ - my (@xml, %attr, $i, @key, $val, $id, $is_id, $keyid, $keyid2, $tmp); - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - for($i = 0; $i < @xml; $i += 2) { - next if $xml[$i] eq '0' || $xml[$i] eq 'key'; - - $keyid = $xml_values{$xml[$i]}; - $is_id = $keyid < $he_nomask && $ent_names[$keyid] =~ /\.(id|name)$/ ? 1 : 0; - - if(!defined($keyid)) { - die "invalid key element \"$xml[$i]\"\n"; - } - - if($keyid == $he_driver) { - $id = parse_xml_driver($xml[$i + 1]); - if(!defined($key[$keyid])) { - $key[$keyid] = $id; - } - else { - push @{$key[$keyid]}, $id->[1]; - } - } - elsif($is_id) { - $id = parse_xml_id($xml[$i + 1]); - if($id->[0] == $flag_id) { - $tmp = $ent_names[$keyid]; - $tmp =~ s/\.name$/.id/; - $keyid2 = $ent_values{$tmp}; - if(!defined($keyid2)) { - die "oops, no .id for $xml[$i]?"; - } - } - else { - $tmp = $ent_names[$keyid]; - $tmp =~ s/\.id$/.name/; - $keyid2 = $ent_values{$tmp}; - if(!defined($keyid2)) { - die "oops, no .name for $xml[$i]?"; - } - } - $key[$keyid2] = $id; - } - else { - $val = parse_xml_cdata($xml[$i + 1]); - if(defined($key[$keyid]) && $keyid == $he_requires) { - $key[$keyid][1] .= "|$val"; - } - else { - $key[$keyid] = [ $flag_string, $val ]; - } - } - } - - return [ @key ]; -} - - -sub parse_xml_id -{ - my (@xml, %attr, $i, $id, $val); - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - for($i = 0; $i < @xml; $i += 2) { - next if $xml[$i] eq '0'; - - if($xml[$i] eq 'id') { - $id = parse_xml_id_id($xml[$i + 1]); - } - elsif($xml[$i] eq 'idrange') { - $id = parse_xml_id_range($xml[$i + 1]); - } - elsif($xml[$i] eq 'idmask') { - $id = parse_xml_id_mask($xml[$i + 1]); - } - elsif($xml[$i] eq 'name') { - $val = parse_xml_cdata($xml[$i + 1]); - $id = [ $flag_string, $val ]; - } - else { - die "invalid id element \"$xml[$i]\"\n"; - } - } - - return $id; -} - - -sub parse_xml_id_id -{ - my (@xml, %attr, $i, $tag, $value); - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - $tag = $tag_values{$attr{type}}; - - if(!defined($tag)) { - die "missing/unsupported id attribute \"$attr{type}\"\n"; - } - - for($i = 0; $i < @xml; $i += 2) { - if($xml[$i] eq '0') { - $value = idstr2value $tag, $xml[$i + 1]; - } - else { - die "cdata expected, got \"$xml[$i]\"\n"; - } - } - - return [ $flag_id, $tag, $value ]; -} - - -sub parse_xml_id_range -{ - my (@xml, %attr, $i, $tag, $value, $range); - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - $tag = $tag_values{$attr{type}}; - - if(!defined($tag)) { - die "missing/unsupported id attribute \"$attr{type}\"\n"; - } - - for($i = 0; $i < @xml; $i += 2) { - next if $xml[$i] eq '0'; - if($xml[$i] eq 'first') { - $value = idstr2value $tag, parse_xml_cdata($xml[$i + 1]); - } - elsif($xml[$i] eq 'last') { - $range = idstr2value $tag, parse_xml_cdata($xml[$i + 1]); - } - else { - die "invalid idrange element \"$xml[$i]\"\n"; - } - } - - if(!defined($value) || !defined($range)) { - die "invalid idrange\n"; - } - - return [ $flag_id, $tag, $value, $range - $value + 1 ]; -} - - -sub parse_xml_id_mask -{ - my (@xml, %attr, $i, $tag, $value, $mask); - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - $tag = $tag_values{$attr{type}}; - - if(!defined($tag)) { - die "missing/unsupported id attribute \"$attr{type}\"\n"; - } - - for($i = 0; $i < @xml; $i += 2) { - next if $xml[$i] eq '0'; - if($xml[$i] eq 'value') { - $value = idstr2value $tag, parse_xml_cdata($xml[$i + 1]); - } - elsif($xml[$i] eq 'mask') { - $mask = idstr2value $tag, parse_xml_cdata($xml[$i + 1]); - } - else { - die "invalid idmask element \"$xml[$i]\"\n"; - } - } - - if(!defined($value) || !defined($mask)) { - die "invalid idmask\n"; - } - - return [ $flag_id, $tag, $value, undef, $mask ]; -} - - -sub parse_xml_driver -{ - my (@xml, %attr, $i, $val); - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - for($i = 0; $i < @xml; $i += 2) { - next if $xml[$i] eq '0'; - - if($xml[$i] eq 'any') { - $val = "a\t" . parse_xml_cdata($xml[$i + 1]); - } - elsif($xml[$i] eq 'display') { - $val = parse_xml_driver_display($xml[$i + 1]); - } - elsif($xml[$i] eq 'module') { - $val = parse_xml_driver_module($xml[$i + 1]); - } - elsif($xml[$i] eq 'mouse') { - $val = parse_xml_driver_mouse($xml[$i + 1]); - } - elsif($xml[$i] eq 'xfree') { - $val = parse_xml_driver_xfree($xml[$i + 1]); - } - else { - die "invalid driver element \"$xml[$i]\"\n"; - } - } - - return [ $flag_string, $val ]; -} - - -sub parse_xml_driver_display -{ - my (@xml, %attr, $i, @val); - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - for($i = 0; $i < @xml; $i += 2) { - next if $xml[$i] eq '0'; - - if($xml[$i] eq 'resolution') { - $val[0] = join('x', parse_xml_pair($xml[$i + 1], 'width', 'height')); - } - elsif($xml[$i] eq 'vsync') { - $val[1] = join('-', parse_xml_pair($xml[$i + 1], 'min', 'max')); - } - elsif($xml[$i] eq 'hsync') { - $val[2] = join('-', parse_xml_pair($xml[$i + 1], 'min', 'max')); - } - elsif($xml[$i] eq 'bandwidth') { - $val[3] = parse_xml_cdata($xml[$i + 1]); - } - else { - die "invalid display element \"$xml[$i]\"\n"; - } - } - - if(!@val) { - die "invalid display info\n"; - } - - return "d\t" . join('|', @val); -} - - -sub parse_xml_driver_module -{ - my (@xml, %attr, $i, $val, $type, @conf, @mods); - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - for($i = 0; $i < @xml; $i += 2) { - next if $xml[$i] eq '0'; - - $val = parse_xml_cdata($xml[$i + 1]); - - if($xml[$i] eq 'modprobe') { - if($type && $type ne 'm') { - die "invalid module info: \"$xml[$i]\"\n"; - } - $type = 'm'; - push @mods, $val; - } - elsif($xml[$i] eq 'insmod') { - if($type && $type ne 'i') { - die "invalid module info: \"$xml[$i]\"\n"; - } - $type = 'i'; - push @mods, $val; - } - elsif($xml[$i] eq 'modconf') { - if($type && $type ne 'm') { - die "invalid module info: \"$xml[$i]\"\n"; - } - push @conf, "\x00M\t$val"; - } - else { - die "invalid module element \"$xml[$i]\"\n"; - } - } - - if(!$type && !@mods) { - die "invalid module info\n"; - } - - $val = "$type\t" . join('|', @mods); - - if(@conf) { - $val .= join('', @conf); - } - - return $val; -} - - -sub parse_xml_driver_mouse -{ - my (@xml, %attr, $i, $val, @val); - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - for($i = 0; $i < @xml; $i += 2) { - next if $xml[$i] eq '0'; - - $val = parse_xml_cdata($xml[$i + 1]); - - if($xml[$i] eq 'xf86') { - $val[0] = $val; - } - elsif($xml[$i] eq 'gpm') { - $val[1] = $val; - } - elsif($xml[$i] eq 'buttons') { - $val[2] = $val; - } - elsif($xml[$i] eq 'wheels') { - $val[3] = $val; - } - else { - die "invalid mouse element \"$xml[$i]\"\n"; - } - } - - if(!@val) { - die "invalid mouse info\n"; - } - - return "p\t" . join('|', @val); -} - - -sub parse_xml_driver_xfree -{ - my (@xml, %attr, $i, $val, @val, @conf); - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - for($i = 0; $i < @xml; $i += 2) { - next if $xml[$i] eq '0'; - - if($xml[$i] eq 'has3d') { - $val[2] = '3d'; - } - else { - $val = parse_xml_cdata($xml[$i + 1]); - - if($xml[$i] eq 'version') { - $val[0] = $val; - } - elsif($xml[$i] eq 'server') { - $val[1] = $val; - } - elsif($xml[$i] eq 'extension') { - $val[4] .= "," if defined $val[4]; - $val[4] .= $val; - } - elsif($xml[$i] eq 'option') { - $val[5] .= "," if defined $val[5]; - $val[5] .= $val; - } - elsif($xml[$i] eq 'bpp') { - $val[6] .= "," if defined $val[6]; - $val[6] .= $val; - } - elsif($xml[$i] eq 'dacspeed') { - $val[7] = $val; - } - elsif($xml[$i] eq 'script') { - $val[8] = $val; - } - elsif($xml[$i] eq 'xf86conf') { - push @conf, "\x00X\t$val"; - } - else { - die "invalid xfree element \"$xml[$i]\"\n"; - } - } - } - - if(!@val) { - die "invalid xfree info\n"; - } - - $val = "x\t" . join('|', @val); - - if(@conf) { - $val .= join('', @conf); - } - - return $val; -} - - -sub parse_xml_pair -{ - my (@xml, %attr, $i, $val0, $val1, $elem0, $elem1); - - $elem0 = $_[1]; - $elem1 = $_[2]; - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - for($i = 0; $i < @xml; $i += 2) { - next if $xml[$i] eq '0'; - if($xml[$i] eq $elem0) { - $val0 = parse_xml_cdata($xml[$i + 1]); - } - elsif($xml[$i] eq $elem1) { - $val1 = parse_xml_cdata($xml[$i + 1]); - } - else { - die "invalid element \"$xml[$i]\"\n"; - } - } - - if(!defined($val0) || !defined($val1)) { - die "invalid element\n"; - } - - return ($val0, $val1); -} - - -sub parse_xml_cdata -{ - my (@xml, %attr, $i); - - @xml = @{$_[0]}; - %attr = %{shift @xml}; - - for($i = 0; $i < @xml; $i += 2) { - if($xml[$i] eq '0') { - return $xml[$i + 1] - } - } -} - - -sub idstr2value -{ - my ($tag, $value); - - ($tag, $value) = @_; - - if($tag == $tag_eisa && length($value) == 3 && $value !~ /^[0-9]/) { - $value = eisa_id $value; - } - else { - $value = num $value; - } - - return $value; -} - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -sub ent_name_pr -{ - my ($str, $len); - - $str = $_[0] . $_[1]; - - $len = length $str; - - $str .= "\t"; - $len = ($len & ~7) + 8; - $str .= "\t" x ((24 - $len)/8) if $len < 24; - - return $str; -} - - -sub id_dump -{ - my ($id, $ent, $str, $tag, $format); - - ($ent, $id) = @_; - - if($id->[0] == $flag_id) { - $tag = $id->[1]; - if($tag == $tag_eisa && ($ent == $he_vendor_id || $ent == $he_subvendor_id)) { - $str = eisa_str $id->[2]; - } - else { - $str .= $tag_name[$tag]; - $str .= " " if $tag; - $format = "0x%04x"; - $format = "0x%02x" if $ent == $he_bus_id || $ent == $he_subclass_id || $ent == $he_progif_id; - $format = "0x%03x" if $ent == $he_baseclass_id; - $str .= sprintf $format, $id->[2]; - } - if(defined $id->[3]) { - $str .= sprintf "+0x%04x", $id->[3]; - } - elsif(defined $id->[4]) { - $str .= sprintf "&0x%04x", $id->[4]; - } - } - elsif($id->[0] == $flag_string) { - if(defined($id->[2])) { - die "oops: strage string data\n"; - } - $str = $id->[1]; - } - else { - die "oops: unknown id flag\n" - } - - return $str; -} - - -sub drv_dump -{ - my ($id, $str, $i, $pre, $type, $drv, $buf); - - ($pre, $id) = @_; - - die "oops: invalid driver data\n" if $id->[0] != $flag_string; - - for($i = 1; $i < @{$id}; $i++) { - for $drv (split /\x00/, $id->[$i]) { - $type = substr $drv, 0, 2; - - if($type eq "x\t") { - $buf .= ent_name_pr($pre, $ent_names[$he_driver_xfree]); - $buf .= substr($drv, 2) . "\n"; - } - elsif($type eq "X\t") { - $buf .= ent_name_pr($pre, $ent_names[$he_driver_xfree_config]); - $buf .= substr($drv, 2) . "\n"; - } - elsif($type eq "i\t") { - $buf .= ent_name_pr($pre, $ent_names[$he_driver_module_insmod]); - $buf .= substr($drv, 2) . "\n"; - } - elsif($type eq "m\t") { - $buf .= ent_name_pr($pre, $ent_names[$he_driver_module_modprobe]); - $buf .= substr($drv, 2) . "\n"; - } - elsif($type eq "M\t") { - $buf .= ent_name_pr($pre, $ent_names[$he_driver_module_config]); - $buf .= substr($drv, 2) . "\n"; - } - elsif($type eq "p\t") { - $buf .= ent_name_pr($pre, $ent_names[$he_driver_mouse]); - $buf .= substr($drv, 2) . "\n"; - } - elsif($type eq "d\t") { - $buf .= ent_name_pr($pre, $ent_names[$he_driver_display]); - $buf .= substr($drv, 2) . "\n"; - } - elsif($type eq "a\t") { - $buf .= ent_name_pr($pre, $ent_names[$he_driver_any]); - $buf .= substr($drv, 2) . "\n"; - } - else { - die "oops: unhandled driver info type: $drv\n"; - } - - $pre = "&" if $pre ne "+"; - } - } - - return $buf; -} - - -sub ent_dump -{ - my ($pre, $id, $ent, $buf); - - ($buf, $pre, $id) = @_; - - $pre = defined($pre) ? "|" : " " if $pre ne "+"; - for($ent = 0; $ent < @{$id}; $ent++) { - if(defined $id->[$ent]) { - if($ent != $he_driver) { - $$buf .= ent_name_pr($pre, $ent_names[$ent]); - $$buf .= id_dump($ent, $id->[$ent]); - $$buf .= "\n"; - } - else { - $$buf .= drv_dump($pre, $id->[$ent]); - } - $pre = "&" if $pre ne "+"; - } - } - - return $pre; -} - - -sub dump2ids -{ - my ($item, $id, $ent, $pre, $buf); - - # $dump->dumpValue( \@hd ); - - open F, ">hd.ids"; - - for $item (@hd) { - undef $buf; - undef $pre; - print F "# $item->[0]\n" if $opt_with_source; - for $id (@{$item->[1]}) { - $pre = ent_dump \$buf, $pre, $id; - } - $pre = "+"; - ent_dump \$buf, $pre, $item->[2]; - $buf .= "\n"; - - print F $buf; - } - - close F; -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -sub dump2xml -{ - my ($item, $dtd); - - if($opt_internal_dtd) { - $dtd = hd_dtd_internal; - } - else { - $dtd = "\n"; - } - - $xml_file = new IO::File(">hd.xml"); - $xml = new XML::Writer(OUTPUT => $xml_file, DATA_MODE => 1, DATA_INDENT => 2); - - $xml->xmlDecl("utf-8"); - - print $xml_file "\n$dtd"; - - $xml->startTag("hwdata"); - - print $xml_file "\n"; - - for $item (@hd) { - dump_xml_item $item; - } - - $xml->endTag("hwdata"); - $xml->end(); - - if(!$opt_internal_dtd) { - print STDERR "writing \"hd.dtd\"\n"; - open DTD, ">hd.dtd"; - print DTD hd_dtd; - close DTD; - } -} - - -sub dump_xml_id -{ - my ($ent, $id, $i, $tag, $str, $format, $range, $mask); - - ($ent, $id) = @_; - - $i = $xml_names[$ent]; - - die "oops: entry $ent not allowed here\n" unless $i; - - if($ent == $he_requires) { - if($id->[0] == $flag_string) { - die "oops: strange string data\n" if defined $id->[2]; - for $str (split /\|/, $id->[1]) { - $xml->dataElement("requires", $str); - } - } - else { - die "oops: requires _id_???\n" - } - } - else { - $xml->startTag($i); - - if($ent == $he_serial) { - if($id->[0] == $flag_string) { - die "oops: strange string data\n" if defined $id->[2]; - $xml->characters($id->[1]); - } - else { - die "oops: serial _id_???\n" - } - } - else { - if($id->[0] == $flag_id) { - $tag = $id->[1]; - if($tag == $tag_eisa && ($ent == $he_vendor_id || $ent == $he_subvendor_id)) { - $str = eisa_str $id->[2]; - } - else { - $format = "0x%04x"; - $format = "0x%02x" if $ent == $he_bus_id || $ent == $he_subclass_id || $ent == $he_progif_id; - $format = "0x%03x" if $ent == $he_baseclass_id; - $str = sprintf $format, $id->[2]; - } - if(defined $id->[3]) { - if($tag == $tag_eisa && ($ent == $he_vendor_id || $ent == $he_subvendor_id)) { - $range = eisa_str $id->[2] + $id->[3] - 1; - } - else { - $range = sprintf "0x%04x", $id->[2] + $id->[3] - 1; - } - } - elsif(defined $id->[4]) { - $mask = sprintf "0x%04x", $id->[4]; - } - $tag = $tag_name[$tag]; - - if(defined $range) { - if($tag) { - $xml->startTag("idrange", "type" => $tag); - } - else { - $xml->startTag("idrange"); - } - $xml->dataElement("first", $str); - $xml->dataElement("last", $range); - $xml->endTag(); - } - elsif(defined $mask) { - if($tag) { - $xml->startTag("idmask", "type" => $tag); - } - else { - $xml->startTag("idmask"); - } - $xml->dataElement("value", $str); - $xml->dataElement("mask", $mask); - $xml->endTag(); - } - else { - if($tag) { - $xml->dataElement("id", $str, "type" => $tag); - } - else { - $xml->dataElement("id", $str); - } - } - } - elsif($id->[0] == $flag_string) { - die "oops: strage string data\n" if defined $id->[2]; - $xml->dataElement("name", $id->[1]); - } - else { - die "oops: unknown id flag\n" - } - } - - $xml->endTag(); - } -} - - -sub dump_xml_drv -{ - my ($id, $str, $i, $j, $k, $type, $drv, $info, @info, $current); - - $id = shift; - - die "oops: invalid driver data\n" if $id->[0] != $flag_string; - - for($i = 1; $i < @{$id}; $i++) { - - $xml->startTag('driver'); - - undef $current; - - for $drv (split /\x00/, $id->[$i]) { - $type = substr $drv, 0, 2; - $info = substr $drv, 2; - @info = split /\|/, $info; - - if($type eq "i\t") { - $xml->endTag() if $current; $current = $type; - $xml->startTag('module'); - for $j (@info) { - $xml->dataElement('insmod', $j); - } - } - elsif($type eq "m\t") { - $xml->endTag() if $current; $current = $type; - $xml->startTag('module'); - for $j (@info) { - $xml->dataElement('modprobe', $j); - } - } - elsif($type eq "M\t") { - die "oops: incorrect driver info: $drv\n" unless $current eq "m\t"; - $xml->dataElement('modconf', $info); - } - elsif($type eq "a\t") { - $xml->endTag() if $current; $current = undef;; - $xml->dataElement('any', $info); - } - elsif($type eq "d\t") { - $xml->endTag() if $current; $current = undef; - $xml->startTag('display'); - if($info[0] =~ /^(\d+)x(\d+)$/) { - ($j, $k) = ($1, $2); - $xml->startTag('resolution'); - $xml->dataElement('width', $j); - $xml->dataElement('height', $k); - $xml->endTag('resolution'); - } - if($info[1] =~ /^(\d+)-(\d+)$/) { - ($j, $k) = ($1, $2); - $xml->startTag('vsync'); - $xml->dataElement('min', $j); - $xml->dataElement('max', $k); - $xml->endTag('vsync'); - } - if($info[2] =~ /^(\d+)-(\d+)$/) { - ($j, $k) = ($1, $2); - $xml->startTag('hsync'); - $xml->dataElement('min', $j); - $xml->dataElement('max', $k); - $xml->endTag('hsync'); - } - if($info[3] =~ /^\d+$/) { - $xml->dataElement('bandwidth', $info[3]); - } - $xml->endTag('display'); - } - elsif($type eq "x\t") { - $xml->endTag() if $current; $current = $type; - $xml->startTag('xfree'); - if(defined $info[0]) { - $xml->dataElement('version', $info[0]); - } - if($info[1]) { - $xml->dataElement('server', $info[1]); - } - if($info[2]) { - $xml->emptyTag('has3d'); - } -# if($info[3]) { -# for $j (split /,/, $info[3]) { -# $xml->dataElement('package', $j); -# } -# } - if($info[4]) { - for $j (split /,/, $info[4]) { - $xml->dataElement('extension', $j); - } - } - if($info[5]) { - for $j (split /,/, $info[5]) { - $xml->dataElement('option', $j); - } - } - if($info[6]) { - for $j (split /,/, $info[6]) { - $xml->dataElement('bpp', $j); - } - } - if($info[7] =~ /^\d+$/) { - $xml->dataElement('dacspeed', $info[7]); - } - if($info[8]) { - $xml->dataElement('script', $info[8]); - } - } - elsif($type eq "X\t") { - die "oops: incorrect driver info: $drv\n" unless $current eq "x\t"; - $xml->dataElement('xf86conf', $info); - } - elsif($type eq "p\t") { - $xml->endTag() if $current; $current = undef; - $xml->startTag('mouse'); - if($info[0]) { - $xml->dataElement('xf86', $info[0]); - } - if($info[1]) { - $xml->dataElement('gpm', $info[1]); - } - if($info[2] ne "") { - $xml->dataElement('buttons', $info[2]); - } - if($info[3] ne "") { - $xml->dataElement('wheels', $info[3]); - } - $xml->endTag('mouse'); - } - else { - $xml->endTag() if $current; $current = undef; - # die "oops: unhandled driver info type: $drv\n"; - } - } - - $xml->endTag() if $current; - - $xml->endTag('driver'); - - } -} - - -sub dump_xml_ent -{ - my ($id, $ent); - - $id = shift; - - for($ent = 0; $ent < @{$id}; $ent++) { - if(defined $id->[$ent]) { - if($ent != $he_driver) { - dump_xml_id $ent, $id->[$ent]; - } - else { - dump_xml_drv $id->[$ent]; - } - } - } - -} - - -sub dump_xml_item -{ - my ($item, $id); - - $item = shift; - - $xml->startTag('item'); - - for $id (@{$item->[1]}) { - $xml->startTag('key'); - dump_xml_ent $id; - $xml->endTag('key'); - } - - dump_xml_ent $item->[2]; - - $xml->endTag('item'); - print $xml_file "\n"; -} - - -sub hd_dtd -{ - my $dtd = <<'EOF' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -EOF -; - - return $dtd; -} - - -sub hd_dtd_internal -{ - my $dtd = <<'EOF' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]> -EOF -; - - return $dtd; -} - diff --git a/src/hwinfo/src/ids/get_adaptec b/src/hwinfo/src/ids/get_adaptec deleted file mode 100755 index 3de5336225..0000000000 --- a/src/hwinfo/src/ids/get_adaptec +++ /dev/null @@ -1,142 +0,0 @@ -#! /usr/bin/perl - -# -# read gcc -E {aic79xx_pci.c,aic7xxx_pci.c} and extract module info -# - -sub add_range; -sub add_entry; - -while(<>) { - if(/^struct.*ah[cd]_pci_ident_table\s*\[\s*\]\s*=\s*$/ .. /^\}/) { - if(/^struct.*ah([cd])_pci_ident_table\s*\[\s*\]\s*=\s*$/) { - $mod = $1 eq "c" ? "aic7xxx" : "aic79xx"; - } - - if(/^\s+\{/ .. /^\s+\}/) { - if(/^\s+\}/) { - if($field && $field != 4) { - die "oops, unexpected line $.: $_"; - } - if($field) { - # print "id = $id, id_mask = $id_mask, mask = $mask, name = $name, func = $func\n"; - add_entry; - } - - undef $field; - undef $id; - undef $id_mask; - undef $mask; - undef $name; - undef $func; - } - - if($field == 0 && /^\s+0x([0-9A-Fa-f]{16})ull\s*,\s*$/) { - $id = $1; - $field++; - } - elsif($field == 0 && /^\s+0x([0-9A-Fa-f]{16})ull\s*\&\s*0x([0-9A-Fa-f]{16})ull\s*,\s*$/) { - $id = $1; - $id_mask = $2; - $field++; - } - elsif($field == 1 && /^\s+0x([0-9A-Fa-f]{16})ull\s*,\s*$/) { - $mask = $1; - $field++; - } - elsif($field == 2 && /^\s+((NULL|\(\(void\s*\*\)\s*0\))|(\".+\"))\s*,\s*$/) { - $name = $1; - $field++; - } - elsif($field == 3 && /^\s+((NULL|\(\(void\s*\*\)\s*0\))|([a-z].+))\s*,?\s*$/) { - $func = $1; - $field++; - } - } - - } -} - -sub add_range -{ - my ($r); - - $r = 0xffff - $_[0]; - - return unless $r; - - if($r != 15) { - printf " & 0x%04x", $r; - } - else { - printf " + 0x0010"; - } -} - - -sub add_entry -{ - local $_; - my ($v, $d, $sv, $sd); - my ($vm, $dm, $svm, $sdm); - my ($tag); - - $id_mask = "F" x 16 unless defined $id_mask; - - $d = hex(substr $id, 0, 4) & hex(substr $id_mask, 0, 4); - $v = hex(substr $id, 4, 4) & hex(substr $id_mask, 4, 4); - $sd = hex(substr $id, 8, 4) & hex(substr $id_mask, 8, 4); - $sv = hex(substr $id, 12, 4) & hex(substr $id_mask, 12, 4); - - $dm = hex(substr $mask, 0, 4); - $vm = hex(substr $mask, 4, 4); - $sdm = hex(substr $mask, 8, 4); - $svm = hex(substr $mask, 12, 4); - - $name =~ s/^"|"$//g; - - if($func !~ /^[a-z]/) { - print STDERR "entry \"$name\" dropped\n"; - return; - } - - print "\n# $name\n"; - - $tag = " "; - - if($vm) { - printf "${tag}vendor.id\t\tpci 0x%04x", $v; - add_range $vm; - print "\n"; - - $tag = "&"; - } - - if($dm) { - printf "${tag}device.id\t\tpci 0x%04x", $d; - add_range $dm; - print "\n"; - - $tag = "&"; - } - - if($svm) { - printf "${tag}subvendor.id\t\tpci 0x%04x", $sv; - add_range $svm; - print "\n"; - - $tag = "&"; - } - - if($sdm) { - printf "${tag}subdevice.id\t\tpci 0x%04x", $sd; - add_range $sdm; - print "\n"; - - $tag = "&"; - } - - printf "+driver.module.modprobe\t%s\n", $mod; - -} - diff --git a/src/hwinfo/src/ids/get_pcmcia b/src/hwinfo/src/ids/get_pcmcia deleted file mode 100755 index 27a09bda65..0000000000 --- a/src/hwinfo/src/ids/get_pcmcia +++ /dev/null @@ -1,62 +0,0 @@ -#! /usr/bin/perl - -# -# read /etc/pcmcia/config file -# - -while(<>) { - if(/^\s*card\s+"(.*)"\s*$/) { - push @cards, $card; - undef $card; - $card->{name} = $1; - next; - } - - if(/^\s*bind\s+"(\S+)"\s*$/) { - push @{$card->{modules}}, $1; - next; - } - - if(/^\s*bind\s+"(\S+)"\s*to\s*\d,\s*"(\S+)"\s*to\s*\d\s*$/) { - push @{$card->{modules}}, $1; - push @{$card->{modules}}, $2; - next; - } - - if(/^\s*manfid\s+(0x\S+),\s*(0x\S+)\s*$/) { - $card->{vendor} = sprintf("0x%04x", hex $1); - $card->{device} = sprintf("0x%04x", hex $2); - next; - } - -} - -for (@cards) { - next unless $_->{modules}; - next unless $_->{name} =~ /ethernet/i; - for $mods (@{$_->{modules}}) { - $eth{$mods} = 1; - } -} - - -for (@cards) { - next unless $_->{vendor}; - next unless $_->{modules}; - print "# $_->{name}\n"; - print " vendor.id\t\tpcmcia $_->{vendor}\n"; - print "&device.id\t\tpcmcia $_->{device}\n"; - if($_->{modules}) { - $eth = 1; - for $mods (@{$_->{modules}}) { - $eth = 0 unless $eth{$mods}; - print "+driver.module.modprobe\t$mods\n"; - } - if($eth) { - print "+baseclass.id\t\t0x002\n"; - print "+subclass.id\t\t0x00\n"; - } - } - print "\n"; -} - diff --git a/src/hwinfo/src/ids/hd_ids.c b/src/hwinfo/src/ids/hd_ids.c deleted file mode 100644 index 345d5d6a66..0000000000 --- a/src/hwinfo/src/ids/hd_ids.c +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include "hd.h" - -#ifndef LIBHD_TINY -#include "hd_ids.h" -#else -#include "hd_ids_tiny.h" -#endif diff --git a/src/hwinfo/src/ids/src/braille b/src/hwinfo/src/ids/src/braille deleted file mode 100644 index 451b784500..0000000000 --- a/src/hwinfo/src/ids/src/braille +++ /dev/null @@ -1,141 +0,0 @@ -# braille displays - - vendor.id special 0x5001 -+vendor.name Alva - - vendor.id special 0x5001 -&device.id special 0x0000 -+device.name abt320 -+driver.any abt320 - - vendor.id special 0x5001 -&device.id special 0x0001 -+device.name abt340 -+driver.any abt340 - - vendor.id special 0x5001 -&device.id special 0x0002 -+device.name abt34d -+driver.any abt34d - - vendor.id special 0x5001 -&device.id special 0x0003 -+device.name abt380 -+driver.any abt380 - - vendor.id special 0x5001 -&device.id special 0x0004 -+device.name abt38d -+driver.any abt38d - - vendor.id special 0x5001 -&device.id special 0x000b -+device.name del440 -+driver.any del440 - - vendor.id special 0x5001 -&device.id special 0x000d -+device.name del480 -+driver.any del480 - - vendor.id special 0x5001 -&device.id special 0x000e -+device.name sat540 -+driver.any sat540 - - vendor.id special 0x5002 -+vendor.name Papenmeier - - vendor.id special 0x5002 -&device.id special 0x0001 -+device.name 2dlite -+driver.any 2dlite - - vendor.id special 0x5002 -&device.id special 0x0002 -+device.name tiny -+driver.any tiny - - vendor.id special 0x5002 -&device.id special 0x0003 -+device.name 2d -+driver.any 2d - - vendor.id special 0x5002 -&device.id special 0x0040 -+device.name el40 -+driver.any el40 - - vendor.id special 0x5002 -&device.id special 0x0041 -+device.name el66 -+driver.any el66 - - vendor.id special 0x5002 -&device.id special 0x0042 -+device.name el80 -+driver.any el80 - - vendor.id special 0x5002 -&device.id special 0x0043 -+device.name el2d -+driver.any el2d - - vendor.id special 0x5002 -&device.id special 0x0044 -+device.name el40p -+driver.any el40p - - vendor.id special 0x5003 -+vendor.name Handy Tech - - vendor.id special 0x5003 -&device.id special 0x0005 -|vendor.id special 0x5003 -&device.id special 0x0009 -+device.name brlwave -+driver.any brlwave - - vendor.id special 0x5003 -&device.id special 0x0044 -+device.name vario40-ht -+driver.any vario40-ht - - vendor.id special 0x5003 -&device.id special 0x0074 -+device.name brlstar40 -+driver.any brlstar40 - - vendor.id special 0x5003 -&device.id special 0x0080 -+device.name ht20 -+driver.any ht20 - - vendor.id special 0x5003 -&device.id special 0x0084 -+device.name vario80-ht -+driver.any vario80-ht - - vendor.id special 0x5003 -&device.id special 0x0088 -+device.name ht80 -+driver.any ht80 - - vendor.id special 0x5003 -&device.id special 0x0089 -+device.name ht40 -+driver.any ht40 - - vendor.id special 0x5004 -+vendor.name Baum - - vendor.id special 0x5004 -&device.id special 0x0001 -+device.name Vario40 -+driver.any vario40 - - vendor.id special 0x5004 -&device.id special 0x0002 -+device.name Vario80 -+driver.any vario80 - diff --git a/src/hwinfo/src/ids/src/bus b/src/hwinfo/src/ids/src/bus deleted file mode 100644 index 06b63bc909..0000000000 --- a/src/hwinfo/src/ids/src/bus +++ /dev/null @@ -1,77 +0,0 @@ -# bus types - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# 0x00 - 0x7f are PCI types - - bus.id 0x00 -+bus.name None - - bus.id 0x01 -+bus.name ISA - - bus.id 0x02 -+bus.name EISA - - bus.id 0x03 -+bus.name MC - - bus.id 0x04 -+bus.name PCI - - bus.id 0x05 -+bus.name PCMCIA - - bus.id 0x06 -+bus.name NuBUS - - bus.id 0x07 -+bus.name CardBus - - bus.id 0x08 -+bus.name Unknown - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# >0x80 are our own bus/interface types - - bus.id 0x80 -+bus.name PS/2 - - bus.id 0x81 -+bus.name Serial - - bus.id 0x82 -+bus.name Parallel - - bus.id 0x83 -+bus.name Floppy - - bus.id 0x84 -+bus.name SCSI - - bus.id 0x85 -+bus.name IDE - - bus.id 0x86 -+bus.name USB - - bus.id 0x87 -+bus.name ADB - - bus.id 0x88 -+bus.name RAID - - bus.id 0x89 -+bus.name SBUS - - bus.id 0x8a -+bus.name I2O - - bus.id 0x8b -+bus.name Virtual IO - - bus.id 0x8c -+bus.name CCW - - bus.id 0x8d -+bus.name IUCV diff --git a/src/hwinfo/src/ids/src/camera b/src/hwinfo/src/ids/src/camera deleted file mode 100644 index 17b48e5aaa..0000000000 --- a/src/hwinfo/src/ids/src/camera +++ /dev/null @@ -1,846 +0,0 @@ -# digital cameras - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# digital (usb) still cams - - vendor.id usb 0x03f0 -+vendor.name HP - - vendor.id usb 0x03f0 -&device.id usb 0x4102 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PhotoSmart 618 - - vendor.id usb 0x03f0 -&device.id usb 0x4202 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PhotoSmart 812 - - vendor.id usb 0x03f0 -&device.id usb 0x4302 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PhotoSmart 850 - - vendor.id usb 0x03f0 -&device.id usb 0x4402 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PhotoSmart 935 - - vendor.id usb 0x03f0 -&device.id usb 0x6302 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PhotoSmart 318 - - vendor.id usb 0x03f0 -&device.id usb 0x6402 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PhotoSmart 715 - - vendor.id usb 0x03f0 -&device.id usb 0x6502 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PhotoSmart 120 - - vendor.id usb 0x03f0 -&device.id usb 0x6602 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PhotoSmart 320 - - vendor.id usb 0x03f0 -&device.id usb 0x6702 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PhotoSmart 720 - - vendor.id usb 0x03f0 -&device.id usb 0x6802 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PhotoSmart 620 - - vendor.id usb 0x03f0 -&device.id usb 0x6a02 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PhotoSmart 735 - - vendor.id usb 0x040a -+vendor.name Kodak - - vendor.id usb 0x040a -&device.id usb 0x0100 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name DC220 - - vendor.id usb 0x040a -&device.id usb 0x0110 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name DC260 - - vendor.id usb 0x040a -&device.id usb 0x0111 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name DC265 - - vendor.id usb 0x040a -&device.id usb 0x0112 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name DC290 - - vendor.id usb 0x041e -+vendor.name Creative - - vendor.id usb 0x041e -&device.id usb 0x400a -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PC-CAM 300 - - vendor.id usb 0x041e -&device.id usb 0x400b -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PC-CAM 600 - - vendor.id usb 0x04a5 -+vendor.name Benq - - vendor.id usb 0x04a5 -&device.id usb 0x3003 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name DC1300 - - vendor.id usb 0x04a9 -+vendor.name Canon - - vendor.id usb 0x04a9 -&device.id usb 0x3041 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot S10 - - vendor.id usb 0x04a9 -&device.id usb 0x3043 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot S20 - - vendor.id usb 0x04a9 -&device.id usb 0x3044 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name EOS D30 - - vendor.id usb 0x04a9 -&device.id usb 0x3045 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot S100 - - vendor.id usb 0x04a9 -&device.id usb 0x3046 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name IXY DIGITAL - - vendor.id usb 0x04a9 -&device.id usb 0x3047 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Digital IXUS - - vendor.id usb 0x04a9 -&device.id usb 0x3048 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot G1 - - vendor.id usb 0x04a9 -&device.id usb 0x3049 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot Pro90 IS - - vendor.id usb 0x04a9 -&device.id usb 0x304b -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name IXY DIGITAL 300 - - vendor.id usb 0x04a9 -&device.id usb 0x304c -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot S300 - - vendor.id usb 0x04a9 -&device.id usb 0x304d -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Digital IXUS 300 - - vendor.id usb 0x04a9 -&device.id usb 0x304e -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot A20 - - vendor.id usb 0x04a9 -&device.id usb 0x304f -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot A10 - - vendor.id usb 0x04a9 -&device.id usb 0x3051 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot S110 - - vendor.id usb 0x04a9 -&device.id usb 0x3052 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name DIGITAL IXUS V - - vendor.id usb 0x04a9 -&device.id usb 0x3055 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot G2 - - vendor.id usb 0x04a9 -&device.id usb 0x3056 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot S40 - - vendor.id usb 0x04a9 -&device.id usb 0x3057 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot S30 - - vendor.id usb 0x04a9 -&device.id usb 0x3058 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot A40 - - vendor.id usb 0x04a9 -&device.id usb 0x3059 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot A30 - - vendor.id usb 0x04a9 -&device.id usb 0x3060 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name EOS D60 - - vendor.id usb 0x04a9 -&device.id usb 0x3061 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot A100 - - vendor.id usb 0x04a9 -&device.id usb 0x3062 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot A200 - - vendor.id usb 0x04a9 -&device.id usb 0x3065 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name IXUS v2 - - vendor.id usb 0x04a9 -&device.id usb 0x3066 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name IXUS 330 - - vendor.id usb 0x04a9 -&device.id usb 0x306a -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot S45 - - vendor.id usb 0x04a9 -&device.id usb 0x306b -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Optura 200 MC - - vendor.id usb 0x04a9 -&device.id usb 0x306c -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot S45 - - vendor.id usb 0x04a9 -&device.id usb 0x306d -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot S45 - - vendor.id usb 0x04a9 -&device.id usb 0x306e -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot G3 - - vendor.id usb 0x04a9 -&device.id usb 0x306f -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot G3 - - vendor.id usb 0x04a9 -&device.id usb 0x3070 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name IXUS v3 - - vendor.id usb 0x04a9 -&device.id usb 0x3071 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name IXUS v3 - - vendor.id usb 0x04a9 -&device.id usb 0x3072 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name IXUS II - - vendor.id usb 0x04a9 -&device.id usb 0x3073 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot A70 - - vendor.id usb 0x04a9 -&device.id usb 0x3074 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot A60 - - vendor.id usb 0x04a9 -&device.id usb 0x3075 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name IXUS 400 - - vendor.id usb 0x04a9 -&device.id usb 0x3076 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot A300 - - vendor.id usb 0x04a9 -&device.id usb 0x3077 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot S50 - - vendor.id usb 0x04a9 -&device.id usb 0x3078 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name ZR70MC - - vendor.id usb 0x04a9 -&device.id usb 0x307b -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name MV630i - - vendor.id usb 0x04a9 -&device.id usb 0x307f -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Optura 20 - - vendor.id usb 0x04a9 -&device.id usb 0x3081 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Optura 10 - - vendor.id usb 0x04a9 -&device.id usb 0x3083 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name EOS 10D - - vendor.id usb 0x04a9 -&device.id usb 0x3084 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name EOS 300D - - vendor.id usb 0x04a9 -&device.id usb 0x3085 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot G5 - - vendor.id usb 0x04a9 -&device.id usb 0x3099 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name EOS 300D - - vendor.id usb 0x04a9 -&device.id usb 0x309a -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PowerShot A80 - - vendor.id usb 0x04a9 -&device.id usb 0x309b -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name IXUS i - - vendor.id usb 0x04b0 -+vendor.name Nikon - - vendor.id usb 0x04b0 -&device.id usb 0x0102 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 990 - - vendor.id usb 0x04b0 -&device.id usb 0x0103 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 880 - - vendor.id usb 0x04b0 -&device.id usb 0x0104 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 995 - - vendor.id usb 0x04b0 -&device.id usb 0x0109 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 2500 - - vendor.id usb 0x04b0 -&device.id usb 0x010b -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 4500 - - vendor.id usb 0x04b0 -&device.id usb 0x010d -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 5700 - - vendor.id usb 0x04b0 -&device.id usb 0x010f -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 4300 - - vendor.id usb 0x04b0 -&device.id usb 0x0111 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 3500 - - vendor.id usb 0x04b0 -&device.id usb 0x0112 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 885 - - vendor.id usb 0x04b0 -&device.id usb 0x0113 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 5000 - - vendor.id usb 0x04b0 -&device.id usb 0x0115 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 3100 - - vendor.id usb 0x04b0 -&device.id usb 0x0117 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 2100 - - vendor.id usb 0x04b0 -&device.id usb 0x0119 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 5400 - - vendor.id usb 0x04b0 -&device.id usb 0x0202 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix SQ - - vendor.id usb 0x04b0 -&device.id usb 0x0302 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Coolpix 2000 - - vendor.id usb 0x04b0 -&device.id usb 0x0402 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name DSC D100 - - - vendor.id usb 0x04b8 -+vendor.name Epson - - vendor.id usb 0x04fc -+vendor.name Sunplus - - vendor.id usb 0x04fc -&device.id usb 0x504a -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name SPCA 504a camera - - vendor.id usb 0x04fc -&device.id usb 0x504b -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name SPCA 504b camera - - - vendor.id usb 0x04b8 -&device.id usb 0x0403 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PhotoPC 3000z - - vendor.id usb 0x0553 -+vendor.name STM - - vendor.id usb 0x0553 -&device.id usb 0x0202 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name STV680 based camera - - vendor.id usb 0x054c -+vendor.name Sony - - vendor.id usb 0x054c -&device.id usb 0x004e -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Digital Camera - - vendor.id usb 0x055f -+vendor.name Mustek - - vendor.id usb 0x055f -&device.id usb 0xa350 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name gSmart 350 - - vendor.id usb 0x055f -&device.id usb 0xc200 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name gSmart 300 - - vendor.id usb 0x055f -&device.id usb 0xc220 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name gSmart mini - - vendor.id usb 0x055f -&device.id usb 0xc420 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name gSmart mini 2 - - vendor.id usb 0x055f -&device.id usb 0xc520 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name gSmart mini 3 - - vendor.id usb 0x06bd -+vendor.name Agfa - - vendor.id usb 0x06bd -&device.id usb 0x0403 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name CL18 - - vendor.id usb 0x06bd -&device.id usb 0x0404 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name CL20 - - vendor.id usb 0x0797 -+vendor.name Grandtech - - vendor.id usb 0x0797 -&device.id usb 0x801a -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name 891a - - vendor.id usb 0x0797 -&device.id usb 0x801c -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name 891c - - vendor.id usb 0x0797 -&device.id usb 0x8901 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name SX-35 - - vendor.id usb 0x0797 -&device.id usb 0x8909 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name SX-35 - - vendor.id usb 0x0797 -&device.id usb 0x8911 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name SX-35 - - - vendor.id usb 0x0784 -+vendor.name Polaroid - - vendor.id usb 0x0784 -&device.id usb 0x0784 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name DC700 - - vendor.id usb 0x07b4 -+vendor.name Olympus - - vendor.id usb 0x07b4 -&device.id usb 0x0100 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name C-2100UZ - - vendor.id usb 0x07b4 -&device.id usb 0x0105 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name C-2040Z - - vendor.id usb 0x07b4 -&device.id usb 0x0114 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name PTP Camera - -# vendor.id usb 0x07cf -#+vendor.name Casio - -# vendor.id usb 0x07cf -#&device.id usb 0x1001 -#+baseclass.id 0x10f -#+subclass.id 0x02 - - vendor.id usb 0x084d -+vendor.name Minton - - vendor.id usb 0x084d -&device.id usb 0x0003 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name S-Cam F5 - - - vendor.id usb 0x084e -+vendor.name KBGear - - vendor.id usb 0x084e -&device.id usb 0x0001 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name JamCam v3 - - vendor.id usb 0x0919 -+vendor.name Tiger - - vendor.id usb 0x0919 -&device.id usb 0x0100 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Fast Flicks - - vendor.id usb 0x0d64 -+vendor.name DXG - - vendor.id usb 0x0d94 -&device.id usb 0x1021 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name D-Link DSC 350F - - vendor.id usb 0x0d94 -&device.id usb 0x1001 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name SiPix Stylecam - - vendor.id usb 0x0d96 -+vendor.name Traveller - - vendor.id usb 0x0d96 -&device.id usb 0x3300 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name SX 330z - - vendor.id usb 0x0d96 -&device.id usb 0x4100 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name SX 410z - - vendor.id usb 0x0d96 -&device.id usb 0x4102 -+baseclass.id 0x10f -+subclass.id 0x01 -+vendor.name Medion -+device.name MD 9700 - - vendor.id usb 0x0d96 -&device.id usb 0x0000 -+baseclass.id 0x10f -+subclass.id 0x01 -+vendor.name Jenoptik -+device.name JD350v - - vendor.id usb 0x2770 -+vendor.name NHJ - - vendor.id usb 0x2770 -&device.id usb 0x9120 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name 9120 based camera - - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# webcams - - vendor.id usb 0x05a9 -+vendor.name OmniVision - - vendor.id usb 0x05a9 -&device.id usb 0x0511 -+baseclass.id 0x10f -+subclass.id 0x00 -+device.name OV511 WebCam - - vendor.id usb 0x05a9 -&device.id usb 0xa511 -+baseclass.id 0x10f -+subclass.id 0x00 -+device.name OV511+ WebCam - - vendor.id usb 0x0813 -+vendor.name Mattel - - vendor.id usb 0x0813 -&device.id usb 0x0002 -+baseclass.id 0x10f -+subclass.id 0x00 -+device.name OV511 based WebCam - - vendor.id usb 0x06a5 -&device.id usb 0x0000 -+baseclass.id 0x10f -+subclass.id 0x00 -+device.name Typhoon Webcam 100k - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# usbmap: ov511.o - vendor.id usb 0x05a9 -&device.id usb 0x0511 -|vendor.id usb 0x05a9 -&device.id usb 0x0518 -|vendor.id usb 0x05a9 -&device.id usb 0xa511 -|vendor.id usb 0x05a9 -&device.id usb 0xa518 -|vendor.id usb 0x0813 -&device.id usb 0x0002 -+baseclass.id 0x10f -+subclass.id 0x00 - -# usbmap: pwc.o - vendor.id usb 0x041e -&device.id usb 0x400c -|vendor.id usb 0x041e -&device.id usb 0x4011 -|vendor.id usb 0x046d -&device.id usb 0x08b0+0x0009 -|vendor.id usb 0x0471 -&device.id usb 0x0302+0x0003 -|vendor.id usb 0x0471 -&device.id usb 0x0307+0x0002 -|vendor.id usb 0x0471 -&device.id usb 0x030c -|vendor.id usb 0x0471 -&device.id usb 0x0310+0x0004 -|vendor.id usb 0x04cc -&device.id usb 0x8116 -|vendor.id usb 0x055d -&device.id usb 0x9000+0x0002 -|vendor.id usb 0x069a -&device.id usb 0x0001 -|vendor.id usb 0x0d81 -&device.id usb 0x1900 -|vendor.id usb 0x0d81 -&device.id usb 0x1910 -+baseclass.id 0x10f -+subclass.id 0x00 - diff --git a/src/hwinfo/src/ids/src/chipcard b/src/hwinfo/src/ids/src/chipcard deleted file mode 100644 index 4e414550ac..0000000000 --- a/src/hwinfo/src/ids/src/chipcard +++ /dev/null @@ -1,21 +0,0 @@ -# chipcard reader - - - vendor.id TWK -+vendor.name Towitoko - - vendor.id TWK -&device.id eisa 0x5542 -+baseclass.id 0x10e -+subclass.id 0x00 -+device.name Smartcard reader -+requires pcsc-towitoko - - vendor.id usb 0x0c4b -&device.id usb 0x0100 -+baseclass.id 0x10e -+subclass.id 0x00 -+device.name Cyberjack USB -+driver.module.modprobe cyberjack -+requires ctapi-cyberjack - diff --git a/src/hwinfo/src/ids/src/class b/src/hwinfo/src/ids/src/class deleted file mode 100644 index 8ac04f4fc8..0000000000 --- a/src/hwinfo/src/ids/src/class +++ /dev/null @@ -1,960 +0,0 @@ -# device classes - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# PCI device classes and subclasses - - baseclass.id 0x000 -+baseclass.name Unclassified device - - baseclass.id 0x000 -&subclass.id 0x00 -+subclass.name Unclassified device - - baseclass.id 0x000 -&subclass.id 0x01 -+subclass.name VGA compatible unclassified device - - baseclass.id 0x001 -+baseclass.name Mass storage controller - - baseclass.id 0x001 -&subclass.id 0x00 -+subclass.name SCSI storage controller - - baseclass.id 0x001 -&subclass.id 0x01 -+subclass.name IDE interface - - baseclass.id 0x001 -&subclass.id 0x02 -+subclass.name Floppy disk controller - - baseclass.id 0x001 -&subclass.id 0x03 -+subclass.name IPI bus controller - - baseclass.id 0x001 -&subclass.id 0x04 -+subclass.name RAID bus controller - - baseclass.id 0x001 -&subclass.id 0x80 -+subclass.name Unknown mass storage controller - - baseclass.id 0x002 -+baseclass.name Network controller - - baseclass.id 0x002 -&subclass.id 0x00 -+subclass.name Ethernet controller - - baseclass.id 0x002 -&subclass.id 0x01 -+subclass.name Token ring network controller - - baseclass.id 0x002 -&subclass.id 0x02 -+subclass.name FDDI network controller - - baseclass.id 0x002 -&subclass.id 0x03 -+subclass.name ATM network controller - - baseclass.id 0x002 -&subclass.id 0x04 -+subclass.name ISDN controller - - baseclass.id 0x002 -&subclass.id 0x80 -+subclass.name Network controller - - baseclass.id 0x002 -&subclass.id 0x81 -+subclass.name Myrinet controller - - baseclass.id 0x002 -&subclass.id 0x82 -+subclass.name WLAN controller - - baseclass.id 0x002 -&subclass.id 0x83 -+subclass.name XPNET controller - - baseclass.id 0x002 -&subclass.id 0x86 -+subclass.name OSA-Express controller - - baseclass.id 0x002 -&subclass.id 0x87 -+subclass.name HiperSocket controller - - baseclass.id 0x002 -&subclass.id 0x88 -+subclass.name CTC controller - - baseclass.id 0x002 -&subclass.id 0x89 -+subclass.name OSA-2 controller - - baseclass.id 0x002 -&subclass.id 0x8e -+subclass.name FICON controller - - baseclass.id 0x002 -&subclass.id 0x8f -+subclass.name ESCON controller - - baseclass.id 0x002 -&subclass.id 0x90 -+subclass.name IUCV connection - - baseclass.id 0x002 -&subclass.id 0x91 -+subclass.name USB Host-to-Host link - - baseclass.id 0x003 -+baseclass.name Display controller - - baseclass.id 0x003 -&subclass.id 0x00 -+subclass.name VGA compatible controller - - baseclass.id 0x003 -&subclass.id 0x00 -&progif.id 0x00 -+progif.name VGA - - baseclass.id 0x003 -&subclass.id 0x00 -&progif.id 0x01 -+progif.name 8514 - - baseclass.id 0x003 -&subclass.id 0x01 -+subclass.name XGA compatible controller - - baseclass.id 0x003 -&subclass.id 0x02 -+subclass.name 3D controller - - baseclass.id 0x003 -&subclass.id 0x80 -+subclass.name Display controller - - baseclass.id 0x004 -+baseclass.name Multimedia controller - - baseclass.id 0x004 -&subclass.id 0x00 -+subclass.name Multimedia video controller - - baseclass.id 0x004 -&subclass.id 0x01 -+subclass.name Multimedia audio controller - - baseclass.id 0x004 -&subclass.id 0x02 -+subclass.name Computer telephony device - - baseclass.id 0x004 -&subclass.id 0x80 -+subclass.name Multimedia controller - - baseclass.id 0x005 -+baseclass.name Memory controller - - baseclass.id 0x005 -&subclass.id 0x00 -+subclass.name RAM memory - - baseclass.id 0x005 -&subclass.id 0x01 -+subclass.name FLASH memory - - baseclass.id 0x005 -&subclass.id 0x80 -+subclass.name Memory controller - - baseclass.id 0x006 -+baseclass.name Bridge - - baseclass.id 0x006 -&subclass.id 0x00 -+subclass.name Host bridge - - baseclass.id 0x006 -&subclass.id 0x01 -+subclass.name ISA bridge - - baseclass.id 0x006 -&subclass.id 0x02 -+subclass.name EISA bridge - - baseclass.id 0x006 -&subclass.id 0x03 -+subclass.name MicroChannel bridge - - baseclass.id 0x006 -&subclass.id 0x04 -+subclass.name PCI bridge - - baseclass.id 0x006 -&subclass.id 0x04 -&progif.id 0x00 -+progif.name Normal decode - - baseclass.id 0x006 -&subclass.id 0x04 -&progif.id 0x01 -+progif.name Subtractive decode - - baseclass.id 0x006 -&subclass.id 0x05 -+subclass.name PCMCIA bridge - - baseclass.id 0x006 -&subclass.id 0x06 -+subclass.name NuBus bridge - - baseclass.id 0x006 -&subclass.id 0x07 -+subclass.name CardBus bridge - - baseclass.id 0x006 -&subclass.id 0x08 -+subclass.name RACEway bridge - - baseclass.id 0x006 -&subclass.id 0x08 -&progif.id 0x00 -+progif.name Transparent mode - - baseclass.id 0x006 -&subclass.id 0x08 -&progif.id 0x01 -+progif.name Endpoint mode - - baseclass.id 0x006 -&subclass.id 0x09 -+subclass.name Semi-transparent PCI-to-PCI bridge - - baseclass.id 0x006 -&subclass.id 0x09 -&progif.id 0x40 -+progif.name Primary bus towards host CPU - - baseclass.id 0x006 -&subclass.id 0x09 -&progif.id 0x80 -+progif.name Secondary bus towards host CPU - - baseclass.id 0x006 -&subclass.id 0x0a -+subclass.name InfiniBand to PCI host bridge - - baseclass.id 0x006 -&subclass.id 0x80 -+subclass.name Bridge - - baseclass.id 0x007 -+baseclass.name Communication controller - - baseclass.id 0x007 -&subclass.id 0x00 -+subclass.name Serial controller - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x00 -+progif.name 8250 - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x01 -+progif.name 16450 - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x02 -+progif.name 16550 - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x03 -+progif.name 16650 - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x04 -+progif.name 16750 - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x05 -+progif.name 16850 - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x06 -+progif.name 16950 - - baseclass.id 0x007 -&subclass.id 0x01 -+subclass.name Parallel controller - - baseclass.id 0x007 -&subclass.id 0x01 -&progif.id 0x00 -+progif.name SPP - - baseclass.id 0x007 -&subclass.id 0x01 -&progif.id 0x01 -+progif.name BiDir - - baseclass.id 0x007 -&subclass.id 0x01 -&progif.id 0x02 -+progif.name ECP - - baseclass.id 0x007 -&subclass.id 0x01 -&progif.id 0x03 -+progif.name IEEE1284 - - baseclass.id 0x007 -&subclass.id 0x01 -&progif.id 0xfe -+progif.name IEEE1284 Target - - baseclass.id 0x007 -&subclass.id 0x02 -+subclass.name Multiport serial controller - - baseclass.id 0x007 -&subclass.id 0x03 -+subclass.name Modem - - baseclass.id 0x007 -&subclass.id 0x03 -&progif.id 0x01 -+progif.name Hayes/16450 - - baseclass.id 0x007 -&subclass.id 0x03 -&progif.id 0x02 -+progif.name Hayes/16550 - - baseclass.id 0x007 -&subclass.id 0x03 -&progif.id 0x03 -+progif.name Hayes/16650 - - baseclass.id 0x007 -&subclass.id 0x03 -&progif.id 0x04 -+progif.name Hayes/16750 - - baseclass.id 0x007 -&subclass.id 0x80 -+subclass.name Communication controller - - baseclass.id 0x007+0x0002 -&subclass.id 0x03 -&progif.id 0x00 -+progif.name Generic - - baseclass.id 0x008 -+baseclass.name Generic system peripheral - - baseclass.id 0x008 -&subclass.id 0x00 -+subclass.name PIC - - baseclass.id 0x008 -&subclass.id 0x00 -&progif.id 0x00 -+progif.name 8259 - - baseclass.id 0x008 -&subclass.id 0x00 -&progif.id 0x01 -+progif.name ISA PIC - - baseclass.id 0x008 -&subclass.id 0x00 -&progif.id 0x02 -+progif.name EISA PIC - - baseclass.id 0x008 -&subclass.id 0x00 -&progif.id 0x10 -+progif.name IO-APIC - - baseclass.id 0x008 -&subclass.id 0x00 -&progif.id 0x20 -+progif.name IO(X)-APIC - - baseclass.id 0x008 -&subclass.id 0x01 -+subclass.name DMA controller - - baseclass.id 0x008 -&subclass.id 0x01 -&progif.id 0x00 -+progif.name 8237 - - baseclass.id 0x008 -&subclass.id 0x01 -&progif.id 0x01 -+progif.name ISA DMA - - baseclass.id 0x008 -&subclass.id 0x01 -&progif.id 0x02 -+progif.name EISA DMA - - baseclass.id 0x008 -&subclass.id 0x02 -+subclass.name Timer - - baseclass.id 0x008 -&subclass.id 0x02 -&progif.id 0x00 -+progif.name 8254 - - baseclass.id 0x008 -&subclass.id 0x02 -&progif.id 0x01 -+progif.name ISA Timer - - baseclass.id 0x008 -&subclass.id 0x02 -&progif.id 0x02 -+progif.name EISA Timers - - baseclass.id 0x008 -&subclass.id 0x03 -+subclass.name RTC - - baseclass.id 0x008 -&subclass.id 0x03 -&progif.id 0x01 -+progif.name ISA RTC - - baseclass.id 0x008 -&subclass.id 0x04 -+subclass.name PCI Hot-plug controller - - baseclass.id 0x008 -&subclass.id 0x80 -+subclass.name System peripheral - - baseclass.id 0x009 -+baseclass.name Input device controller - - baseclass.id 0x009 -&subclass.id 0x00 -+subclass.name Keyboard controller - - baseclass.id 0x009 -&subclass.id 0x01 -+subclass.name Digitizer Pen - - baseclass.id 0x009 -&subclass.id 0x02 -+subclass.name Mouse controller - - baseclass.id 0x009 -&subclass.id 0x03 -+subclass.name Scanner controller - - baseclass.id 0x009 -&subclass.id 0x04 -+subclass.name Gameport controller - - baseclass.id 0x009 -&subclass.id 0x04 -&progif.id 0x00 -+progif.name Generic - - baseclass.id 0x009 -&subclass.id 0x04 -&progif.id 0x10 -+progif.name Extended - - baseclass.id 0x009 -&subclass.id 0x80 -+subclass.name Input device controller - - baseclass.id 0x00a -+baseclass.name Docking station - - baseclass.id 0x00a -&subclass.id 0x00 -+subclass.name Generic Docking Station - - baseclass.id 0x00a -&subclass.id 0x80 -+subclass.name Docking Station - - baseclass.id 0x00b -+baseclass.name Processor - - baseclass.id 0x00b -&subclass.id 0x00 -+subclass.name 386 - - baseclass.id 0x00b -&subclass.id 0x01 -+subclass.name 486 - - baseclass.id 0x00b -&subclass.id 0x02 -+subclass.name Pentium - - baseclass.id 0x00b -&subclass.id 0x10 -+subclass.name Alpha - - baseclass.id 0x00b -&subclass.id 0x20 -+subclass.name Power PC - - baseclass.id 0x00b -&subclass.id 0x30 -+subclass.name MIPS - - baseclass.id 0x00b -&subclass.id 0x40 -+subclass.name Co-processor - - baseclass.id 0x00c -+baseclass.name Serial bus controller - - baseclass.id 0x00c -&subclass.id 0x00 -+subclass.name FireWire (IEEE 1394) - - baseclass.id 0x00c -&subclass.id 0x00 -&progif.id 0x00 -+progif.name Generic - - baseclass.id 0x00c -&subclass.id 0x00 -&progif.id 0x10 -+progif.name OHCI - - baseclass.id 0x00c -&subclass.id 0x01 -+subclass.name ACCESS Bus - - baseclass.id 0x00c -&subclass.id 0x02 -+subclass.name SSA - - baseclass.id 0x00c -&subclass.id 0x03 -+subclass.name USB Controller - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0x00 -+progif.name UHCI - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0x10 -+progif.name OHCI - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0x20 -+progif.name EHCI - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0x80 -+progif.name Unspecified - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0xfe -+progif.name USB Device - - baseclass.id 0x00c -&subclass.id 0x04 -+subclass.name Fibre Channel - - baseclass.id 0x00c -&subclass.id 0x05 -+subclass.name SMBus - - baseclass.id 0x00c -&subclass.id 0x06 -+subclass.name InfiniBand - - baseclass.id 0x00d -+baseclass.name Wireless controller - - baseclass.id 0x00d -&subclass.id 0x00 -+subclass.name IRDA controller - - baseclass.id 0x00d -&subclass.id 0x01 -+subclass.name Consumer IR controller - - baseclass.id 0x00d -&subclass.id 0x10 -+subclass.name RF controller - - baseclass.id 0x00d -&subclass.id 0x80 -+subclass.name Wireless controller - - baseclass.id 0x00e -+baseclass.name Intelligent controller - - baseclass.id 0x00e -&subclass.id 0x00 -+subclass.name I2O - - baseclass.id 0x00f -+baseclass.name Satellite communications controller - - baseclass.id 0x00f -&subclass.id 0x00 -+subclass.name Satellite TV controller - - baseclass.id 0x00f -&subclass.id 0x01 -+subclass.name Satellite audio communication controller - - baseclass.id 0x00f -&subclass.id 0x03 -+subclass.name Satellite voice communication controller - - baseclass.id 0x00f -&subclass.id 0x04 -+subclass.name Satellite data communication controller - - baseclass.id 0x010 -+baseclass.name Encryption controller - - baseclass.id 0x010 -&subclass.id 0x00 -+subclass.name Network and computing encryption device - - baseclass.id 0x010 -&subclass.id 0x10 -+subclass.name Entertainment encryption device - - baseclass.id 0x010 -&subclass.id 0x80 -+subclass.name Encryption controller - - baseclass.id 0x011 -+baseclass.name Signal processing controller - - baseclass.id 0x011 -&subclass.id 0x00 -+subclass.name DPIO module - - baseclass.id 0x011 -&subclass.id 0x01 -+subclass.name Performance counters - - baseclass.id 0x011 -&subclass.id 0x10 -+subclass.name Communication synchronizer - - baseclass.id 0x011 -&subclass.id 0x80 -+subclass.name Signal processing controller - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# our own class definitions - - baseclass.id 0x0ff -+baseclass.name Unclassified device - - baseclass.id 0x100 -+baseclass.name Monitor - - baseclass.id 0x100 -&subclass.id 0x01 -+subclass.name CRT Monitor - - baseclass.id 0x100 -&subclass.id 0x02 -+subclass.name LCD Monitor - - baseclass.id 0x101 -+baseclass.name Internally Used Class - - baseclass.id 0x101 -&subclass.id 0x01 -+subclass.name ISA PnP Interface - - baseclass.id 0x101 -&subclass.id 0x02 -+subclass.name Main Memory - - baseclass.id 0x101 -&subclass.id 0x03 -+subclass.name CPU - - baseclass.id 0x101 -&subclass.id 0x04 -+subclass.name FPU - - baseclass.id 0x101 -&subclass.id 0x05 -+subclass.name BIOS - - baseclass.id 0x101 -&subclass.id 0x06 -+subclass.name PROM - - baseclass.id 0x101 -&subclass.id 0x07 -+subclass.name System - - baseclass.id 0x102 -+baseclass.name Modem - - baseclass.id 0x102 -&subclass.id 0x00 -+subclass.name Modem - - baseclass.id 0x102 -&subclass.id 0x01+4 -+subclass.name LinModem - - baseclass.id 0x103 -+baseclass.name ISDN Adapter - - baseclass.id 0x104 -+baseclass.name PS/2 Controller - - baseclass.id 0x105 -+baseclass.name Mouse - - baseclass.id 0x105 -&subclass.id 0x00 -+subclass.name PS/2 Mouse - - baseclass.id 0x105 -&subclass.id 0x01 -+subclass.name Serial Mouse - - baseclass.id 0x105 -&subclass.id 0x02 -+subclass.name Bus Mouse - - baseclass.id 0x105 -&subclass.id 0x03 -+subclass.name USB Mouse - - baseclass.id 0x105 -&subclass.id 0x80 -+subclass.name Mouse - - baseclass.id 0x106 -+baseclass.name Mass Storage Device - - baseclass.id 0x106 -&subclass.id 0x00 -+subclass.name Disk - - baseclass.id 0x106 -&subclass.id 0x01 -+subclass.name Tape - - baseclass.id 0x106 -&subclass.id 0x02 -+subclass.name CD-ROM - - baseclass.id 0x106 -&subclass.id 0x02 -&progif.id 0x01 -+progif.name CD-R - - baseclass.id 0x106 -&subclass.id 0x02 -&progif.id 0x02 -+progif.name CD-RW - - baseclass.id 0x106 -&subclass.id 0x02 -&progif.id 0x03 -+progif.name DVD - - baseclass.id 0x106 -&subclass.id 0x02 -&progif.id 0x04 -+progif.name DVD-R - - baseclass.id 0x106 -&subclass.id 0x02 -&progif.id 0x05 -+progif.name DVD-RAM - - baseclass.id 0x106 -&subclass.id 0x03 -+subclass.name Floppy Disk - - baseclass.id 0x106 -&subclass.id 0x80 -+subclass.name Storage Device - - baseclass.id 0x107 -+baseclass.name Network Interface - - baseclass.id 0x107 -&subclass.id 0x00 -+subclass.name Loopback - - baseclass.id 0x107 -&subclass.id 0x01 -+subclass.name Ethernet - - baseclass.id 0x107 -&subclass.id 0x02 -+subclass.name Tokenring - - baseclass.id 0x107 -&subclass.id 0x03 -+subclass.name FDDI - - baseclass.id 0x107 -&subclass.id 0x04 -+subclass.name CTC - - baseclass.id 0x107 -&subclass.id 0x05 -+subclass.name IUCV - - baseclass.id 0x107 -&subclass.id 0x06 -+subclass.name HSI - - baseclass.id 0x107 -&subclass.id 0x07 -+subclass.name QETH - - baseclass.id 0x107 -&subclass.id 0x08 -+subclass.name ESCON - - baseclass.id 0x107 -&subclass.id 0x09 -+subclass.name Myrinet - - baseclass.id 0x107 -&subclass.id 0x0a -+subclass.name WLAN - - baseclass.id 0x107 -&subclass.id 0x0b -+subclass.name XPNET - - baseclass.id 0x107 -&subclass.id 0x0c -+subclass.name USB-Link - - baseclass.id 0x107 -&subclass.id 0x80 -+subclass.name Network Interface - - baseclass.id 0x108 -+baseclass.name Keyboard - - baseclass.id 0x108 -&subclass.id 0x00 -+subclass.name Keyboard - - baseclass.id 0x108 -&subclass.id 0x01 -+subclass.name Console - - baseclass.id 0x109 -+baseclass.name Printer - - baseclass.id 0x10a -+baseclass.name Hub - - baseclass.id 0x10a -&subclass.id 0x01 -+subclass.name USB Hub - - baseclass.id 0x10b -+baseclass.name Braille Display - - baseclass.id 0x10c -+baseclass.name Scanner - - baseclass.id 0x10c -&subclass.id 0x01 -+subclass.name HP OfficeJet Scanner - - baseclass.id 0x10d -+baseclass.name Joystick - - baseclass.id 0x10d -&subclass.id 0x01 -+subclass.name Gamepad - - baseclass.id 0x10e -+baseclass.name Chipcard Reader - - baseclass.id 0x10f -+baseclass.name Camera - - baseclass.id 0x10f -&subclass.id 0x01 -+subclass.name WebCam - - baseclass.id 0x10f -&subclass.id 0x02 -+subclass.name Digital Camera - - baseclass.id 0x110 -+baseclass.name Framebuffer - - baseclass.id 0x110 -&subclass.id 0x01 -+subclass.name VESA Framebuffer - - baseclass.id 0x111 -+baseclass.name DVB Card - - baseclass.id 0x111 -&subclass.id 0x01 -+subclass.name DVB-C Card - - baseclass.id 0x111 -&subclass.id 0x02 -+subclass.name DVB-S Card - - baseclass.id 0x111 -&subclass.id 0x03 -+subclass.name DVB-T Card - - baseclass.id 0x112 -+baseclass.name TV Card - - baseclass.id 0x113 -+baseclass.name Partition - - baseclass.id 0x114 -+baseclass.name DSL Card - - baseclass.id 0x115 -+baseclass.name Bluetooth Device - diff --git a/src/hwinfo/src/ids/src/dvb b/src/hwinfo/src/ids/src/dvb deleted file mode 100644 index 7a40f03c58..0000000000 --- a/src/hwinfo/src/ids/src/dvb +++ /dev/null @@ -1,192 +0,0 @@ -# dvb cards - - vendor.id pci 0x13d0 -&device.id pci 0x2103 -|vendor.id pci 0x13d0 -&device.id pci 0x2200 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe skystar2 - - vendor.id pci 0x109e -&device.id pci 0x0878 -+driver.module.modprobe bt878 - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x0071 -&subdevice.id pci 0x0101 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe bt878 -+subdevice.name "Nebula Electronics DigiTV" - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0761 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe bt878 -+subdevice.name "AverMedia AverTV DVB-T" - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x11bd -&subdevice.id pci 0x0026 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe bt878 -+subdevice.name "Pinnacle PCTV SAT CI" - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x1822 -&subdevice.id pci 0x0001 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe bt878 -+subdevice.name "Twinhan VisionPlus DVB-T" - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x270f -&subdevice.id pci 0xfc00 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe bt878 -+subdevice.name "ChainTech digitop DST-1000 DVB-S" - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0771 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe bt878 -+subdevice.name "AVermedia DVB-T 771" - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x18ac -&subdevice.id pci 0xdb10 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe bt878 -+subdevice.name "DVICO FusionHDTV DVB-T Lite" - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x11bd -&subdevice.id pci 0x001c -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe bt878 -+subdevice.name "Pinnacle PCTV Sat" - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x00a1 -&subdevice.id pci 0x00a1 -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x00a1 -&subdevice.id pci 0xa1a0 -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x110a -&subdevice.id pci 0x0000 -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x110a -&subdevice.id pci 0xffff -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x0000+0x0005 -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x0006 -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x0008 -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x000a -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x1002 -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x1102 -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0xffc2 -&subdevice.id pci 0x0000 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe dvb-ttpci - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x1131 -&subdevice.id pci 0x4f56 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe budget-av - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x1003+0x0003 -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x1013 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe budget - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x100c -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x100f -|vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x1011 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe budget-ci - - - vendor.id pci 0x14f1 -&device.id pci 0x8802 -&subvendor.id pci 0x17de -&subdevice.id pci 0x08a6 -|vendor.id pci 0x14f1 -&device.id pci 0x8802 -&subvendor.id pci 0x18AC -&subdevice.id pci 0xDB00 -|vendor.id pci 0x14f1 -&device.id pci 0x8802 -&subvendor.id pci 0x0070 -&subdevice.id pci 0x9002 -|vendor.id pci 0x14f1 -&device.id pci 0x8802 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0187 -+baseclass.id 0x111 -+subclass.id 0x00 -+driver.module.modprobe cx88-dvb - - diff --git a/src/hwinfo/src/ids/src/extra b/src/hwinfo/src/ids/src/extra deleted file mode 100644 index 323beb7924..0000000000 --- a/src/hwinfo/src/ids/src/extra +++ /dev/null @@ -1,304 +0,0 @@ -# some special entries -# drop most of them??? - - - vendor.id pci 0x1000 -&device.id pci 0x0001 -+baseclass.id 0x001 -+subclass.id 0x00 -+device.name 53c810 - - vendor.id pci 0x1000 -&device.id pci 0x000a -+device.name 53C1510D - - vendor.id pci 0x1011 -&device.id pci 0x1065 -+device.name DAC960 - - vendor.id pci 0x1039 -&device.id pci 0x7016 -+device.name SiS 7016 (RealTek RTL8139) Fast Ethernet - - vendor.id pci 0x103c -&device.id pci 0x100a -+device.name HP FX6 OpenGL - - vendor.id pci 0x1050 -&device.id pci 0x5a5a -+device.name Winbond - - vendor.id pci 0x106b -&device.id pci 0x0003 -+baseclass.id 0x003 -+subclass.id 0x80 - - vendor.id pci 0x106b -&device.id pci 0x0021 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name GMAC Ethernet Controller - - vendor.id pci 0x106b -&device.id pci 0x0024 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name GMAC Ethernet Controller - - vendor.id pci 0x106b -&device.id pci 0x0022 -+device.name Keylargo Mac I/O - - vendor.id pci 0x1077 -&device.id pci 0x1016 -+device.name QLA10160 - - vendor.id pci 0x1077 -&device.id pci 0x1080 -+device.name QLA1080 - - vendor.id pci 0x1077 -&device.id pci 0x1216 -+device.name QLA12160 - - vendor.id pci 0x1077 -&device.id pci 0x1240 -+device.name QLA1240 - - vendor.id pci 0x1077 -&device.id pci 0x1280 -+device.name QLA1280 - - vendor.id pci 0x10b7 -&device.id pci 0x5055 -+device.name 3c555 Laptop Hurricane - - vendor.id pci 0x10b7 -&device.id pci 0x6560 -+device.name 3CCFE656 Cyclone CardBus - - vendor.id pci 0x10b7 -&device.id pci 0x7646 -+device.name 3cSOHO100-TX Hurricane - - vendor.id pci 0x10de -&device.id pci 0x0020 -+device.name Riva TNT - - vendor.id pci 0x10ec -&device.id pci 0x8138 -+device.name RTL8139B - - vendor.id pci 0x1101 -&device.id pci 0x0002 -+device.name INI-A100U2W - - vendor.id pci 0x1101 -&device.id pci 0x1060 -+device.name INI-A100U2W - - vendor.id pci 0x1179 -&device.id pci 0x0601 -+device.name Pentium Host Bridge for Notebooks - - vendor.id pci 0x11ad -&device.id pci 0xc115 -+device.name Lite-On LC82C115 PNIC-II - - vendor.id pci 0x12c3 -&device.id pci 0x0058 -+device.name HT80232 - - vendor.id pci 0x12c3 -&device.id pci 0x5598 -+device.name HT80229 - - vendor.id pci 0x12eb -+vendor.name Aureal Semiconductor - - vendor.id pci 0x12eb -&device.id pci 0x0001 -+device.name AU8820 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0001 -&subvendor.id pci 0x5053 -&subdevice.id pci 0x3355 -+subdevice.name TBS Montego A3D - - vendor.id pci 0x134a -&device.id pci 0x0002 -+device.name INI-920 - - vendor.id pci 0x15ad -+vendor.name VMWare, Inc. - - vendor.id pci 0x15ad -&device.id pci 0x0405 -+baseclass.id 0x003 -+subclass.id 0x00 - - vendor.id pci 0x15ad -&device.id pci 0x0710 -+baseclass.id 0x003 -+subclass.id 0x00 - - -# internal modems -# (just started...) - vendor.id pci 0x127a -+vendor.name Rockwell International - - vendor.id pci 0x127a -&device.id pci 0x1004 -+device.name HCF 56k V90 FaxModem - - vendor.id pci 0x127a -&device.id pci 0x1005 -+device.name PCI56RVP Modem - - vendor.id pci 0x12b9 -+vendor.name U.S. Robotics, Inc. - - vendor.id pci 0x12b9 -&device.id pci 0x1006 -+device.name 56k voice modem - - vendor.id pci 0x1318 -&device.id pci 0x0911 -+device.name Hamachi GNIC-II - - -# new gdth.o (21/06/2001) - vendor.id pci 0x1119 -&device.id pci 0x0136 -+device.name GDT6x13RS - - vendor.id pci 0x1119 -&device.id pci 0x0137 -+device.name GDT6x23RS - - vendor.id pci 0x1119 -&device.id pci 0x013c -+device.name GDT6x33RS - - vendor.id pci 0x1119 -&device.id pci 0x013d -+device.name GDT6x43RS - - vendor.id pci 0x1119 -&device.id pci 0x013e -+device.name GDT6x53RS - - vendor.id pci 0x1119 -&device.id pci 0x013f -+device.name GDT6x63RS - - vendor.id pci 0x1119 -&device.id pci 0x01d6 -+device.name GDT4x13RZ - - vendor.id pci 0x1119 -&device.id pci 0x01d7 -+device.name GDT4x23RZ - - vendor.id pci 0x1119 -&device.id pci 0x01f6 -+device.name GDT8x13RZ - - vendor.id pci 0x1119 -&device.id pci 0x01f7 -+device.name GDT8x23RZ - - vendor.id pci 0x1119 -&device.id pci 0x01fc -+device.name GDT8x33RZ - - vendor.id pci 0x1119 -&device.id pci 0x01fd -+device.name GDT8x43RZ - - vendor.id pci 0x1119 -&device.id pci 0x01fe -+device.name GDT8x53RZ - - vendor.id pci 0x1119 -&device.id pci 0x01ff -+device.name GDT8x63RZ - - vendor.id pci 0x1119 -&device.id pci 0x0300 -+device.name ICP vortex GDT RAID Controller - - vendor.id pci 0x8086 -&device.id pci 0x0600 -+device.name RAID Controller - - -# cf #9638 - vendor.id pci 0x14e4 -+vendor.name Broadcom - - vendor.id pci 0x14e4 -&device.id pci 0x1647 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0099 -+subdevice.name NC7780 Gigabit Server Adapter - - vendor.id pci 0x14e4 -&device.id pci 0x1647 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x009a -+subdevice.name NC7770 Gigabit Server Adapter - - -# IBM ServeRAID adapters (#20268) - vendor.id pci 0x1014 -&device.id pci 0x002e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x022e -+subdevice.name ServeRAID 4H - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01be -+subdevice.name ServeRAID 4M - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01bf -+subdevice.name ServeRAID 4L - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0208 -+subdevice.name ServeRAID 4Mx - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x020e -+subdevice.name ServeRAID 4Lx - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0258 -+subdevice.name ServeRAID 5i - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0259 -+subdevice.name ServeRAID 5i - - vendor.id pci 0x1022 -+vendor.name AMD - -# 63973 - vendor.id pci 0x10a9 -+vendor.name SGI - diff --git a/src/hwinfo/src/ids/src/isapnp b/src/hwinfo/src/ids/src/isapnp deleted file mode 100644 index 87926f049b..0000000000 --- a/src/hwinfo/src/ids/src/isapnp +++ /dev/null @@ -1,545 +0,0 @@ - vendor.id ACC -+vendor.name Accton - - vendor.id ADD -+vendor.name Addtron - - vendor.id ADP -+vendor.name Adaptec - - vendor.id ADP -&device.id eisa 0x1505 -+baseclass.id 0x001 -+subclass.id 0x00 -+device.name Adaptec AVA-1505AE - - vendor.id ADS -+vendor.name Analog Devices - - vendor.id ADS -&device.id eisa 0x7150 -|vendor.id ADS -&device.id eisa 0x7181 -|vendor.id ADV -&device.id eisa 0x550a -|vendor.id ADV -&device.id eisa 0x55ff -|vendor.id ALS -&device.id eisa 0x0001 -|vendor.id ALS -&device.id eisa 0x0110 -|vendor.id ALS -&device.id eisa 0x0120 -|vendor.id ALS -&device.id eisa 0x0200 -|vendor.id AZT -&device.id eisa 0x1008 -|vendor.id AZT -&device.id eisa 0x2320 -|vendor.id AZT -&device.id eisa 0x3000 -|vendor.id AZT -&device.id eisa 0x3002 -|vendor.id AZT -&device.id eisa 0x3005 -|vendor.id AZT -&device.id eisa 0x3011 -|vendor.id CDC -&device.id eisa 0x1111 -|vendor.id CMI -&device.id eisa 0x0001 -|vendor.id CSC -&device.id eisa 0x0000 -|vendor.id CSC -&device.id eisa 0x0225 -|vendor.id CSC -&device.id eisa 0x0437 -|vendor.id CSC -&device.id eisa 0x0b35 -|vendor.id CSC -&device.id eisa 0x0d32 -|vendor.id CSC -&device.id eisa 0x1425 -|vendor.id CSC -&device.id eisa 0x1525 -|vendor.id CSC -&device.id eisa 0x1a32 -|vendor.id CSC -&device.id eisa 0x1e37 -|vendor.id CSC -&device.id eisa 0x4232 -|vendor.id CSC -&device.id eisa 0x4236+0x0002 -|vendor.id CSC -&device.id eisa 0x4336 -|vendor.id CSC -&device.id eisa 0x4536 -|vendor.id CSC -&device.id eisa 0x4637 -|vendor.id CSC -&device.id eisa 0x4837 -|vendor.id CSC -&device.id eisa 0x6835+0x0002 -|vendor.id CSC -&device.id eisa 0x7532 -|vendor.id CSC -&device.id eisa 0x7537 -|vendor.id CSC -&device.id eisa 0x7632 -|vendor.id CSC -&device.id eisa 0x8025 -|vendor.id CSC -&device.id eisa 0x8037 -|vendor.id CSC -&device.id eisa 0x9836+0x0002 -|vendor.id CSC -&device.id eisa 0xa836 -|vendor.id CSC -&device.id eisa 0xc835 -|vendor.id CSC -&device.id eisa 0xd925 -|vendor.id CSC -&device.id eisa 0xd937 -|vendor.id CSC -&device.id eisa 0xe825 -|vendor.id CSC -&device.id eisa 0xf032 -|vendor.id CSC -&device.id eisa 0xf235 -|vendor.id CSC -&device.id eisa 0xf238 -|vendor.id CTL -&device.id eisa 0x002a -|vendor.id CTL -&device.id eisa 0x002c -|vendor.id CTL -&device.id eisa 0x0035 -|vendor.id CTL -&device.id eisa 0x0045 -|vendor.id CTL -&device.id eisa 0x009a -|vendor.id CTL -&device.id eisa 0x009f -|vendor.id CTL -&device.id eisa 0x00ed -|vendor.id DXP -&device.id eisa 0x3201 -|vendor.id ESS -&device.id eisa 0x0003 -|vendor.id ESS -&device.id eisa 0x0968 -|vendor.id ESS -&device.id eisa 0x1868+0x0002 -|vendor.id ESS -&device.id eisa 0x1878+0x0002 -|vendor.id LWC -&device.id eisa 0x1060+0x0002 -|vendor.id MDK -&device.id eisa 0x1605 -|vendor.id NMX -&device.id eisa 0x2200 -|vendor.id OPT -&device.id eisa 0x0924+0x0002 -|vendor.id OPT -&device.id eisa 0x0931 -|vendor.id RTL -&device.id eisa 0x3000 -|vendor.id RWB -&device.id eisa 0x1688 -|vendor.id SMM -&device.id eisa 0x7180 -|vendor.id STB -&device.id eisa 0x011a -|vendor.id YMH -&device.id eisa 0x0020 -|vendor.id YMH -&device.id eisa 0x0030 -|vendor.id YMH -&device.id eisa 0x0800 -+baseclass.id 0x004 -+subclass.id 0x01 - - vendor.id ADV -+vendor.name Advanced Micro Devices - - vendor.id ALN -+vendor.name Acer - - vendor.id ALS -+vendor.name Avance Logic, Inc. - - vendor.id ATI -|vendor.id ATK -+vendor.name Allied Telesyn - - vendor.id AVM -+vendor.name AVM - - vendor.id AVM -&device.id eisa 0x0900 -+baseclass.id 0x103 -+subclass.id 0x00 -+device.name AVM ISDN-Controller FRITZ!Card - - vendor.id AZT -+vendor.name Aztech Systems - - vendor.id BRI -+vendor.name Boca Research - - vendor.id CSC -+vendor.name Crystal Semiconductor - - vendor.id CTL -+vendor.name Creative Technology Ltd. - - vendor.id CTL -&device.id eisa 0x0024 -|vendor.id CTL -&device.id eisa 0x0026+0x0004 -|vendor.id CTL -&device.id eisa 0x002b -+baseclass.id 0x004 -+subclass.id 0x01 -+device.name Sound Blaster 16 - - vendor.id CTL -&device.id eisa 0x0039 -|vendor.id CTL -&device.id eisa 0x0042+0x0003 -|vendor.id CTL -&device.id eisa 0x0047 -|vendor.id CTL -&device.id eisa 0x0054 -|vendor.id CTL -&device.id eisa 0x009c -+baseclass.id 0x004 -+subclass.id 0x01 -+device.name Sound Blaster AWE 32 - - vendor.id CTL -&device.id eisa 0x0048 -+baseclass.id 0x004 -+subclass.id 0x01 -+device.name Creative SB32 - - vendor.id CTL -&device.id eisa 0x0051 -+baseclass.id 0x004 -+subclass.id 0x01 -+device.name Sound Blaster Vibra16S - - vendor.id CTL -&device.id eisa 0x0070 -+baseclass.id 0x004 -+subclass.id 0x01 -+device.name Sound Blaster Vibra16C - - vendor.id CTL -&device.id eisa 0x0080 -+baseclass.id 0x004 -+subclass.id 0x01 -+device.name Sound Blaster Vibra16CL - - vendor.id CTL -&device.id eisa 0x009d -|vendor.id CTL -&device.id eisa 0x00c1 -|vendor.id CTL -&device.id eisa 0x00c3 -|vendor.id CTL -&device.id eisa 0x00c5 -|vendor.id CTL -&device.id eisa 0x00c7 -|vendor.id CTL -&device.id eisa 0x00e4 -+baseclass.id 0x004 -+subclass.id 0x01 -+device.name Sound Blaster AWE 64 - - vendor.id CTL -&device.id eisa 0x009e -|vendor.id CTL -&device.id eisa 0x00b2 -+baseclass.id 0x004 -+subclass.id 0x01 -+device.name Creative SB AWE64 Gold - - vendor.id CTL -&device.id eisa 0x00f0 -+baseclass.id 0x004 -+subclass.id 0x01 -+device.name Creative ViBRA16X - - vendor.id DLK -+vendor.name D-Link Corporation - - vendor.id ELS -+vendor.name ELSA International - - vendor.id ELS -&device.id eisa 0x0133 -+baseclass.id 0x103 -+subclass.id 0x00 -+device.name ELSA QuickStep 1000 - - vendor.id ELS -&device.id eisa 0x0213 -+device.name MicroLink 33.6TQV - - vendor.id ELS -&device.id eisa 0x0754 -+device.name MicroLink 56k basic - - vendor.id ESS -+vendor.name ESS Technology, Inc. - - vendor.id GRV -&device.id eisa 0x0001 -+baseclass.id 0x004 -+subclass.id 0x01 -+device.name Gravis Ultrasound - - vendor.id GWY -+vendor.name Gateway - - vendor.id GWY -&device.id eisa 0x001c -+baseclass.id 0x102 -+subclass.id 0x01 -+device.name Telepath for Windows with x2 - - vendor.id JQE -+vendor.name Cnet - - vendor.id KYE -+vendor.name Genius - - vendor.id KYE -&device.id eisa 0x0001 -+device.name Genius PnP Mouse - - vendor.id LGI -+vendor.name Logitech - - vendor.id LGI -&device.id eisa 0x8001 -+device.name Logitech First/Pilot Mouse - - vendor.id LGI -&device.id eisa 0x800b+0x0002 -+device.name Logitech MouseMan - - vendor.id MDY -+vendor.name Microdyne - - vendor.id NDC -+vendor.name NDC - - vendor.id PNP -+vendor.name PnP - - vendor.id PNP -&device.id eisa 0x0500 -+device.name Standard PC COM port - - vendor.id PNP -&device.id eisa 0x0501 -+device.name 16550A-compatible COM port - - vendor.id PNP -&device.id eisa 0x0f00 -+device.name Microsoft Bus Mouse - - vendor.id PNP -&device.id eisa 0x0f01 -+device.name Microsoft Serial Mouse - - vendor.id PNP -&device.id eisa 0x0f02 -+device.name Microsoft InPort Mouse - - vendor.id PNP -&device.id eisa 0x0f03 -+device.name Microsoft PS/2-style Mouse - - vendor.id PNP -&device.id eisa 0x0f04 -+device.name Mouse Systems Mouse - - vendor.id PNP -&device.id eisa 0x0f05 -+device.name Mouse Systems 3-Button Mouse - - vendor.id PNP -&device.id eisa 0x0f06 -+device.name Genius Mouse - - vendor.id PNP -&device.id eisa 0x0f07 -+device.name Genius Mouse - - vendor.id PNP -&device.id eisa 0x0f08 -+device.name Logitech Serial Mouse - - vendor.id PNP -&device.id eisa 0x0f09 -+device.name Microsoft BallPoint Serial Mouse - - vendor.id PNP -&device.id eisa 0x0f0a -+device.name Microsoft Mouse - - vendor.id PNP -&device.id eisa 0x0f0b -+device.name Microsoft Plug and Play BallPoint Mouse - - vendor.id PNP -&device.id eisa 0x0f0c -+device.name MS-compatible Serial Mouse - - vendor.id PNP -&device.id eisa 0x0f0d -+device.name MS-compatible InPort-compatible Mouse - - vendor.id PNP -&device.id eisa 0x0f0e -+device.name Generic PS/2 Mouse - - vendor.id PNP -&device.id eisa 0x0f0f -+device.name MS-compatible Serial BallPoint-compatible Mouse - - vendor.id PNP -&device.id eisa 0x0f10 -+device.name Texas Instruments QuickPort Mouse - - vendor.id PNP -&device.id eisa 0x0f11 -+device.name MS-compatible Bus Mouse - - vendor.id PNP -&device.id eisa 0x0f12 -+device.name Logitech PS/2-style Mouse - - vendor.id PNP -&device.id eisa 0x0f13 -+device.name PS/2 Port for PS/2-style Mice - - vendor.id PNP -&device.id eisa 0x0f14 -+device.name Microsoft Kids Mouse - - vendor.id PNP -&device.id eisa 0x0f15 -+device.name Logitech bus mouse - - vendor.id PNP -&device.id eisa 0x0f16 -+device.name Logitech SWIFT device - - vendor.id PNP -&device.id eisa 0x0f17 -+device.name Logitech-compatible serial mouse - - vendor.id PNP -&device.id eisa 0x0f18 -+device.name Logitech-compatible bus mouse - - vendor.id PNP -&device.id eisa 0x0f19 -+device.name Logitech-compatible PS/2-style Mouse - - vendor.id PNP -&device.id eisa 0x0f1a -+device.name Logitech-compatible SWIFT Device - - vendor.id PNP -&device.id eisa 0x0f1b -+device.name HP Omnibook Mouse - - vendor.id PNP -&device.id eisa 0x0f1c -+device.name Compaq LTE Trackball PS/2-style Mouse - - vendor.id PNP -&device.id eisa 0x0f1d -+device.name Compaq LTE Trackball Serial Mouse - - vendor.id PNP -&device.id eisa 0x0f1e -+device.name Microsoft Kids Trackball Mouse - - vendor.id PNP -&device.id eisa 0x80d6 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name NE2000 Compatible - - vendor.id PNP -&device.id eisa 0x80f7 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name 3Com EtherLink III - - vendor.id PNP -&device.id eisa 0x80f8 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name 3Com Generic Etherlink PnP Device - - vendor.id PNP -&device.id eisa 0xb006 -+device.name MPU401 compatible - - vendor.id PNP -&device.id eisa 0xb02f -+device.name Joystick/Game port - - vendor.id RPT -+vendor.name RPTI - - vendor.id RTL -+vendor.name Realtek - - vendor.id SKD -+vendor.name SysKonnect - - vendor.id SMC -+vendor.name SMC - - vendor.id SVE -+vendor.name SVEC - - vendor.id TCM -+vendor.name 3Com - - vendor.id TCM -&device.id eisa 0x5090+0x0002 -|vendor.id TCM -&device.id eisa 0x5094+0x0002 -|vendor.id TCM -&device.id eisa 0x5098 -+baseclass.id 0x002 -+subclass.id 0x00 - - vendor.id TER -+vendor.name Terratec - - vendor.id TER -&device.id eisa 0x1411 -+baseclass.id 0x004 -+subclass.id 0x01 -+device.name Soundsystem Base 1 - - vendor.id USR -+vendor.name U.S. Robotics, Inc. - - vendor.id USR -&device.id eisa 0x9100 -+device.name U.S. Robotics 56K Message - - vendor.id YMH -+vendor.name Yamaha - diff --git a/src/hwinfo/src/ids/src/modem b/src/hwinfo/src/ids/src/modem deleted file mode 100644 index 95df289eb8..0000000000 --- a/src/hwinfo/src/ids/src/modem +++ /dev/null @@ -1,17 +0,0 @@ - vendor.id pci 0x8086 -&device.id pci 0x1040 -+baseclass.id 0x102 -+subclass.id 0x02 -+requires Intel-536ep - - vendor.id pci 0x115d -&device.id pci 0x0101 -|vendor.id pci 0x115d -&device.id pci 0x0440+0x001d -|vendor.id pci 0x11c1 -&device.id pci 0x0440+0x001d -+baseclass.id 0x102 -+subclass.id 0x03 -+requires ltmodem -+driver.module.modprobe lt_serial - diff --git a/src/hwinfo/src/ids/src/modem.i386 b/src/hwinfo/src/ids/src/modem.i386 deleted file mode 100644 index f45fe149b2..0000000000 --- a/src/hwinfo/src/ids/src/modem.i386 +++ /dev/null @@ -1,143 +0,0 @@ -# modinfo - subclass.id 0x03 -&vendor.id pci 0x1039 -&device.id pci 0x7013 -|subclass.id 0x03 -&vendor.id pci 0x1039 -&device.id pci 0x7018 -|vendor.id pci 0x1022 -&device.id pci 0x7446 -|vendor.id pci 0x1055 -&device.id pci 0x9178 -|vendor.id pci 0x10a5 -&device.id pci 0x3052 -|vendor.id pci 0x10a5 -&device.id pci 0x5459 -|vendor.id pci 0x10b9 -&device.id pci 0x5457 -|vendor.id pci 0x10b9 -&device.id pci 0x5459+0x0002 -|vendor.id pci 0x10de -&device.id pci 0x01c1 -|vendor.id pci 0x10ec -&device.id pci 0x8197 -|vendor.id pci 0x1106 -&device.id pci 0x3068 -|vendor.id pci 0x1131 -&device.id pci 0x3400 -|vendor.id pci 0x163c -&device.id pci 0x3052 -|vendor.id pci 0x163c -&device.id pci 0x5459 -|vendor.id pci 0x2000 -&device.id pci 0x2800 -|vendor.id pci 0x2003 -&device.id pci 0x8800 -|vendor.id pci 0x8086 -&device.id pci 0x2416 -|vendor.id pci 0x8086 -&device.id pci 0x2426 -|vendor.id pci 0x8086 -&device.id pci 0x2446 -|vendor.id pci 0x8086 -&device.id pci 0x2486 -|vendor.id pci 0x8086 -&device.id pci 0x24c6 -|vendor.id pci 0x8086 -&device.id pci 0x24d6 -|vendor.id pci 0x8086 -&device.id pci 0x7196 -+driver.module.modprobe slamr -+baseclass.id 0x102 -+subclass.id 0x04 -+requires kernel-nongpl|smartlink-softmodem - - vendor.id pci 0x1131 -&device.id pci 0x5402 -&subvendor.id pci 0x1244 -&subdevice.id pci 0x0f00 -+driver.module.modprobe fcdsl -+requires kernel-nongpl - - vendor.id pci 0x1244 -&device.id pci 0x0a00 -|vendor.id pci 0x1244 -&device.id pci 0x0e00 -+driver.module.modprobe fcpci -+requires kernel-nongpl - - vendor.id pci 0x1244 -&device.id pci 0x2700 -+driver.module.modprobe fcdslsl -+requires kernel-nongpl - - vendor.id pci 0x1244 -&device.id pci 0x2900 -+driver.module.modprobe fcdsl2 -+requires kernel-nongpl - - vendor.id AVM -&device.id eisa 0x0900 -+driver.module.modprobe fcpnp -+requires kernel-nongpl - - vendor.id usb 0x0483 -&device.id usb 0x7554 -+driver.module.modprobe slusb -+requires kernel-nongpl - - vendor.id usb 0x057c -&device.id usb 0x0c00 -+driver.module.modprobe fcusb -+requires kernel-nongpl - - vendor.id usb 0x057c -&device.id usb 0x1000 -|vendor.id usb 0x057c -&device.id usb 0x1900 -+driver.module.modprobe fcusb2 -+requires kernel-nongpl - - vendor.id usb 0x057c -&device.id usb 0x2000 -+driver.module.modprobe fxusb -+requires kernel-nongpl - - vendor.id usb 0x057c -&device.id usb 0x2300 -+driver.module.modprobe fcdslusb -+requires kernel-nongpl - - vendor.id usb 0x057c -&device.id usb 0x2800 -+driver.module.modprobe fxusb_CZ -+requires kernel-nongpl - - vendor.id usb 0x057c -&device.id usb 0x2805 -|vendor.id usb 0x057c -&device.id usb 0x4401 -+driver.module.modprobe e2220pc -+requires kernel-nongpl - - vendor.id usb 0x057c -&device.id usb 0x2806 -|vendor.id usb 0x057c -&device.id usb 0x4601 -+driver.module.modprobe e5520pc -+requires kernel-nongpl - - vendor.id usb 0x057c -&device.id usb 0x3000 -+driver.module.modprobe fcdslusba -+requires kernel-nongpl - - vendor.id usb 0x057c -&device.id usb 0x3500 -+driver.module.modprobe fcdslslusb -+requires kernel-nongpl - - vendor.id usb 0x057c -&device.id usb 0x3600 -+driver.module.modprobe fcdslusb2 -+requires kernel-nongpl diff --git a/src/hwinfo/src/ids/src/monitor b/src/hwinfo/src/ids/src/monitor deleted file mode 100644 index 5d443b2faf..0000000000 --- a/src/hwinfo/src/ids/src/monitor +++ /dev/null @@ -1,5378 +0,0 @@ -# monitors, LCDs - - - vendor.id AOC -+vendor.name AOC - - vendor.id AOC -&device.id eisa 0xa566 -+device.name SPECTRUM 5NLR -+driver.display 1280x1024|30-64|50-100|85 - - vendor.id AOC -&device.id eisa 0xa782 -+device.name SPECTRUM 7NLR -+driver.display |50-110|30-82 - - vendor.id AOC -&device.id eisa 0xd350 -+device.name 4VA - - vendor.id AOC -&device.id eisa 0xd566 -+device.name SPECTRUM 5VLR & 5VLRA -+driver.display |50-100|30-66 - - vendor.id AOC -&device.id eisa 0xe570 -+device.name SPECTRUM 5GLR -+driver.display |50-120|30-64 - - vendor.id AOC -&device.id eisa 0xe750 -+device.name SPECTRUM 7DLRA -+driver.display |50-120|30-68 - - vendor.id API -+vendor.name ACER - - vendor.id API -&device.id eisa 0x0037 -+device.name ACERVIEW 55 -+driver.display |55-90|31-70 - - vendor.id API -&device.id eisa 0x424c -+device.name ACERVIEW 76IE -+driver.display |50-110|30-69 - - vendor.id API -&device.id eisa 0x440b -+device.name ACERVIEW 11D -+driver.display |55-90|31-40 - - vendor.id API -&device.id eisa 0x4421 -+device.name ACERVIEW 33D -+driver.display |55-90|31-40 - - vendor.id API -&device.id eisa 0x4522 -+device.name ACERVIEW 7134E -+driver.display |55-90|31-60 - - vendor.id API -&device.id eisa 0x4536 -+device.name ACERVIEW 7154E -+driver.display |55-90|31-60 - - vendor.id API -&device.id eisa 0x4538 -+device.name ACERVIEW 7156E -+driver.display |55-90|31-70 - - vendor.id API -&device.id eisa 0x454c -+device.name ACERVIEW 7176IE -+driver.display |55-90|31-70 - - vendor.id API -&device.id eisa 0x454e -+device.name ACERVIEW 7178IE -+driver.display |55-90|31-90 - - vendor.id API -&device.id eisa 0x4938 -+device.name ACERVIEW 7156I -+driver.display |55-90|31-70 - - vendor.id API -&device.id eisa 0x494c -+device.name ACERVIEW 76I -+driver.display |55-90|31-70 - - vendor.id API -&device.id eisa 0x494e -+device.name ACERVIEW 78I -+driver.display |55-90|31-90 - - vendor.id API -&device.id eisa 0x4962 -+device.name ACERVIEW 98I -+driver.display |55-90|31-90 - - vendor.id API -&device.id eisa 0x4c21 -+device.name ACERVIEW 33DL -+driver.display |55-90|31-40 - - vendor.id API -&device.id eisa 0x4c22 -+device.name ACERVIEW 34TL -+driver.display |55-90|31-50 - - vendor.id API -&device.id eisa 0x4c37 -+device.name ACERVIEW 55L -+driver.display |55-90|31-70 - - vendor.id API -&device.id eisa 0x4c38 -+device.name ACERVIEW 56L -+driver.display |55-90|31-70 - - vendor.id API -&device.id eisa 0x4e4c -+device.name ACERVIEW 76N -+driver.display |55-90|31-70 - - vendor.id API -&device.id eisa 0x5321 -+device.name ACERVIEW 7133S -+driver.display |55-90|31-40 - - vendor.id API -&device.id eisa 0x5322 -+device.name ACERVIEW 7134S -+driver.display |55-90|31-60 - - vendor.id API -&device.id eisa 0x5336 -+device.name ACERVIEW 7154S -+driver.display |55-90|31-60 - - vendor.id API -&device.id eisa 0x5338 -+device.name ACERVIEW 7156IS -+driver.display |55-90|31-70 - - vendor.id API -&device.id eisa 0x534c -+device.name ACERVIEW 7176IS -+driver.display |55-90|31-70 - - vendor.id API -&device.id eisa 0x5422 -+device.name ACERVIEW 34T -+driver.display |55-90|31-50 - - vendor.id APP -+vendor.name Apple - - vendor.id APP -&device.id eisa 0x0352 -+device.name AppleVision 850 - - vendor.id APP -&device.id eisa 0x9214 -+driver.display |50-78|31-65 - - vendor.id APP -&device.id eisa 0x9d03 -+driver.display |58-75|31-60 - - vendor.id AST -+vendor.name AST - - vendor.id AST -&device.id eisa 0x8001 -+device.name 4V - - vendor.id AST -&device.id eisa 0x8002 -+device.name 4I -+driver.display |50-90|30-38 - - vendor.id AST -&device.id eisa 0x8003 -+device.name 4N -+driver.display |50-90|30-64 - - vendor.id AST -&device.id eisa 0x8004 -+device.name ASTVISION 4L -+driver.display |50-90|30-64 - - vendor.id AST -&device.id eisa 0x8005 -+device.name ASTVISION 5L -+driver.display |50-90|30-64 - - vendor.id AST -&device.id eisa 0x8006 -+device.name ASTVISION 7L -+driver.display |50-90|30-64 - - vendor.id AST -&device.id eisa 0x8007 -+device.name ASTVISION 7H -+driver.display |50-90|30-82 - - vendor.id AST -&device.id eisa 0x8008 -+device.name ASTVISION 20H -+driver.display |50-150|29-82 - - vendor.id AST -&device.id eisa 0x8009 -+device.name SABRE -+driver.display |50-90|30-64 - - vendor.id AST -&device.id eisa 0x800a -+device.name ASTVISION 5V -+driver.display |50-120|30-50 - - vendor.id BRG -+vendor.name BRIDGE - - vendor.id BRG -&device.id eisa 0x00ab -+device.name BM17C -+driver.display |50-160|30-70 - - vendor.id CPL -+vendor.name Alpha - - vendor.id CPL -&device.id eisa 0x096b -+device.name TH-450 - - vendor.id CPQ -+vendor.name COMPAQ - - vendor.id CPQ -&device.id eisa 0x0011+0x0006 -+device.name COMPAQ 1024 - - vendor.id CPQ -&device.id eisa 0x0017+0x0004 -+device.name COMPAQ PRB - - vendor.id CPQ -&device.id eisa 0x0020+0x0002 -+device.name COMPAQ PRB - - vendor.id CPQ -&device.id eisa 0x0022+0x0007 -+device.name 151FS - - vendor.id CPQ -&device.id eisa 0x0029+0x0004 -+device.name COMPAQ PRB - - vendor.id CPQ -&device.id eisa 0x002d+0x0007 -+device.name 171FS - - vendor.id CPQ -&device.id eisa 0x0040+0x0002 -+device.name QVISION 200 - - vendor.id CPQ -&device.id eisa 0x0042 -+device.name QVISION 172 - - vendor.id CPQ -&device.id eisa 0x0043+0x0006 -+device.name QVISION 200 - - vendor.id CPQ -&device.id eisa 0x0049 -+device.name QVISION 210 - - vendor.id CPQ -&device.id eisa 0x0100 -+device.name COMPAQ 1024 - - vendor.id CPQ -&device.id eisa 0x0146 -+device.name COMPAQ 1024 - - vendor.id CPQ -&device.id eisa 0x0147 -+device.name 1024 - - vendor.id CPQ -&device.id eisa 0x0346+0x0006 -+device.name 151FS - - vendor.id CPQ -&device.id eisa 0x0546+0x0004 -+device.name 171FS - - vendor.id CPQ -&device.id eisa 0x0746+0x0002 -+device.name COMPAQ PRB - - vendor.id CPQ -&device.id eisa 0x0846+0x0007 -+device.name COMPAQ PRA - - vendor.id CPQ -&device.id eisa 0x084d -+device.name PRESARIO 140 -+driver.display |48-80|31-49 - - vendor.id CPQ -&device.id eisa 0x0946+0x0004 -+device.name COMPAQ PRB - - vendor.id CPQ -&device.id eisa 0x0a46+0x0007 -+device.name COMPAQ PRA - - vendor.id CPQ -&device.id eisa 0x0a4d -+device.name PRESARIO 150 -+driver.display |48-80|31-49 - - vendor.id CPQ -&device.id eisa 0x0d46+0x0007 -+device.name COMPAQ 140 - - vendor.id CPQ -&device.id eisa 0x0d4d -+device.name 140 -+driver.display |48-80|31-49 - - vendor.id CPQ -&device.id eisa 0x0f46+0x0007 -+device.name COMPAQ 150 - - vendor.id CPQ -&device.id eisa 0x0f4d -+device.name 150 -+driver.display |48-80|31-49 - - vendor.id CPQ -&device.id eisa 0x1320 -+device.name P70 -+driver.display |48-150|30-92 - - vendor.id CPQ -&device.id eisa 0x1321 -+device.name P110 -+driver.display |48-160|30-107 - - vendor.id CPQ -&device.id eisa 0x1322 -+device.name V50 -+driver.display |50-125|30-60 - - vendor.id CPQ -&device.id eisa 0x1324 -+device.name TFT500 -+driver.display |57-85|32-60 - - vendor.id CPQ -&device.id eisa 0x1325 -+device.name V900- -+driver.display |48-160|30-96 - - vendor.id CPQ -&device.id eisa 0x1327 -+device.name P1610 -+driver.display |48-160|30-96 - - vendor.id CPQ -&device.id eisa 0x1329 -+device.name TFT8000- -+driver.display |58-85|31-80 - - vendor.id CPQ -&device.id eisa 0x1330 -+device.name P75 -+driver.display |50-150|30-85 - - vendor.id CPQ -&device.id eisa 0x1331 -+device.name V55 -+driver.display |48-125|30-60 - - vendor.id CPQ -&device.id eisa 0x1332 -+device.name V75 -+driver.display |48-125|30-69 - - vendor.id CPQ -&device.id eisa 0x1333 -+device.name TFT450 -+driver.display |57-85|32-60 - - vendor.id CPQ -&device.id eisa 0x1334 -+device.name V40 -+driver.display |50-100|31-48 - - vendor.id CPQ -&device.id eisa 0x1338 -+device.name V45 -+driver.display |50-100|31-48 - - vendor.id CPQ -&device.id eisa 0x1349 -+device.name S700- -+driver.display |50-160|30-70 - - vendor.id CPQ -&device.id eisa 0x1350 -+device.name S900- -+driver.display |50-160|30-95 - - vendor.id CPQ -&device.id eisa 0x170a -+device.name V70 -+driver.display |50-125|30-69 - - vendor.id CPQ -&device.id eisa 0x1730 -+device.name V90 -+driver.display |48-160|30-94 - - vendor.id CPQ -&device.id eisa 0x3012 -+device.name PRESARIO MV500- -+driver.display |50-90|31-54 - - vendor.id CPQ -&device.id eisa 0x3013 -+device.name PRESARIO MV700- -+driver.display |50-100|30-70 - - vendor.id CPQ -&device.id eisa 0x3014 -+device.name PRESARIO MV400- -+driver.display |50-90|31-50 - - vendor.id CTX -+vendor.name CTX - - vendor.id CTX -&device.id eisa 0x0150 -+device.name 1569 -+driver.display |50-130|30-70 - - vendor.id CTX -&device.id eisa 0x1451 -+device.name 1451 -+driver.display |45-90|30-50 - - vendor.id CTX -&device.id eisa 0x1551 -+device.name 1551 -+driver.display |45-90|30-50 - - vendor.id CTX -&device.id eisa 0x1562 -+device.name 1562 -+driver.display |45-90|30-62 - - vendor.id CTX -&device.id eisa 0x1565 -+device.name 1565 -+driver.display |45-90|30-65 - - vendor.id CTX -&device.id eisa 0x1569 -+device.name CTX 1569S 15-inch - - vendor.id CTX -&device.id eisa 0x1765 -+device.name 1765 -+driver.display |45-110|30-65 - - vendor.id CTX -&device.id eisa 0x1785 -+device.name 1785 -+driver.display |45-110|30-85 - - vendor.id CTX -&device.id eisa 0x2085 -+device.name 2085 -+driver.display |45-110|30-85 - - vendor.id CTX -&device.id eisa 0x2185 -+device.name 2185 -+driver.display |45-110|30-85 - - vendor.id CTX -&device.id eisa 0x3621 -+device.name VL700 -+driver.display |50-120|30-70 - - vendor.id DEC -+vendor.name DIGITAL - - vendor.id DEC -&device.id eisa 0x043a -+device.name (FR-PCXAV-AZ) (24 ZOLL) -+driver.display |50-160|30-96 - - vendor.id DEC -&device.id eisa 0x0479 -+device.name 19 ZOLL (FR-PCXAV-CY) -+driver.display |48-160|30-95 - - vendor.id DEC -&device.id eisa 0x047a -+device.name 19 ZOLL (FR-PCXAV-CZ) -+driver.display |48-160|30-95 - - vendor.id DEC -&device.id eisa 0x06fa -+device.name 21 ZOLL (FR-PCXAV-WZ) -+driver.display |50-152|30-95 - - vendor.id DEC -&device.id eisa 0x073a -+device.name 17 ZOLL (FR-PCXAV-YZ) -+driver.display |48-150|30-85 - - vendor.id DEC -&device.id eisa 0x770c -+device.name 14 ZOLL (FR-PCXCV-C*) -+driver.display |50-90|30-54 - - vendor.id DEC -&device.id eisa 0x970c -+device.name 15 ZOLL (FR-PCXCV-D*) -+driver.display |50-90|30-54 - - vendor.id DEC -&device.id eisa 0x9a06 -+device.name (FR-PCXAV-TZ) (19 ZOLL) -+driver.display |50-160|30-96 - - vendor.id DEC -&device.id eisa 0xba08 -+device.name 15 ZOLL (FR-PCXBV-E*) -+driver.display |50-110|30-69 - - vendor.id DEC -&device.id eisa 0xda08 -+device.name 17 ZOLL (FR-PCXBV-F*) -+driver.display |50-120|30-69 - - vendor.id DEL -+vendor.name DELL - - vendor.id DEL -&device.id eisa 0x139a+0x0003 -+device.name Dell Ultrascan 14XE - - vendor.id DEL -&device.id eisa 0x139d -+device.name ULTRASCAN 14XE -+driver.display |50-120|30-62 - - vendor.id DEL -&device.id eisa 0x1569 -+device.name 1569 -+driver.display |50-110|30-69 - - vendor.id DEL -&device.id eisa 0x2210+0x0003 -+device.name Dell Ultrascan V17X - - vendor.id DEL -&device.id eisa 0x2213 -+device.name ULTRASCAN V17X -+driver.display |50-130|30-85 - - vendor.id DEL -&device.id eisa 0x2214+0x0003 -+device.name Dell Ultrascan 21TE - - vendor.id DEL -&device.id eisa 0x2217 -+device.name ULTRASCAN 21TE -+driver.display |50-152|30-93 - - vendor.id DEL -&device.id eisa 0x3024+0x0003 -+device.name Dell VS17X - - vendor.id DEL -&device.id eisa 0x3027 -+device.name VS17X -+driver.display |50-120|30-65 - - vendor.id DEL -&device.id eisa 0x3276 -+device.name D1428L -+driver.display |43-75|31-48 - - vendor.id DEL -&device.id eisa 0x32fe -+device.name D828L -+driver.display |50-120|31-54 - - vendor.id DEL -&device.id eisa 0x3319 -+device.name 828FI -+driver.display |50-120|31-70 - - vendor.id DEL -&device.id eisa 0x4273 -+device.name V15X -+driver.display |55-90|47-64 - - vendor.id DEL -&device.id eisa 0x5033 -+device.name D825HT -+driver.display |50-120|31-70 - - vendor.id DEL -&device.id eisa 0x5062 -+device.name D1025HTX -+driver.display |50-120|31-70 - - vendor.id DEL -&device.id eisa 0x50dd -+device.name P990 -+driver.display |48-120|30-96 - - vendor.id DEL -&device.id eisa 0x512c -+device.name D825TM -+driver.display |50-120|30-70 - - vendor.id DEL -&device.id eisa 0x5155 -+device.name D1025TM -+driver.display |50-160|31-85 - - vendor.id DEL -&device.id eisa 0x515b -+device.name D1626HT -+driver.display |50-160|31-107 - - vendor.id DEL -&device.id eisa 0x5314 -+device.name D2026T -+driver.display |50-100|31-96 - - vendor.id DEL -&device.id eisa 0x5319 -+device.name 1726T-HS/D1025HT -+driver.display |50-100|31-85 - - vendor.id DEL -&device.id eisa 0x5697 -+device.name 800M -+driver.display |50-120|30-70 - - vendor.id DEL -&device.id eisa 0x602f -+device.name D2128-TCO -+driver.display |50-150|31-102 - - vendor.id DEL -&device.id eisa 0x6124 -+device.name D1025HE -+driver.display |50-120|31-92 - - vendor.id DEL -&device.id eisa 0x62ff -+device.name D825HR -+driver.display |50-120|31-70 - - vendor.id DEL -&device.id eisa 0x635e -+device.name ES-17 -+driver.display |50-100|31-85 - - vendor.id DEL -&device.id eisa 0x7077 -+device.name D1226H -+driver.display |50-160|30-95 - - vendor.id DEL -&device.id eisa 0x715d -+device.name 1500FP -+driver.display |56-75|30-61 - - vendor.id DEL -&device.id eisa 0x71a5 -+device.name M770 -+driver.display |48-160|30-69 - - vendor.id DEL -&device.id eisa 0x730b -+device.name D1028L -+driver.display |50-120|31-70 - - vendor.id DEL -&device.id eisa 0x8162 -+device.name TFT 1400FP -+driver.display |55-86|31-60 - - vendor.id DEL -&device.id eisa 0x93d5 -+device.name M1110 -+driver.display |50-160|30-107 - - vendor.id DPC -+vendor.name DELTA - - vendor.id DPC -&device.id eisa 0x0456 -+device.name Delta DA-456 - - vendor.id DPC -&device.id eisa 0x0570 -+device.name DA-570 -+driver.display |50-100|30-70 - - vendor.id DPC -&device.id eisa 0x0770 -+device.name DB-770 -+driver.display |50-100|30-70 - - vendor.id DPC -&device.id eisa 0x0995 -+device.name DA-995 -+driver.display |50-180|30-95 - - vendor.id DPC -&device.id eisa 0x1565 -+device.name DA-1565 -+driver.display |50-100|30-65 - - vendor.id DPC -&device.id eisa 0x1765 -+device.name DB-1765 -+driver.display |50-100|30-65 - - vendor.id DPC -&device.id eisa 0x1770 -+device.name DC-770 -+driver.display |50-120|30-70 - - vendor.id DPC -&device.id eisa 0x4570 -+device.name DE-570 -+driver.display |50-120|30-70 - - vendor.id DWE -+vendor.name DAEWOO - - vendor.id DWE -&device.id eisa 0x1423 -+device.name CMC-1423B1 -+driver.display |50-120|30-64 - - vendor.id DWE -&device.id eisa 0x1427 -+device.name CMC-1427X1 -+driver.display |50-100|30-48 - - vendor.id DWE -&device.id eisa 0x1502 -+device.name CMC-1502B1 -+driver.display |50-120|30-64 - - vendor.id DWE -&device.id eisa 0x1505 -+device.name CMC-1505X -+driver.display |50-100|30-50 - - vendor.id DWE -&device.id eisa 0x1507 -+device.name CMC-1507X1 -+driver.display |50-100|30-48 - - vendor.id DWE -&device.id eisa 0x1703 -+device.name CMC-1703B -+driver.display |50-120|30-64 - - vendor.id DWE -&device.id eisa 0x4312 -+device.name 431X -+driver.display |50-120|30-54 - - vendor.id DWE -&device.id eisa 0x5093 -+device.name 1509B -+driver.display |50-120|30-69 - - vendor.id DWE -&device.id eisa 0x5113 -+device.name 511B -+driver.display |50-120|30-69 - - vendor.id DWE -&device.id eisa 0x5123 -+device.name 512B -+driver.display |50-120|30-69 - - vendor.id DWE -&device.id eisa 0x5133 -+device.name Daewoo CMC-1511B - - vendor.id DWE -&device.id eisa 0x5182 -+device.name 518X -+driver.display |50-120|30-54 - - vendor.id DWE -&device.id eisa 0x5183 -+device.name 518B -+driver.display |50-120|30-69 - - vendor.id DWE -&device.id eisa 0x5193 -+device.name 519B -+driver.display |50-120|30-69 - - vendor.id DWE -&device.id eisa 0x7044 -+device.name CMC-1704C -+driver.display |50-150|24-86 - - vendor.id DWE -&device.id eisa 0x7053 -+device.name 1705B -+driver.display |50-120|30-69 - - vendor.id DWE -&device.id eisa 0x7073 -+device.name 707B -+driver.display |50-120|30-69 - - vendor.id DWE -&device.id eisa 0x7103 -+device.name 710B -+driver.display |50-160|30-69 - - vendor.id DWE -&device.id eisa 0x7104 -+device.name 710C -+driver.display |50-160|30-86 - - vendor.id DWE -&device.id eisa 0x9015 -+device.name 901D -+driver.display |50-160|30-95 - - vendor.id ECS -+vendor.name ECS - - vendor.id ECS -&device.id eisa 0x0001 -+device.name VERTOS 1401 -+driver.display |50-100|30-50 - - vendor.id ECS -&device.id eisa 0x0002 -+device.name VERTOS 1501 -+driver.display |50-100|24-64 - - vendor.id ECS -&device.id eisa 0x0003 -+device.name VERTOS 1502 -+driver.display |50-100|24-64 - - vendor.id ECS -&device.id eisa 0x0004 -+device.name VERTOS 1503 -+driver.display |50-100|24-64 - - vendor.id ECS -&device.id eisa 0x0005 -+device.name VERTOS 1700 -+driver.display |50-100|24-64 - - vendor.id ECS -&device.id eisa 0x0006 -+device.name VERTOS 1701 -+driver.display |50-100|24-82 - - vendor.id ECS -&device.id eisa 0x0007 -+device.name VERTOS 1702 -+driver.display |50-100|24-64 - - vendor.id ECS -&device.id eisa 0x0008 -+device.name VERTOS 2101 -+driver.display |50-100|24-90 - - vendor.id ECS -&device.id eisa 0x0009 -+device.name VERTOS 2102 -+driver.display |50-100|24-90 - - vendor.id EIZ -+vendor.name EIZO - - vendor.id EIZ -&device.id eisa 0x0200 -+device.name FLEXSCAN F351 - - vendor.id EIZ -&device.id eisa 0x0201 -+device.name FLEXSCAN F553 - - vendor.id EIZ -&device.id eisa 0x0202 -+device.name FLEXSCAN F563 - - vendor.id EIZ -&device.id eisa 0x0203 -+device.name FLEXSCAN F764 -+driver.display |55-160|30-90 - - vendor.id EIZ -&device.id eisa 0x0204 -+device.name FLEXSCAN F784 - - vendor.id EIZ -&device.id eisa 0x0206 -+device.name FLEXSCAN 6600 -+driver.display |70-90|56-110 - - vendor.id EIZ -&device.id eisa 0x0300 -+device.name FLEXSCAN 6500 -+driver.display |55-90|56-80 - - vendor.id EIZ -&device.id eisa 0x0302 -+device.name 9060S - - vendor.id EIZ -&device.id eisa 0x0303 -+device.name 9065S -+driver.display |50-90|30-50 - - vendor.id EIZ -&device.id eisa 0x0305 -+device.name FLEXSCAN T563 - - vendor.id EIZ -&device.id eisa 0x0306 -+device.name 9070S -+driver.display |50-90|20-50 - - vendor.id EIZ -&device.id eisa 0x0307 -+device.name 9080I -+driver.display |55-90|30-64 - - vendor.id EIZ -&device.id eisa 0x0308 -+device.name 9400I -+driver.display |55-90|30-65 - - vendor.id EIZ -&device.id eisa 0x0309 -+device.name 9500 -+driver.display |55-90|30-78 - - vendor.id EIZ -&device.id eisa 0x030a -+device.name FLEXSCAN F340IW - - vendor.id EIZ -&device.id eisa 0x030c -+device.name FLEXSCAN F552 - - vendor.id EIZ -&device.id eisa 0x030d -+device.name FLEXSCAN F560IW -+driver.display |55-90|30-82 - - vendor.id EIZ -&device.id eisa 0x030e -+device.name FLEXSCAN F750I -+driver.display |55-90|30-80 - - vendor.id EIZ -&device.id eisa 0x030f -+device.name FLEXSCAN F760IW -+driver.display |55-90|30-78 - - vendor.id EIZ -&device.id eisa 0x0310 -+device.name FLEXSCAN F780IW -+driver.display |55-120|45-100 - - vendor.id EIZ -&device.id eisa 0x0311 -+device.name FLEXSCAN T560I -+driver.display |55-90|30-82 - - vendor.id EIZ -&device.id eisa 0x0312 -+device.name FLEXSCAN T660I -+driver.display |55-90|30-78 - - vendor.id EIZ -&device.id eisa 0x0313 -+device.name FLEXSCAN T562 -+driver.display |55-90|30-82 - - vendor.id EIZ -&device.id eisa 0x0314 -+device.name FLEXSCAN T662 -+driver.display |55-160|30-85 - - vendor.id EIZ -&device.id eisa 0x038c -+device.name FLEXSCAN F550IW -+driver.display |55-90|30-65 - - vendor.id EIZ -&device.id eisa 0x1012 -+device.name FLEXSCAN L34 -+driver.display |50-85|24-61 - - vendor.id EIZ -&device.id eisa 0x1018 -+device.name FLEXSCAN F77S -+driver.display |50-160|30-110 - - vendor.id EIZ -&device.id eisa 0x1020 -+device.name FLEXSCAN F57 -+driver.display |50-160|30-96 - - vendor.id EIZ -&device.id eisa 0x1418 -+device.name NANAO FLEXSCAN FX-E7S -+driver.display |50-160|30-110 - - vendor.id EIZ -&device.id eisa 0x1420 -+device.name NANAO FLEXSCAN FX-C7 -+driver.display |50-160|30-96 - - vendor.id ELS -+vendor.name ELSA - - vendor.id ELS -&device.id eisa 0x4160 -+device.name ECOMO OFFICE -+driver.display |50-130|30-86 - - vendor.id ELS -&device.id eisa 0x7617 -+device.name ECOMO 22H99 -+driver.display |50-160|31-121 - - vendor.id FCM -+vendor.name FUNAI - - vendor.id FCM -&device.id eisa 0x3313 -+device.name 17GD -+driver.display |50-120|30-70 - - vendor.id FPA -+vendor.name FUJITSU - - vendor.id FPA -&device.id eisa 0x0612 -+device.name 1554G+ -+driver.display |50-120|30-54 - - vendor.id FPA -&device.id eisa 0x2d30 -+device.name 1568G1 -+driver.display |50-120|30-69 - - vendor.id FPA -&device.id eisa 0x2df9 -+device.name 1769G -+driver.display |50-120|30-69 - - vendor.id FUJ -+vendor.name FUJITSU - - vendor.id FUJ -&device.id eisa 0x0119 -+device.name X150F -+driver.display |56-75|31-60 - - vendor.id FUJ -&device.id eisa 0x2118 -+device.name X176 -+driver.display |50-200|30-100 - - vendor.id FUJ -&device.id eisa 0x2218 -+device.name X177 -+driver.display |50-150|30-92 - - vendor.id FUJ -&device.id eisa 0x2318 -+device.name X177A -+driver.display |50-150|30-92 - - vendor.id FUJ -&device.id eisa 0x3118 -+device.name E155 -+driver.display |50-100|30-54 - - vendor.id FUJ -&device.id eisa 0x5110 -+device.name FMV-DP98X1 -+driver.display |50-180|30-95 - - vendor.id FUJ -&device.id eisa 0x6110 -+device.name FMV-DP97X4 -+driver.display |50-120|30-92 - - vendor.id FUJ -&device.id eisa 0x6210 -+device.name FMVDP97X5(G)/FMVDP97X6 -+driver.display |50-150|30-92 - - vendor.id FUJ -&device.id eisa 0x7110 -+device.name FMV-DP84X2 -+driver.display |50-100|30-70 - - vendor.id FUJ -&device.id eisa 0x7210 -+device.name FMV-DP84X3(G) -+driver.display |50-120|30-70 - - vendor.id FUJ -&device.id eisa 0x8111 -+device.name VL-15TX1(G) - - vendor.id FUJ -&device.id eisa 0x9111 -+device.name VL-14TX1 - - vendor.id FUJ -&device.id eisa 0xa901 -+device.name FMV-DP97X2 -+driver.display |50-120|30-92 - - vendor.id FUJ -&device.id eisa 0xaa01 -+device.name FMV-DP97X3 -+driver.display |50-150|30-70 - - vendor.id FUJ -&device.id eisa 0xb801 -+device.name FMV-DP84X1 -+driver.display |50-100|30-70 - - vendor.id GSM -+vendor.name LG ELECTRONICS - - vendor.id GSM -&device.id eisa 0x36b4 -+device.name STUDIOWORKS 44M -+driver.display |50-90|30-50 - - vendor.id GSM -&device.id eisa 0x36b9 -+device.name STUDIOWORKS 44I -+driver.display |50-89|30-50 - - vendor.id GSM -&device.id eisa 0x36bb -+device.name STUDIOWORKS 45I -+driver.display |50-90|30-54 - - vendor.id GSM -&device.id eisa 0x3aa0 -+device.name 1505S -+driver.display |50-90|30-50 - - vendor.id GSM -&device.id eisa 0x3aa2 -+device.name STUDIOWORKS 56M -+driver.display |50-110|30-65 - - vendor.id GSM -&device.id eisa 0x3aa8 -+device.name STUDIOWORKS 56I -+driver.display |50-120|30-65 - - vendor.id GSM -&device.id eisa 0x3aaf -+device.name STUDIOWORKS 56T -+driver.display |50-120|30-65 - - vendor.id GSM -&device.id eisa 0x3ab0 -+device.name LG StudioWorks 5D - - vendor.id GSM -&device.id eisa 0x3ab6 -+device.name STUDIOWORKS 5D -+driver.display |50-120|30-65 - - vendor.id GSM -&device.id eisa 0x3abd -+device.name STUDIOWORKS 55I -+driver.display |50-90|30-54 - - vendor.id GSM -&device.id eisa 0x426c -+device.name STUDIOWORKS 78I - - vendor.id GSM -&device.id eisa 0x426d -+device.name STUDIOWORKS 78T -+driver.display |50-120|30-85 - - vendor.id GSM -&device.id eisa 0x426e -+device.name STUDIOWORKS 76I -+driver.display |50-110|30-65 - - vendor.id GSM -&device.id eisa 0x4273 -+device.name LG StudioWorks 76m - - vendor.id GSM -&device.id eisa 0x4274 -+device.name LG StudioWorks 78m - - vendor.id GSM -&device.id eisa 0x4277 -+device.name LG StudioWorks 74m - - vendor.id GSM -&device.id eisa 0x4278 -+device.name LG StudioWorks 74i - - vendor.id GSM -&device.id eisa 0x427e -+device.name STUDIOWORKS 7D -+driver.display |50-120|30-65 - - vendor.id GSM -&device.id eisa 0x427f -+device.name STUDIOWORKS 78D -+driver.display |50-120|30-85 - - vendor.id GSM -&device.id eisa 0x4280 -+device.name LG StudioWorks 78DT - - vendor.id GSM -&device.id eisa 0x4281 -+device.name LG StudioWorks 7DT - - vendor.id GSM -&device.id eisa 0x4284 -+device.name LG StudioWorks 76T - - vendor.id GSM -&device.id eisa 0x42cf -+device.name 1725S -+driver.display |50-120|30-65 - - vendor.id GSM -&device.id eisa 0x4e21 -+device.name STUDIOWORKS 20I -+driver.display |50-120|30-85 - - vendor.id GWY -+vendor.name GATEWAY - - vendor.id GWY -&device.id eisa 0x00c0 -+device.name VX900T -+driver.display |48-120|30-96 - - vendor.id GWY -&device.id eisa 0x044d -+device.name VX700 -+driver.display |50-130|30-86 - - vendor.id GWY -&device.id eisa 0x0454 -+device.name VX1100 -+driver.display |50-152|30-108 - - vendor.id GWY -&device.id eisa 0x0a8d -+device.name DESTINATION DL27 -+driver.display |50-90|24-40 - - vendor.id GWY -&device.id eisa 0x0e11 -+device.name DESTINATION DL36 -+driver.display |50-90|24-40 - - vendor.id GWY -&device.id eisa 0x138a -+device.name EV500 -+driver.display |50-110|30-70 - - vendor.id GWY -&device.id eisa 0x1b5c -+device.name EV700 -+driver.display |50-120|30-70 - - vendor.id GWY -&device.id eisa 0x7659 -+device.name EV700-H -+driver.display |50-120|30-70 - - vendor.id GWY -&device.id eisa 0x8883 -+device.name EV900 -+driver.display |50-160|30-95 - - vendor.id GWY -&device.id eisa 0x9095 -+device.name VX900 -+driver.display |50-160|30-95 - - vendor.id HEI -+vendor.name HYUNDAI - - vendor.id HEI -&device.id eisa 0x0b42 -+device.name DELUXSCAN 21 -+driver.display |45-100|30-82 - - vendor.id HEI -&device.id eisa 0x12f0 -+device.name DELUXSCAN 14S -+driver.display |50-120|30-48 - - vendor.id HEI -&device.id eisa 0x16d8 -+device.name DELUXSCAN 15B -+driver.display |50-120|30-48 - - vendor.id HEI -&device.id eisa 0x16e8 -+device.name DELUXSCAN 15G -+driver.display |50-90|30-64 - - vendor.id HEI -&device.id eisa 0x16ee -+device.name DELUXSCAN 15G+ -+driver.display |50-120|30-70 - - vendor.id HEI -&device.id eisa 0x1e02 -+device.name DELUXSCAN 17 PRO -+driver.display |45-100|30-82 - - vendor.id HEI -&device.id eisa 0x1eb8 -+device.name DELUXSCAN 17B -+driver.display |50-100|30-64 - - vendor.id HEI -&device.id eisa 0x1ebe -+device.name DELUXSCAN 17B+ -+driver.display |50-120|30-70 - - vendor.id HEI -&device.id eisa 0x5864 -+device.name DELUXSCAN 15 PRO -+driver.display |50-120|30-64 - - vendor.id HEI -&device.id eisa 0x768b -+device.name 7687 -+driver.display |50-150|30-87 - - vendor.id HEI -&device.id eisa 0xb81e -+device.name DELUXSCAN 17 -+driver.display |50-90|30-64 - - vendor.id HIG -+vendor.name HIGHSCREEN - - vendor.id HIG -&device.id eisa 0x5620 -+device.name DX1595 -+driver.display |50-120|30-65 - - vendor.id HIG -&device.id eisa 0x5624 -+device.name DX15T -+driver.display |50-100|30-64 - - vendor.id HIG -&device.id eisa 0x5626 -+device.name DX1795 -+driver.display |50-120|30-65 - - vendor.id HIT -+vendor.name HITACHI - - vendor.id HIT -&device.id eisa 0x1717 -+device.name ACCUVUE GX17L -+driver.display |50-100|30-64 - - vendor.id HIT -&device.id eisa 0x1727 -+device.name HM1764 -+driver.display |50-100|30-64 - - vendor.id HIT -&device.id eisa 0x1827 -+device.name HM1782 -+driver.display |50-100|30-82 - - vendor.id HIT -&device.id eisa 0x2147 -+device.name HM4721 -+driver.display |50-152|30-95 - - vendor.id HIT -&device.id eisa 0x2149 -+device.name HM4921 -+driver.display |50-152|30-107 - - vendor.id HIT -&device.id eisa 0x4020 -+device.name HM4020 -+driver.display |60-120|60-85 - - vendor.id HIT -&device.id eisa 0x4021 -+device.name HM4021 -+driver.display |60-120|60-85 - - vendor.id HIT -&device.id eisa 0x4711 -+device.name ACCUVUE UX4721 -+driver.display |50-152|30-95 - - vendor.id HIT -&device.id eisa 0x4810 -+device.name ACCUVUE GX20 -+driver.display |50-152|28-90 - - vendor.id HIT -&device.id eisa 0x4811 -+device.name ACCUVUE GX21 -+driver.display |50-152|28-90 - - vendor.id HIT -&device.id eisa 0x4820 -+device.name HM4820 -+driver.display |50-152|28-90 - - vendor.id HIT -&device.id eisa 0x4821 -+device.name HM4821 -+driver.display |50-152|28-90 - - vendor.id HIT -&device.id eisa 0x4830 -+device.name ACCUVUE GX20H -+driver.display |50-152|28-90 - - vendor.id HIT -&device.id eisa 0x4911 -+device.name ACCUVUE UX4921 -+driver.display |50-152|30-107 - - vendor.id HIT -&device.id eisa 0x6421 -+device.name HM6421 -+driver.display |72-77|100-102 - - vendor.id HIT -&device.id eisa 0x6811 -+device.name ACCUVUE UX6821 -+driver.display |50-152|30-107 - - vendor.id HIT -&device.id eisa 0x6821 -+device.name HM6821 -+driver.display |50-152|30-107 - - vendor.id HSL -+vendor.name HANSOL - - vendor.id HSL -&device.id eisa 0x0579 -+device.name ELECTRONICS MAZELLAN14PX -+driver.display |50-120|30-54 - - vendor.id HSL -&device.id eisa 0x057a -+device.name ELECTRONICS MAZELLAN400A -+driver.display |50-120|30-50 - - vendor.id HSL -&device.id eisa 0x05dd -+device.name ELECTRONICS MAZELLAN15AX -+driver.display |50-120|30-54 - - vendor.id HSL -&device.id eisa 0x05de -+device.name ELECTRONICS MAZELLAN500P -+driver.display |50-120|30-69 - - vendor.id HSL -&device.id eisa 0x06a5 -+device.name ELECTRONICS MAZELLAN700P -+driver.display |50-120|30-85 - - vendor.id HSL -&device.id eisa 0x06a6 -+device.name ELECTRONICS MAZELLAN700A -+driver.display |50-120|30-69 - - vendor.id HSL -&device.id eisa 0xa605 -+device.name ELECTRONICS MAZELLAN17PX -+driver.display |50-120|30-85 - - vendor.id HTC -+vendor.name HITACHI - - vendor.id HTC -&device.id eisa 0xab6f -+device.name LTD CM-1711M - - vendor.id HTC -&device.id eisa 0xabc2 -+device.name LTD CM-2112M -+driver.display |50-160|31-107 - - vendor.id HTC -&device.id eisa 0xabc7 -+device.name LTD CM-2111M -+driver.display |50-160|31-95 - - vendor.id HTC -&device.id eisa 0xabcc -+device.name LTD CM-2110M -+driver.display |50-160|31-85 - - vendor.id HTC -&device.id eisa 0xabe0 -+device.name LTD CM802 -+driver.display |50-160|31-100 - - vendor.id HTC -&device.id eisa 0xabe2 -+device.name LTD CM801 -+driver.display |50-160|31-96 - - vendor.id HTC -&device.id eisa 0xabe3 -+device.name LTD CM800 -+driver.display |50-160|31-89 - - vendor.id HTC -&device.id eisa 0xabea -+device.name LTD CM803 -+driver.display |50-160|31-115 - - vendor.id HTC -&device.id eisa 0xabf4 -+device.name LTD CM701 -+driver.display |50-160|31-96 - - vendor.id HTC -&device.id eisa 0xac13 -+device.name CM751 -+driver.display |50-160|30-94 - - vendor.id HTC -&device.id eisa 0xac15 -+device.name CM752 -+driver.display |50-160|31-101 - - vendor.id HTC -&device.id eisa 0xac22 -+device.name CM753 -+driver.display |50-160|31-107 - - vendor.id HTC -&device.id eisa 0xac46 -+device.name CM811 -+driver.display |50-160|31-96 - - vendor.id HTC -&device.id eisa 0xac47 -+device.name CM812 -+driver.display |50-160|31-107 - - vendor.id HTC -&device.id eisa 0xac48 -+device.name CM813 -+driver.display |50-160|31-115 - - vendor.id HTC -&device.id eisa 0xac49 -+device.name CM814 -+driver.display |50-160|31-125 - - vendor.id HTC -&device.id eisa 0xafc8 -+device.name LTD CM500 -+driver.display |50-100|30-69 - - vendor.id HTC -&device.id eisa 0xafce -+device.name CM500E -+driver.display |50-100|30-69 - - vendor.id HTC -&device.id eisa 0xafd2 -+device.name LTD CM600 -+driver.display |47-104|30-64 - - vendor.id HTC -&device.id eisa 0xafd7 -+device.name LTD CM611 -+driver.display 1152x870|50-120|31-92 - - vendor.id HTC -&device.id eisa 0xafdd -+device.name CM620 -+driver.display |47-130|31-69 - - vendor.id HTC -&device.id eisa 0xafe2 -+device.name CM630 -+driver.display |47-130|31-86 - - vendor.id HTC -&device.id eisa 0xafec -+device.name CM641 -+driver.display |50-130|31-95 - - vendor.id HWP -+vendor.name HP - - vendor.id HWP -&device.id eisa 0x0af0 -+device.name D2800A 21 -+driver.display |50-160|30-82 - - vendor.id HWP -&device.id eisa 0x0af6 -+device.name D2806A 15 -+driver.display |50-100|30-64 - - vendor.id HWP -&device.id eisa 0x0af8 -+device.name HP D2808 1024 Low Emission - - vendor.id HWP -&device.id eisa 0x0aff -+device.name D1815A 14 1024 - - vendor.id HWP -&device.id eisa 0x0b0a -+device.name D2826-MONITOR (15 ZOLL) -+driver.display |50-120|31-54 - - vendor.id HWP -&device.id eisa 0x0b10 -+device.name D2832A -+driver.display |50-120|30-70 - - vendor.id HWP -&device.id eisa 0x0b13 -+device.name D2835 -+driver.display |50-160|30-69 - - vendor.id HWP -&device.id eisa 0x0b16 -+device.name HP D2838 M700 17" -+driver.display |50-160|30-86 - - vendor.id HWP -&device.id eisa 0x0b18 -+device.name D2840 ERGO 1280 -+driver.display |50-150|31-92 - - vendor.id HWP -&device.id eisa 0x0b1d -+device.name D2845 ERGO 1600 - - vendor.id HWP -&device.id eisa 0x0b1e -+device.name HP D2846 21 -+driver.display 1600x1200|50-160|30-107|230 - - vendor.id HWP -&device.id eisa 0x0f11 -+device.name D3857A 15 - - vendor.id HWP -&device.id eisa 0x0f12 -+device.name D3858A 14 - - vendor.id IBM -+vendor.name IBM - - vendor.id IBM -&device.id eisa 0x0844 -+device.name 2116 MM55 MULTIMEDIA -+driver.display |50-120|30-69 - - vendor.id IBM -&device.id eisa 0x0850 -+device.name 2128 MM75 MULTIMEDIA -+driver.display |50-160|30-69 - - vendor.id IBM -&device.id eisa 0x08bb -+device.name 2235 C50 -+driver.display |50-120|30-54 - - vendor.id IBM -&device.id eisa 0x08bd -+device.name 2237 C71 -+driver.display |50-120|30-69 - - vendor.id IBM -&device.id eisa 0x0a2e -+device.name THINKPAD TFT -+driver.display |50-65|40-60 - - vendor.id IBM -&device.id eisa 0x0a41 -+device.name THINKPAD DSTN -+driver.display |50-65|40-60 - - vendor.id IBM -&device.id eisa 0x0a4b -+device.name THINKPAD TFT -+driver.display |50-65|40-60 - - vendor.id IBM -&device.id eisa 0x0a50 -+device.name THINKPAD DSTN -+driver.display |50-65|40-60 - - vendor.id IBM -&device.id eisa 0x0a55 -+device.name THINKPAD TFT -+driver.display |50-65|40-60 - - vendor.id IBM -&device.id eisa 0x198c -+device.name 6540 G42 -+driver.display |55-100|30-50 - - vendor.id IBM -&device.id eisa 0x198d -+device.name 6541 G51 -+driver.display |55-100|30-54 - - vendor.id IBM -&device.id eisa 0x198e -+device.name G41 - - vendor.id IBM -&device.id eisa 0x198f -+device.name G50 - - vendor.id IBM -&device.id eisa 0x1990 -+device.name G70 -+driver.display |50-105|31-64 - - vendor.id IBM -&device.id eisa 0x1991 -+device.name G200 -+driver.display |50-120|31-82 - - vendor.id IBM -&device.id eisa 0x1992 -+device.name 6546 G52 -+driver.display |50-120|30-69 - - vendor.id IBM -&device.id eisa 0x1993 -+device.name 6547 G72 -+driver.display |50-120|30-69 - - vendor.id IBM -&device.id eisa 0x1995 -+device.name 6549 G94 -+driver.display |50-160|30-95 - - vendor.id IBM -&device.id eisa 0x1999 -+device.name P50 -+driver.display |50-120|30-69 - - vendor.id IBM -&device.id eisa 0x199a -+device.name P70 -+driver.display |50-120|29-82 - - vendor.id IBM -&device.id eisa 0x199b -+device.name P200 -+driver.display |50-120|29-90 - - vendor.id IBM -&device.id eisa 0x199c -+device.name 6556 P72 -+driver.display |50-150|30-85 - - vendor.id IBM -&device.id eisa 0x199d -+device.name 6557 P92 -+driver.display |50-160|30-94 - - vendor.id IBM -&device.id eisa 0x199e -+device.name 6558 P202 -+driver.display |50-160|30-107 - - vendor.id IBM -&device.id eisa 0x1bb7 -+device.name 7095 -+driver.display |50-120|30-69 - - vendor.id IBM -&device.id eisa 0x1bb9 -+device.name 7097 -+driver.display |50-120|30-69 - - vendor.id IBM -&device.id eisa 0x2112 -+device.name 2112 -+driver.display |50-80|31-38 - - vendor.id IBM -&device.id eisa 0x2113 -+device.name 2113 -+driver.display |50-80|31-38 - - vendor.id IBM -&device.id eisa 0x2114 -+device.name 2114 -+driver.display |50-120|31-62 - - vendor.id IBM -&device.id eisa 0x2115 -+device.name 2115 -+driver.display |50-120|31-62 - - vendor.id IBM -&device.id eisa 0x2117 -+device.name 2117 -+driver.display |50-120|31-65 - - vendor.id IBM -&device.id eisa 0x2215 -+device.name 2215 -+driver.display |50-120|31-64 - - vendor.id IBM -&device.id eisa 0x2221 -+device.name 2122 -+driver.display |50-120|30-54 - - vendor.id IBM -&device.id eisa 0x2236 -+device.name 2236 -+driver.display |50-120|30-70 - - vendor.id IBM -&device.id eisa 0x2238 -+device.name 2238 -+driver.display |50-80|31-38 - - vendor.id IBM -&device.id eisa 0x2248 -+device.name 2248 -+driver.display |50-100|31-48 - - vendor.id IBM -&device.id eisa 0x2264 -+device.name 2264 -+driver.display |50-120|31-64 - - vendor.id IBM -&device.id eisa 0x2421 -+device.name 2124 -+driver.display |50-120|30-54 - - vendor.id IBM -&device.id eisa 0x2529 -+device.name 9513 T55A TFT-MONITOR -+driver.display |56-75|30-61 - - vendor.id IBM -&device.id eisa 0x252a -+device.name 9514-B TFT -+driver.display |55-75|31-65 - - vendor.id IBM -&device.id eisa 0x2535 -+device.name 9525-0X1 -+driver.display |50-110|30-64 - - vendor.id IBM -&device.id eisa 0x254a -+device.name THINKPAD LCD -+driver.display |50-65|40-60 - - vendor.id IBM -&device.id eisa 0x254c -+device.name THINKPAD TFT -+driver.display |50-65|40-60 - - vendor.id IBM -&device.id eisa 0x2621 -+device.name 2126 -+driver.display |50-110|30-69 - - vendor.id IBM -&device.id eisa 0x26ac -+device.name APTIVA 9900 -+driver.display |50-120|30-54 - - vendor.id IBM -&device.id eisa 0x2721 -+device.name 2127 -+driver.display |50-120|30-72 - - vendor.id IBM -&device.id eisa 0x27ad -+device.name APTIVA 9901 -+driver.display |50-120|30-54 - - vendor.id IBM -&device.id eisa 0x3121 -+device.name 2131 -+driver.display |50-120|30-69 - - vendor.id IBM -&device.id eisa 0x3221 -+device.name 2132 -+driver.display |50-120|30-72 - - vendor.id IBM -&device.id eisa 0x6312 -+device.name 6312 -+driver.display |47-100|31-50 - - vendor.id IBM -&device.id eisa 0x6314 -+device.name 6314 -+driver.display |50-120|30-60 - - vendor.id IBM -&device.id eisa 0x6315 -+device.name 6315 - - vendor.id IBM -&device.id eisa 0x6317 -+device.name 6317 -+driver.display |50-110|30-64 - - vendor.id IBM -&device.id eisa 0x6319 -+device.name 6319 -+driver.display |50-120|30-60 - - vendor.id IBM -&device.id eisa 0x6321 -+device.name 6321 - - vendor.id IBM -&device.id eisa 0x6322 -+device.name 6322 - - vendor.id IBM -&device.id eisa 0x6324 -+device.name 6324 -+driver.display |50-110|30-64 - - vendor.id IBM -&device.id eisa 0x6325 -+device.name 6325 -+driver.display |50-110|30-64 - - vendor.id IBM -&device.id eisa 0x6327 -+device.name 6327 -+driver.display |50-130|30-64 - - vendor.id IBM -&device.id eisa 0x7234 -+device.name 2122-XXL -+driver.display |50-110|30-54 - - vendor.id IBM -&device.id eisa 0x7254 -+device.name 2124-XXL -+driver.display |50-110|30-54 - - vendor.id IBM -&device.id eisa 0x8504 -+device.name 8504 - - vendor.id IBM -&device.id eisa 0x8511 -+device.name 8511 - - vendor.id IBM -&device.id eisa 0x8512 -+device.name 8512 - - vendor.id IBM -&device.id eisa 0x8513 -+device.name 8513 - - vendor.id IBM -&device.id eisa 0x8514 -+device.name 8514 - - vendor.id IBM -&device.id eisa 0x8515 -+device.name 8515 - - vendor.id IBM -&device.id eisa 0x8517 -+device.name 8517 - - vendor.id IBM -&device.id eisa 0x8518 -+device.name 8518 - - vendor.id IBM -&device.id eisa 0x9504 -+device.name 9504 - - vendor.id IBM -&device.id eisa 0x9515 -+device.name 9515 - - vendor.id IBM -&device.id eisa 0x9517 -+device.name 9517 -+driver.display |50-90|27-59 - - vendor.id IBM -&device.id eisa 0x9518 -+device.name 9518 - - vendor.id IBM -&device.id eisa 0x9521 -+device.name 9521 -+driver.display |50-110|30-82 - - vendor.id IBM -&device.id eisa 0x9524 -+device.name 9524 -+driver.display |50-110|30-64 - - vendor.id IBM -&device.id eisa 0x9525 -+device.name 9525 -+driver.display |50-110|30-64 - - vendor.id IBM -&device.id eisa 0x9527 -+device.name 9527 -+driver.display |50-110|30-82 - - vendor.id ICL -+vendor.name FUJITSU - - vendor.id ICL -&device.id eisa 0x0100 -+device.name ICL ERGOPRO 211V -+driver.display |50-120|24-82 - - vendor.id ICL -&device.id eisa 0x0200 -+device.name ICL ERGOPRO 171P -+driver.display |50-110|30-82 - - vendor.id ICL -&device.id eisa 0x0400 -+device.name ICL ERGOPRO 171V -+driver.display |50-100|30-64 - - vendor.id ICL -&device.id eisa 0x0700 -+device.name ICL ERGOPRO 151P -+driver.display |48-100|30-64 - - vendor.id ICL -&device.id eisa 0x0800 -+device.name ICL ERGOPRO 151P AUTOBRITE -+driver.display |48-100|30-64 - - vendor.id ICL -&device.id eisa 0x0a00 -+device.name ICL ERGOPRO 151V -+driver.display |50-100|30-64 - - vendor.id ICL -&device.id eisa 0x0b00 -+device.name ICL ERGOPRO 141V - - vendor.id ICL -&device.id eisa 0x0d00 -+device.name ICL ERGOPRO 141P - - vendor.id ICL -&device.id eisa 0x0f00 -+device.name ICL ERGOPRO 152V -+driver.display |50-100|30-64 - - vendor.id ICL -&device.id eisa 0x1400 -+device.name ICL ERGOPRO 142V - - vendor.id ICL -&device.id eisa 0x1600 -+device.name ICL ERGOPRO E153 -+driver.display |50-100|30-66 - - vendor.id ICL -&device.id eisa 0x1900 -+device.name ICL ERGOPRO X173 -+driver.display |48-100|31-85 - - vendor.id ICL -&device.id eisa 0x1a00 -+device.name ICL ERGOPRO X173A -+driver.display |48-100|31-85 - - vendor.id ICL -&device.id eisa 0x1c00 -+device.name ICL ERGOPRO X152 -+driver.display |50-100|30-65 - - vendor.id ICL -&device.id eisa 0x1d00 -+device.name ICL ERGOPRO E173 -+driver.display |50-120|30-65 - - vendor.id ICL -&device.id eisa 0x2100 -+device.name ERGOPRO X153 -+driver.display |50-160|30-69 - - vendor.id ICL -&device.id eisa 0x2200 -+device.name ERGOPRO E154 -+driver.display |50-100|30-54 - - vendor.id ICL -&device.id eisa 0x2300 -+device.name ERGOPRO E174 -+driver.display |50-160|30-69 - - vendor.id ICL -&device.id eisa 0x2400 -+device.name ERGOPRO X174 -+driver.display |50-150|30-92 - - vendor.id ICL -&device.id eisa 0x2500 -+device.name E175 -+driver.display |50-120|30-85 - - vendor.id ICL -&device.id eisa 0x2700 -+device.name E213 -+driver.display |50-150|30-107 - - vendor.id ICL -&device.id eisa 0x2800 -+device.name X191 -+driver.display |50-160|30-96 - - vendor.id ICL -&device.id eisa 0x2900 -+device.name X154 -+driver.display |50-120|30-70 - - vendor.id ICL -&device.id eisa 0x2a00 -+device.name E176 -+driver.display |50-120|30-70 - - vendor.id IVM -+vendor.name IIYAMA - - vendor.id IVM -&device.id eisa 0x1501 -+device.name VISION MASTER -+driver.display |50-160|27-69 - - vendor.id IVM -&device.id eisa 0x1700 -+device.name VISION MASTER (1700) -+driver.display |50-160|27-86 - - vendor.id IVM -&device.id eisa 0x1701 -+device.name VISION MASTER (1701) -+driver.display |50-160|27-86 - - vendor.id IVM -&device.id eisa 0x1702 -+device.name VISION MASTER 400 (2) -+driver.display |50-160|27-96 - - vendor.id IVM -&device.id eisa 0x1703 -+device.name VISION MASTER 400 -+driver.display |50-160|27-96 - - vendor.id IVM -&device.id eisa 0x1711 -+device.name VISION MASTER PRO 400 -+driver.display |50-160|27-96 - - vendor.id IVM -&device.id eisa 0x1740 -+device.name VISION MASTER PRO 410 -+driver.display |50-160|27-96 - - vendor.id IVM -&device.id eisa 0x17a8 -+device.name S700JT1 -+driver.display |50-100|27-90 - - vendor.id IVM -&device.id eisa 0x1900 -+device.name VISION MASTER 450 -+driver.display |50-160|27-102 - - vendor.id IVM -&device.id eisa 0x1901 -+device.name VISION MASTER PRO 450 -+driver.display 1600x1200|50-160|25-115|230 - - vendor.id IVM -&device.id eisa 0x1918 -+device.name VISION MASTER PRO 451 -+driver.display |50-160|27-110 - - vendor.id IVM -&device.id eisa 0x2110 -+device.name VISION MASTER 501 -+driver.display |50-160|27-96 - - vendor.id IVM -&device.id eisa 0x2118 -+device.name VISION MASTER PRO 501 -+driver.display |50-160|27-96 - - vendor.id IVM -&device.id eisa 0x2120 -+device.name VISION MASTER 502 -+driver.display |50-160|27-110 - - vendor.id IVM -&device.id eisa 0x2128 -+device.name VISION MASTER PRO 502 -+driver.display |50-160|27-110 - - vendor.id IVM -&device.id eisa 0x2130 -+device.name VISION MASTER PRO -+driver.display |50-160|24-94 - - vendor.id IVM -&device.id eisa 0x3601 -+device.name PROLITE36 (3601) - - vendor.id IVM -&device.id eisa 0x3602 -+device.name PROLITE36 - - vendor.id IVM -&device.id eisa 0x3801 -+device.name PROLITE38 - - vendor.id IVM -&device.id eisa 0x3808 -+device.name PROLITE38C - - vendor.id IVM -&device.id eisa 0x3900 -+device.name PROLITE39 - - vendor.id IVM -&device.id eisa 0x4600 -+device.name PROLITE46 - - vendor.id KDS -+vendor.name KOREA - - vendor.id KDS -&device.id eisa 0x05ac -+device.name DATA SYSTEMS VISUAL SENSATION VS-4(KD-1452) -+driver.display |40-120|28-50 - - vendor.id KDS -&device.id eisa 0x05af -+device.name DATA SYSTEMS VISUAL SENSATION VS-4D -+driver.display |40-120|28-55 - - vendor.id KDS -&device.id eisa 0x05e6 -+device.name DATA SYSTEMS VISUAL SENSATION VS-5/VS-51/VSX-5 -+driver.display |50-120|30-70 - - vendor.id KDS -&device.id eisa 0x05f5 -+device.name DATA SYSTEMS VISUAL SENSATION VS-55 -+driver.display |40-120|28-55 - - vendor.id KDS -&device.id eisa 0x06c2 -+device.name DATA SYSTEMS VISUAL SENSATION VS-7/VSX-7 -+driver.display |50-120|30-70 - - vendor.id KDS -&device.id eisa 0x06d6 -+device.name DATA SYSTEMS VISUAL SENSATION VS-9 -+driver.display |50-120|31-95 - - vendor.id KDS -&device.id eisa 0x07d0 -+device.name DATA SYSTEMS VISUAL SENSATION VS-19 -+driver.display |50-120|31-95 - - vendor.id KDS -&device.id eisa 0x0834 -+device.name DATA SYSTEMS VISUAL SENSATION VS-21 -+driver.display |50-160|30-117 - - vendor.id KDS -&device.id eisa 0x1540 -+device.name DATA SYSTEMS AVITRON AV-5T -+driver.display |50-120|30-70 - - vendor.id KDS -&device.id eisa 0x1740 -+device.name DATA SYSTEMS AVITRON AV-7T -+driver.display |50-120|30-70 - - vendor.id KDS -&device.id eisa 0x1980 -+device.name DATA SYSTEMS VISUAL SENSATION VS-195 -+driver.display |50-120|30-95 - - vendor.id KDS -&device.id eisa 0x1981 -+device.name DATA SYSTEMS VISUAL SENSATION VS-19SN -+driver.display |50-120|30-95 - - vendor.id LKM -+vendor.name AZALEA - - vendor.id LNK -+vendor.name LINK Technologies, Inc. - - vendor.id MAG -+vendor.name MAGIC - - vendor.id MAG -&device.id eisa 0x4577 -+device.name D410 -+driver.display |50-100|30-54 - - vendor.id MAG -&device.id eisa 0x5620 -+device.name DX-1595 -+driver.display |50-120|30-64 - - vendor.id MAG -&device.id eisa 0x5624 -+device.name DX-15T -+driver.display |50-120|30-64 - - vendor.id MAG -&device.id eisa 0x5626 -+device.name DX1795 - - vendor.id MAG -&device.id eisa 0x5775 -+device.name DJ530 -+driver.display |50-120|30-70 - - vendor.id MAG -&device.id eisa 0x5776 -+device.name XJ530 -+driver.display |50-120|30-70 - - vendor.id MAG -&device.id eisa 0x5779 -+device.name XJ500T -+driver.display |50-120|30-70 - - vendor.id MAG -&device.id eisa 0x5781 -+device.name DX500T -+driver.display |50-120|30-70 - - vendor.id MAG -&device.id eisa 0x5801 -+device.name XJ500 -+driver.display |50-120|30-70 - - vendor.id MAG -&device.id eisa 0x7626 -+device.name DX-1795 -+driver.display |50-120|30-64 - - vendor.id MAG -&device.id eisa 0x7740 -+device.name DX-700T -+driver.display |50-120|30-70 - - vendor.id MAG -&device.id eisa 0x7752 -+device.name DJ707 -+driver.display |50-120|30-70 - - vendor.id MAG -&device.id eisa 0x7771 -+device.name XJ700 -+driver.display |50-120|30-70 - - vendor.id MAG -&device.id eisa 0x7772 -+device.name XJ707 -+driver.display |50-120|30-70 - - vendor.id MAG -&device.id eisa 0x7780 -+device.name XJ700T -+driver.display |50-120|30-70 - - vendor.id MAG -&device.id eisa 0x7842 -+device.name DX715T -+driver.display |50-120|30-86 - - vendor.id MAG -&device.id eisa 0x7854 -+device.name DJ717 -+driver.display |50-160|30-86 - - vendor.id MAG -&device.id eisa 0x7874 -+device.name XJ717 -+driver.display |50-160|30-86 - - vendor.id MAG -&device.id eisa 0x8997 -+device.name XJ810 -+driver.display |50-160|30-95 - - vendor.id MAX -+vendor.name BELINEA - - vendor.id MAX -&device.id eisa 0x0582 -+device.name 101410 -+driver.display |50-77|24-61 - - vendor.id MAX -&device.id eisa 0x05e6 -+device.name 101510 -+driver.display |50-77|30-61 - - vendor.id MAX -&device.id eisa 0x05f0 -+device.name 101520 - - vendor.id MAX -&device.id eisa 0x05fa -+device.name 101530 -+driver.display |50-85|30-70 - - vendor.id MAX -&device.id eisa 0x060e -+device.name 101550 -+driver.display |50-85|30-70 - - vendor.id MAX -&device.id eisa 0x0712 -+device.name 101810 -+driver.display |50-85|31-80 - - vendor.id MAX -&device.id eisa 0x07e4 -+device.name 102020 -+driver.display 1152x864|50-120|30-70|86 - - vendor.id MAX -&device.id eisa 0x07ee -+device.name 102030 -+driver.display |50-120|30-70 - - vendor.id MAX -&device.id eisa 0x07fa -+device.name 102010 -+driver.display |50-120|30-54 - - vendor.id MAX -&device.id eisa 0x0bc2 -+device.name 103010 -+driver.display |50-120|30-70 - - vendor.id MAX -&device.id eisa 0x0bc7 -+device.name 103015 -+driver.display |50-120|30-70 - - vendor.id MAX -&device.id eisa 0x0bcc -+device.name 103020 -+driver.display |50-120|30-70 - - vendor.id MAX -&device.id eisa 0x0bd6 -+device.name 103030 -+driver.display |50-150|30-70 - - vendor.id MAX -&device.id eisa 0x0be0 -+device.name 103040 -+driver.display |50-150|30-86 - - vendor.id MAX -&device.id eisa 0x0bea -+device.name 103050 -+driver.display 1280x1024|50-160|30-95 - - vendor.id MAX -&device.id eisa 0x0bf4 -+device.name 103060 -+driver.display |50-150|30-95 - - vendor.id MAX -&device.id eisa 0x0bfe -+device.name 103070 -+driver.display |50-160|30-95 - - vendor.id MAX -&device.id eisa 0x0faa -+device.name 104010 -+driver.display |50-120|30-54 - - vendor.id MAX -&device.id eisa 0x0fc8 -+device.name 104040 -+driver.display |50-90|30-38 - - vendor.id MAX -&device.id eisa 0x0fe1 -+device.name 104065 -+driver.display |50-120|30-50 - - vendor.id MAX -&device.id eisa 0x13a6 -+device.name 105030 -+driver.display |50-100|30-64 - - vendor.id MAX -&device.id eisa 0x13ab -+device.name 105035 -+driver.display 1024x768|50-120|30-69 - - vendor.id MAX -&device.id eisa 0x13b5 -+device.name 105045 -+driver.display |50-120|30-70 - - vendor.id MAX -&device.id eisa 0x13b6 -+device.name 105046 -+driver.display |50-120|30-70 - - vendor.id MAX -&device.id eisa 0x13ba -+device.name 105050 -+driver.display |50-100|30-64 - - vendor.id MAX -&device.id eisa 0x13d3 -+device.name 105075 -+driver.display |50-120|30-69 - - vendor.id MAX -&device.id eisa 0x13d4 -+device.name 105076 -+driver.display |50-120|30-69 - - vendor.id MAX -&device.id eisa 0x13d8 -+device.name 105080 -+driver.display |50-120|30-70 - - vendor.id MAX -&device.id eisa 0x15ae -+device.name 105550 -+driver.display |50-120|24-69 - - vendor.id MAX -&device.id eisa 0x15c2 -+device.name 105570 -+driver.display |50-120|30-69 - - vendor.id MAX -&device.id eisa 0x15c7 -+device.name 105575 -+driver.display |50-120|30-69 - - vendor.id MAX -&device.id eisa 0x15c8 -+device.name 105576 -+driver.display |50-120|30-69 - - vendor.id MAX -&device.id eisa 0x15d2 -+device.name 105586 -+driver.display |50-120|30-69 - - vendor.id MAX -&device.id eisa 0x15d6 -+device.name 105590 -+driver.display |50-120|30-85 - - vendor.id MAX -&device.id eisa 0x15db -+device.name 105595 -+driver.display |50-120|30-85 - - vendor.id MAX -&device.id eisa 0x15dc -+device.name 105596 -+driver.display |50-120|30-85 - - vendor.id MAX -&device.id eisa 0x1784 -+device.name 106020 -+driver.display |50-150|30-95 - - vendor.id MAX -&device.id eisa 0x17a2 -+device.name 106050 -+driver.display |50-120|30-85 - - vendor.id MAX -&device.id eisa 0x17ac -+device.name 106060 -+driver.display |50-160|30-95 - - vendor.id MAX -&device.id eisa 0x17b6 -+device.name 106070 -+driver.display |50-180|30-95 - - vendor.id MAX -&device.id eisa 0x17ca -+device.name 106090 -+driver.display |50-150|30-95 - - vendor.id MAX -&device.id eisa 0x1b62 -+device.name 107010 -+driver.display |50-160|30-69 - - vendor.id MAX -&device.id eisa 0x1b67 -+device.name 107015 -+driver.display |50-160|30-70 - - vendor.id MAX -&device.id eisa 0x1b6c -+device.name 107020 -+driver.display |50-120|30-70 - - vendor.id MAX -&device.id eisa 0x1b71 -+device.name 107025 -+driver.display |50-180|30-70 - - vendor.id MAX -&device.id eisa 0x1b76 -+device.name 107030 -+driver.display |50-160|30-86 - - vendor.id MAX -&device.id eisa 0x1b7b -+device.name 107035 -+driver.display |50-180|30-95 - - vendor.id MAX -&device.id eisa 0x1b80 -+device.name 107040 -+driver.display |50-120|30-85 - - vendor.id MAX -&device.id eisa 0x1b8a -+device.name 107050 -+driver.display |50-160|30-95 - - vendor.id MAX -&device.id eisa 0x1b94 -+device.name 107060 -+driver.display |50-120|30-70 - - vendor.id MAX -&device.id eisa 0x1b99 -+device.name 107065 -+driver.display |50-160|30-95 - - vendor.id MAX -&device.id eisa 0x1f4a -+device.name 108010 -+driver.display |50-160|30-115 - - vendor.id MAX -&device.id eisa 0x1f4f -+device.name 108015 -+driver.display |50-160|30-115 - - vendor.id MAX -&device.id eisa 0x1f54 -+device.name 108020 -+driver.display |50-160|30-107 - - vendor.id MAX -&device.id eisa 0x1f72 -+device.name 108050 -+driver.display |50-160|30-95 - - vendor.id MAX -&device.id eisa 0x1f7c -+device.name 108060 -+driver.display |50-160|30-115 - - vendor.id MAX -&device.id eisa 0x1f9a -+device.name 108090 -+driver.display |50-160|30-95 - - vendor.id MAX -&device.id eisa 0x1f9f -+device.name 108095 -+driver.display |50-160|30-95 - - vendor.id MAX -&device.id eisa 0x3430 -+device.name 105540 -+driver.display |50-90|30-64 - - vendor.id MAX -&device.id eisa 0x3539 -+device.name 105095 -+driver.display |55-90|30-64 - - vendor.id MAX -&device.id eisa 0x4065 -+device.name 10 40 65 -+driver.display |50-120|30-50 - - vendor.id MAX -&device.id eisa 0x5620 -+device.name 105065 -+driver.display |50-100|30-64 - - vendor.id MAX -&device.id eisa 0x5624 -+device.name 105066 -+driver.display |50-120|30-64 - - vendor.id MAX -&device.id eisa 0x7555 -+device.name 10 55 75 -+driver.display |50-120|30-69 - - vendor.id MEI -+vendor.name PANASONIC - - vendor.id MEI -&device.id eisa 0x0c81 -+device.name P70 -+driver.display |50-180|30-95 - - vendor.id MEI -&device.id eisa 0x0c96 -+device.name SL70I(TX-D7S36) -+driver.display |50-180|30-70 - - vendor.id MEI -&device.id eisa 0x0c9b -+device.name PL70I(TX-D7S55) -+driver.display |50-180|30-97 - - vendor.id MEI -&device.id eisa 0x1007 -+device.name PF70 -+driver.display |50-160|30-86 - - vendor.id MEI -&device.id eisa 0x120d -+device.name SL90 (TX-D9S54) -+driver.display |50-180|30-95 - - vendor.id MEI -&device.id eisa 0x1604 -+device.name TX-D2151W-ES -+driver.display |50-160|30-82 - - vendor.id MEI -&device.id eisa 0x1610 -+device.name TX-D2151NM -+driver.display |50-160|30-82 - - vendor.id MEI -&device.id eisa 0x1649 -+device.name S110 -+driver.display |50-180|30-95 - - vendor.id MEI -&device.id eisa 0x1e02 -+device.name LC40 -+driver.display |50-77|24-61 - - vendor.id MEI -&device.id eisa 0x1e07 -+device.name LC50S (TX-D5L31F) -+driver.display |50-77|30-61 - - vendor.id MEI -&device.id eisa 0x2622 -+device.name S15 -+driver.display |50-120|30-67 - - vendor.id MEI -&device.id eisa 0x2632 -+device.name P50 -+driver.display |50-180|30-69 - - vendor.id MEI -&device.id eisa 0x2637 -+device.name E50 -+driver.display |50-120|30-61 - - vendor.id MEL -+vendor.name MITSUBISHI - - vendor.id MEL -&device.id eisa 0x0040 -+device.name DIAMOND PRO 21TX (THN9105) -+driver.display |50-152|30-93 - - vendor.id MEL -&device.id eisa 0x1040 -+device.name RD21G -+driver.display |50-152|30-93 - - vendor.id MEL -&device.id eisa 0x2040 -+device.name DIAMOND PRO 20X (FR8905) -+driver.display |50-120|30-82 - - vendor.id MEL -&device.id eisa 0x4040 -+device.name DIAMOND PRO 17TX (TFG8705) -+driver.display |50-152|30-86 - - vendor.id MEL -&device.id eisa 0x4064 -+device.name DIAMOND PRO 67TXV (TFV6705) -+driver.display |50-130|30-69 - - vendor.id MEL -&device.id eisa 0x4065 -+device.name RD17GR -+driver.display |55-125|30-69 - - vendor.id MEL -&device.id eisa 0x408f -+device.name DIAMOND SCAN 15VX (SD58XX) -+driver.display |50-100|30-65 - - vendor.id MEL -&device.id eisa 0x409f -+device.name RD15M -+driver.display |50-100|30-65 - - vendor.id MEL -&device.id eisa 0x40c0 -+device.name DIAMOND PRO 87TXM (TFM8705) -+driver.display |50-130|30-86 - - vendor.id MEL -&device.id eisa 0x40e0 -+device.name DIAMOND PRO 91TXM (TFW9105) -+driver.display |50-130|30-95 - - vendor.id MEL -&device.id eisa 0x40e1 -+device.name DIAMOND PLUS 100 (TFW1105) -+driver.display |50-152|30-108 - - vendor.id MEL -&device.id eisa 0x40f0 -+device.name RD21GII -+driver.display |50-152|30-95 - - vendor.id MEL -&device.id eisa 0x40f1 -+device.name RD21GX -+driver.display |50-132|30-86 - - vendor.id MEL -&device.id eisa 0x4100 -+device.name DIAMOND PRO 1000 (TFX1105) -+driver.display |50-152|30-115 - - vendor.id MEL -&device.id eisa 0x4101 -+device.name DIAMOND PRO 1010 (TUX1107) -+driver.display |50-152|30-115 - - vendor.id MEL -&device.id eisa 0x4120 -+device.name SPECTRAVIEW 1000 -+driver.display |50-130|30-95 - - vendor.id MEL -&device.id eisa 0x4140 -+device.name RD21GIII -+driver.display |50-152|30-115 - - vendor.id MEL -&device.id eisa 0x4141 -+device.name RD21GH -+driver.display |50-152|30-115 - - vendor.id MEL -&device.id eisa 0x4150 -+device.name RD17GZ -+driver.display |50-130|30-86 - - vendor.id MEL -&device.id eisa 0x4160 -+device.name DIAMOND PLUS 72 (TFV-8705) -+driver.display |50-130|30-86 - - vendor.id MEL -&device.id eisa 0x4190 -+device.name DIAMOND PLUS 70 (TF-7700P) -+driver.display |50-180|30-70 - - vendor.id MEL -&device.id eisa 0x41b0 -+device.name RDT151 - - vendor.id MEL -&device.id eisa 0x41b3 -+device.name TFT MONITOR RDT150S - - vendor.id MEL -&device.id eisa 0x41f0 -+device.name DIAMOND SCAN 50 (SD5904) -+driver.display |50-100|30-70 - - vendor.id MEL -&device.id eisa 0x4210 -+device.name DIAMOND SCAN 70 (SD7704) -+driver.display |50-100|30-70 - - vendor.id MEL -&device.id eisa 0x42d0 -+device.name TFT MONITOR RDT180S - - vendor.id MEL -&device.id eisa 0x5040 -+device.name RD17GII -+driver.display |50-152|24-86 - - vendor.id MEL -&device.id eisa 0x6040 -+device.name RD17F -+driver.display |50-130|30-82 - - vendor.id MEL -&device.id eisa 0x6140 -+device.name DIAMOND SCAN 17HX (FFF8705) -+driver.display |50-130|30-82 - - vendor.id MEL -&device.id eisa 0x8040 -+device.name DIAMOND SCAN 15HX (SD57XXC) - - vendor.id MEL -&device.id eisa 0x9040 -+device.name RD15G -+driver.display |50-120|30-65 - - vendor.id MIR -+vendor.name MIRO - - vendor.id MIR -&device.id eisa 0x0721 -+device.name PROOFSCREEN MIROC21107 - - vendor.id MIR -&device.id eisa 0x6815 -+device.name miroD1568 - - vendor.id MIR -&device.id eisa 0x6817 -+device.name PROOFSCREEN MIROC1768 -+driver.display |50-100|29-68 - - vendor.id MIR -&device.id eisa 0x6917 -+device.name miroD1769 - - vendor.id MIR -&device.id eisa 0x8217 -+device.name PROOFSCREEN MIROC1782 -+driver.display |50-120|29-82 - - vendor.id MIR -&device.id eisa 0x8520 -+device.name PROOFSCREEN MIROC2085 E -+driver.display |50-160|29-85 - - vendor.id MIR -&device.id eisa 0x8521 -+device.name PROOFSCREEN MIROC2185 -+driver.display |50-152|30-85 - - vendor.id MIR -&device.id eisa 0x9321 -+device.name PROOFSCREEN MIROC2193 -+driver.display |50-150|30-93 - - vendor.id MIR -&device.id eisa 0xa785 -+device.name A1785F -+driver.display |50-100|30-85 - - vendor.id MTC -+vendor.name MITAC - - vendor.id MTC -&device.id eisa 0x0001 -+device.name 1450FV -+driver.display |50-90|31-50 - - vendor.id MTC -&device.id eisa 0x0002 -+device.name 1564FD/1564FS -+driver.display |50-100|30-66 - - vendor.id MTC -&device.id eisa 0x0003 -+device.name 1450FD -+driver.display |50-90|31-50 - - vendor.id NAN -+vendor.name NANAO - - vendor.id NAN -&device.id eisa 0x0000 -+device.name USA FLEXSCAN T2-20 -+driver.display |55-160|30-85 - - vendor.id NAN -&device.id eisa 0x0400 -+device.name USA F2-15 - - vendor.id NAN -&device.id eisa 0x0401 -+device.name USA F2-17 - - vendor.id NAN -&device.id eisa 0x0402 -+device.name USA F2-17EX - - vendor.id NAN -&device.id eisa 0x0403 -+device.name USA F2-21 - - vendor.id NAN -&device.id eisa 0x0404 -+device.name USA FX2-21 - - vendor.id NAN -&device.id eisa 0x0405 -+device.name USA FLEXSCAN T2-17TS - - vendor.id NAN -&device.id eisa 0x0406 -+device.name FLEXSCAN 6600 -+driver.display |70-90|56-110 - - vendor.id NAN -&device.id eisa 0x0502 -+device.name NANAO 9060S - - vendor.id NAN -&device.id eisa 0x0503 -+device.name 9065S -+driver.display |50-90|30-50 - - vendor.id NAN -&device.id eisa 0x0506 -+device.name NANAO 9070U - - vendor.id NAN -&device.id eisa 0x0507 -+device.name NANAO 9080i - - vendor.id NAN -&device.id eisa 0x0508 -+device.name 9400I -+driver.display |55-90|30-65 - - vendor.id NAN -&device.id eisa 0x0509 -+device.name 9500 -+driver.display |55-90|30-78 - - vendor.id NAN -&device.id eisa 0x050a -+device.name FLEXSCAN F340IW - - vendor.id NAN -&device.id eisa 0x050b -+device.name NANAO FlexScan F550i - - vendor.id NAN -&device.id eisa 0x050c -+device.name FLEXSCAN F550IW -+driver.display |55-90|30-65 - - vendor.id NAN -&device.id eisa 0x050d -+device.name FLEXSCAN F560IW -+driver.display |55-90|30-82 - - vendor.id NAN -&device.id eisa 0x050e -+device.name FLEXSCAN F750I -+driver.display |55-90|30-80 - - vendor.id NAN -&device.id eisa 0x050f -+device.name FLEXSCAN F760IW -+driver.display |55-90|30-78 - - vendor.id NAN -&device.id eisa 0x0510 -+device.name FLEXSCAN F780IW -+driver.display |55-120|45-100 - - vendor.id NAN -&device.id eisa 0x0511 -+device.name FLEXSCAN T560I -+driver.display |55-90|30-82 - - vendor.id NAN -&device.id eisa 0x0512 -+device.name FLEXSCAN T660I -+driver.display |55-90|30-78 - - vendor.id NAN -&device.id eisa 0x0513 -+device.name USA FLEXSCAN T2-17 -+driver.display |55-160|30-85 - - vendor.id NAN -&device.id eisa 0x0514 -+device.name NANAO USA FlexScan T2-20 - - vendor.id NAN -&device.id eisa 0x0580 -+device.name USA FLEXSCAN 6300 -+driver.display |55-90|56-80 - - vendor.id NAN -&device.id eisa 0x0800 -+device.name FLEXSCAN 33F - - vendor.id NAN -&device.id eisa 0x0802 -+device.name FLEXSCAN 88F - - vendor.id NAN -&device.id eisa 0x0805 -+device.name FLEXSCAN 54T - - vendor.id NAN -&device.id eisa 0x0882 -+device.name FLEXSCAN 52F - - vendor.id NAN -&device.id eisa 0x0900 -+device.name FLEXSCAN 6500 -+driver.display |55-90|56-80 - - vendor.id NAN -&device.id eisa 0x0902 -+device.name 9060S - - vendor.id NAN -&device.id eisa 0x0906 -+device.name 9070U -+driver.display |50-90|20-50 - - vendor.id NAN -&device.id eisa 0x0907 -+device.name 9080I -+driver.display |55-90|30-64 - - vendor.id NAN -&device.id eisa 0x090a -+device.name FLEXSCAN F347 - - vendor.id NAN -&device.id eisa 0x090b -+device.name FLEXSCAN F550I -+driver.display |55-90|30-65 - - vendor.id NAN -&device.id eisa 0x090c -+device.name FLEXSCAN F557 - - vendor.id NAN -&device.id eisa 0x090f -+device.name FLEXSCAN 77F - - vendor.id NAN -&device.id eisa 0x0910 -+device.name FLEXSCAN F780IJ -+driver.display |55-120|45-100 - - vendor.id NAN -&device.id eisa 0x0911 -+device.name FLEXSCAN T560IJ -+driver.display |55-90|30-82 - - vendor.id NAN -&device.id eisa 0x0912 -+device.name FLEXSCAN T660IJ -+driver.display |55-90|30-82 - - vendor.id NAN -&device.id eisa 0x0913 -+device.name FLEXSCAN 56T -+driver.display |55-160|30-85 - - vendor.id NAN -&device.id eisa 0x0914 -+device.name FLEXSCAN 68T -+driver.display |55-160|30-85 - - vendor.id NAN -&device.id eisa 0x098a -+device.name FLEXSCAN F347II - - vendor.id NAN -&device.id eisa 0x098c -+device.name FLEXSCAN 55F - - vendor.id NAN -&device.id eisa 0x098f -+device.name FLEXSCAN 76F -+driver.display |55-90|30-78 - - vendor.id NAN -&device.id eisa 0x0991 -+device.name FLEXSCAN T567 -+driver.display |55-90|30-82 - - vendor.id NAN -&device.id eisa 0x0993 -+device.name FLEXSCAN 53T -+driver.display |55-160|30-85 - - vendor.id NAN -&device.id eisa 0x1212 -+device.name FLEXSCAN E151L -+driver.display |50-85|24-61 - - vendor.id NAN -&device.id eisa 0x1218 -+device.name FLEXSCAN E76F -+driver.display |50-160|30-110 - - vendor.id NAN -&device.id eisa 0x1220 -+device.name FLEXSCAN E54F -+driver.display |50-160|30-96 - - vendor.id NEC -+vendor.name NEC - - vendor.id NEC -&device.id eisa 0x000a -+device.name INTEGRIERTER PC-9821XC13/S5 -+driver.display |50-63|27-59 - - vendor.id NEC -&device.id eisa 0x0014 -+device.name D171 -+driver.display |50-63|27-59 - - vendor.id NEC -&device.id eisa 0x001e -+device.name NEC INTEGRIERTER PC-9821CT16 -+driver.display |50-70|27-59 - - vendor.id NEC -&device.id eisa 0x0032 -+device.name D17A1 -+driver.display |50-63|27-59 - - vendor.id NEC -&device.id eisa 0x0046 -+device.name D17C2 -+driver.display |50-63|27-59 - - vendor.id NEC -&device.id eisa 0x0050 -+device.name D15A1 -+driver.display |50-63|27-59 - - vendor.id NEC -&device.id eisa 0x005a -+device.name D17B1 -+driver.display |50-63|27-59 - - vendor.id NEC -&device.id eisa 0x006e -+device.name DV15A1 -+driver.display |60-75|30-63 - - vendor.id NEC -&device.id eisa 0x0078 -+device.name DV17A1 -+driver.display |60-75|30-67 - - vendor.id NEC -&device.id eisa 0x0082 -+device.name DV17B1 -+driver.display |60-75|30-67 - - vendor.id NEC -&device.id eisa 0x008c -+device.name DV17C1 -+driver.display |60-75|30-67 - - vendor.id NEC -&device.id eisa 0x0096 -+device.name DV17C2 -+driver.display |60-75|30-83 - - vendor.id NEC -&device.id eisa 0x00a0 -+device.name F14T1 -+driver.display |60-75|24-63 - - vendor.id NEC -&device.id eisa 0x00aa -+device.name DV15D1 -+driver.display |60-75|30-63 - - vendor.id NEC -&device.id eisa 0x00c8 -+device.name PK-DH172 -+driver.display |60-85|30-63 - - vendor.id NEC -&device.id eisa 0x00dc -+device.name F14T2H -+driver.display |59-76|31-61 - - vendor.id NEC -&device.id eisa 0x00e6 -+device.name F14T2L -+driver.display |59-76|31-61 - - vendor.id NEC -&device.id eisa 0x0190 -+device.name D172 -+driver.display |50-63|27-59 - - vendor.id NEC -&device.id eisa 0x019a -+device.name DV15A2 -+driver.display |59-86|30-71 - - vendor.id NEC -&device.id eisa 0x01a4 -+device.name DV17C3 -+driver.display |59-86|30-71 - - vendor.id NEC -&device.id eisa 0x01ae -+device.name DV17B2 -+driver.display |59-86|30-71 - - vendor.id NEC -&device.id eisa 0x0320 -+device.name MULTISYNC LT80 -+driver.display |50-85|15-60 - - vendor.id NEC -&device.id eisa 0x0afa -+device.name DH28W2 -+driver.display |60-75|30-38 - - vendor.id NEC -&device.id eisa 0x0c8a -+device.name DH32W2 -+driver.display |60-75|30-38 - - vendor.id NEC -&device.id eisa 0x1d4d -+device.name MULTISYNC 50 -+driver.display |55-120|31-69 - - vendor.id NEC -&device.id eisa 0x1e15 -+device.name MULTISYNC 70 -+driver.display |55-120|31-69 - - vendor.id NEC -&device.id eisa 0x1fa4 -+device.name MULTISYNC MT810 -+driver.display |50-85|15-60 - - vendor.id NEC -&device.id eisa 0x2710 -+device.name MULTISYNC MT1000 -+driver.display |50-85|15-80 - - vendor.id NEC -&device.id eisa 0x2fb2 -+device.name LCD200 -+driver.display |53-85|24-62 - - vendor.id NEC -&device.id eisa 0x3782 -+device.name MULTISYNC LCD400 -+driver.display |55-86|24-60 - - vendor.id NEC -&device.id eisa 0x378c -+device.name MULTISYNC LCD400V -+driver.display |55-86|24-60 - - vendor.id NEC -&device.id eisa 0x37fa -+device.name NEC MultiSync XV14 - - vendor.id NEC -&device.id eisa 0x37fb -+device.name MULTISYNC XV14 -+driver.display |55-100|30-57 - - vendor.id NEC -&device.id eisa 0x3a66 -+device.name MULTISYNC C400 -+driver.display |47-120|30-64 - - vendor.id NEC -&device.id eisa 0x3c00 -+device.name NEC MultiSync XE15 - - vendor.id NEC -&device.id eisa 0x3c0a -+device.name MULTISYNC XP15 -+driver.display |55-160|31-65 - - vendor.id NEC -&device.id eisa 0x3c14 -+device.name MULTISYNC XV15 -+driver.display |55-100|31-65 - - vendor.id NEC -&device.id eisa 0x3c1e -+device.name MULTISYNC XE15 -+driver.display |55-120|31-65 - - vendor.id NEC -&device.id eisa 0x3d5e -+device.name MULTISYNC XV15+ -+driver.display |55-100|31-65 - - vendor.id NEC -&device.id eisa 0x3d68 -+device.name MULTISYNC M500 -+driver.display |55-120|30-69 - - vendor.id NEC -&device.id eisa 0x3d7c -+device.name MULTISYNC V500 -+driver.display |55-100|31-65 - - vendor.id NEC -&device.id eisa 0x3d86 -+device.name MULTISYNC E500 -+driver.display |55-120|31-69 - - vendor.id NEC -&device.id eisa 0x3d90 -+device.name MULTISYNC A500 -+driver.display |55-120|31-65 - - vendor.id NEC -&device.id eisa 0x3e4e -+device.name MULTISYNC C500 -+driver.display |47-120|30-64 - - vendor.id NEC -&device.id eisa 0x3e53 -+device.name CS500-MULTIMEDIAMONITOR -+driver.display |50-120|30-64 - - vendor.id NEC -&device.id eisa 0x43a8 -+device.name NEC MultiSync XE17 - - vendor.id NEC -&device.id eisa 0x43b2 -+device.name MULTISYNC XE17 -+driver.display |55-120|31-65 - - vendor.id NEC -&device.id eisa 0x43bc -+device.name MULTISYNC XV17 -+driver.display |55-100|31-65 - - vendor.id NEC -&device.id eisa 0x43c6 -+device.name MULTISYNC M700 -+driver.display |55-120|30-69 - - vendor.id NEC -&device.id eisa 0x43d0 -+device.name MULTISYNC A700 -+driver.display |55-120|31-65 - - vendor.id NEC -&device.id eisa 0x4416 -+device.name MULTISYNC XP17 -+driver.display |55-160|31-82 - - vendor.id NEC -&device.id eisa 0x4420 -+device.name MULTISYNC P750 -+driver.display |55-160|31-94 - - vendor.id NEC -&device.id eisa 0x442a -+device.name MULTISYNC XV17+ (-2) -+driver.display |55-100|31-82 - - vendor.id NEC -&device.id eisa 0x4434 -+device.name MULTISYNC E700 -+driver.display |55-120|31-82 - - vendor.id NEC -&device.id eisa 0x4bd2 -+device.name MULTISYNC E900 -+driver.display |55-120|31-92 - - vendor.id NEC -&device.id eisa 0x4bdc -+device.name MULTISYNC E900+ -+driver.display |55-160|31-96 - - vendor.id NEC -&device.id eisa 0x4be6 -+device.name MULTISYNC A900 -+driver.display |55-160|31-92 - - vendor.id NEC -&device.id eisa 0x4bf0 -+device.name MULTISYNC 90 -+driver.display |55-160|31-92 - - vendor.id NEC -&device.id eisa 0x4f56 -+device.name MULTISYNC LCD2000 -+driver.display |55-85|24-81 - - vendor.id NEC -&device.id eisa 0x4f60 -+device.name MULTISYNC LCD2010 -+driver.display |55-85|24-81 - - vendor.id NEC -&device.id eisa 0x533e -+device.name MULTISYNC XE21 -+driver.display |55-120|31-69 - - vendor.id NEC -&device.id eisa 0x53b6 -+device.name MULTISYNC XP21 -+driver.display |55-160|31-89 - - vendor.id NEC -&device.id eisa 0x53c0 -+device.name MULTISYNC E1100 -+driver.display |55-120|31-82 - - vendor.id NEC -&device.id eisa 0x53ca -+device.name MULTISYNC P1150 -+driver.display |55-160|31-94 - - vendor.id NEC -&device.id eisa 0x53de -+device.name MULTISYNC E1100+ -+driver.display |55-160|31-96 - - vendor.id NEC -&device.id eisa 0x53e8 -+device.name MULTISYNC P1250+ -+driver.display |55-160|31-110 - - vendor.id NEC -&device.id eisa 0xea69 -+device.name C900 -+driver.display |50-150|30-95 - - vendor.id NEC -&device.id eisa 0xea8b -+device.name VISTASCAN 7000 -+driver.display |50-120|30-69 - - vendor.id NOK -+vendor.name NOKIA - - vendor.id NOK -&device.id eisa 0x008d -+device.name NOKIA 449M - - vendor.id NOK -&device.id eisa 0x0098 -+device.name NOKIA 449X - - vendor.id NOK -&device.id eisa 0x00a3 -+device.name NOKIA 447KC - - vendor.id NOK -&device.id eisa 0x00a9 -+device.name 447XI -+driver.display |45-150|31-92 - - vendor.id NOK -&device.id eisa 0x00ab -+device.name NOKIA 447KA - - vendor.id NOK -&device.id eisa 0x00ad -+device.name 447M -+driver.display |55-110|31-64 - - vendor.id NOK -&device.id eisa 0x00b7 -+device.name 447W -+driver.display |48-100|31-85 - - vendor.id NOK -&device.id eisa 0x00b8 -+device.name NOKIA 447X - - vendor.id NOK -&device.id eisa 0x00bb -+device.name NOKIA 447XAV - - vendor.id NOK -&device.id eisa 0x00bc -+device.name NOKIA 447K - - vendor.id NOK -&device.id eisa 0x00d2 -+device.name NOKIA 445R - - vendor.id OQI -+vendor.name OPTIQUEST - - vendor.id OQI -&device.id eisa 0x3138 -+device.name VA656 -+driver.display |50-120|30-69 - - vendor.id OQI -&device.id eisa 0x3141 -+device.name OPTIQUEST 14ES - - vendor.id OQI -&device.id eisa 0x3232 -+device.name 1562A-2 - - vendor.id OQI -&device.id eisa 0x3233 -+device.name OPTIQUEST 1769DC - - vendor.id OQI -&device.id eisa 0x3234 -+device.name 1000S - - vendor.id OQI -&device.id eisa 0x3332 -+device.name V655 -+driver.display |50-100|30-66 - - vendor.id OQI -&device.id eisa 0x3333 -+device.name V775 -+driver.display |50-130|30-82 - - vendor.id OQI -&device.id eisa 0x3432 -+device.name OPTIQUEST V650 - - vendor.id OQI -&device.id eisa 0x3832 -+device.name OPTIQUEST V665 - - vendor.id OQI -&device.id eisa 0x4132 -+device.name V641 - - vendor.id OQI -&device.id eisa 0x4136 -+device.name Q41 -+driver.display |50-90|30-48 - - vendor.id OQI -&device.id eisa 0x4432 -+device.name V655-2 -+driver.display |50-100|30-65 - - vendor.id OQI -&device.id eisa 0x4433 -+device.name Q53 -+driver.display |50-100|30-70 - - vendor.id OQI -&device.id eisa 0x4434 -+device.name V655-3 -+driver.display |50-100|30-70 - - vendor.id OQI -&device.id eisa 0x4435 -+device.name Q51 -+driver.display |50-100|30-54 - - vendor.id OQI -&device.id eisa 0x4436 -+device.name V55 -+driver.display |50-160|30-70 - - vendor.id OQI -&device.id eisa 0x4637 -+device.name 1769DC -+driver.display |50-120|30-69 - - vendor.id OQI -&device.id eisa 0x4732 -+device.name V775-2 -+driver.display |50-120|30-85 - - vendor.id OQI -&device.id eisa 0x4733 -+device.name V773 -+driver.display |50-160|30-69 - - vendor.id OQI -&device.id eisa 0x4735 -+device.name Q71 -+driver.display |50-120|30-70 - - vendor.id OQI -&device.id eisa 0x4736 -+device.name V773-2 -+driver.display |50-180|30-70 - - vendor.id OQI -&device.id eisa 0x4738 -+device.name Q71-2 -+driver.display |50-120|30-70 - - vendor.id OQI -&device.id eisa 0x4739 -+device.name V75 -+driver.display |50-160|30-96 - - vendor.id OQI -&device.id eisa 0x4a31 -+device.name Q100 -+driver.display |50-120|30-86 - - vendor.id OQI -&device.id eisa 0x4a32 -+device.name V95 -+driver.display |50-150|30-95 - - vendor.id OQI -&device.id eisa 0x4d31 -+device.name V115 -+driver.display |50-160|30-95 - - vendor.id OQI -&device.id eisa 0x4d32 -+device.name V115T -+driver.display |50-150|30-96 - - vendor.id OQI -&device.id eisa 0x5634 -+device.name V73 -+driver.display |50-160|30-70 - - vendor.id PBN -+vendor.name PACKARD - - vendor.id PBN -&device.id eisa 0x4234 -+device.name BELL 1024S -+driver.display |50-90|30-50 - - vendor.id PBN -&device.id eisa 0x4483 -+device.name BELL PLUG & PLAY 4480 -+driver.display |55-75|30-50 - - vendor.id PBN -&device.id eisa 0x5234 -+device.name BELL PLUG & PLAY 2024S -+driver.display |50-90|30-54 - - vendor.id PBN -&device.id eisa 0x5483 -+device.name BELL PLUG & PLAY 5480 -+driver.display |50-90|30-69 - - vendor.id PBN -&device.id eisa 0x7483 -+device.name BELL PLUG & PLAY 7480 -+driver.display |50-90|30-69 - - vendor.id PGS -+vendor.name PRINCETON - - vendor.id PGS -&device.id eisa 0x003b -+device.name GRAPHIC SYSTEMS EO15 -+driver.display |50-120|30-70 - - vendor.id PGS -&device.id eisa 0x003c -+device.name GRAPHIC SYSTEMS EO75 -+driver.display |50-120|30-95 - - vendor.id PGS -&device.id eisa 0x003d -+device.name GRAPHIC SYSTEMS EO17 -+driver.display |50-120|30-70 - - vendor.id PGS -&device.id eisa 0x004d -+device.name GRAPHIC SYSTEMS ULTRA 50 -+driver.display |50-90|30-50 - - vendor.id PGS -&device.id eisa 0x004e -+device.name GRAPHIC SYSTEMS EO40 -+driver.display |50-90|30-50 - - vendor.id PGS -&device.id eisa 0x004f -+device.name GRAPHIC SYSTEMS EO50 -+driver.display |50-120|30-70 - - vendor.id PGS -&device.id eisa 0x0050 -+device.name GRAPHIC SYSTEMS EO70 -+driver.display |50-120|30-70 - - vendor.id PGS -&device.id eisa 0x0051 -+device.name GRAPHIC SYSTEMS ULTRA 40 -+driver.display |50-90|30-50 - - vendor.id PGS -&device.id eisa 0x0052 -+device.name GRAPHIC SYSTEMS EO72 -+driver.display |50-120|30-70 - - vendor.id PGS -&device.id eisa 0x008b -+device.name GRAPHIC SYSTEMS C2001 -+driver.display |50-160|30-107 - - vendor.id PGS -&device.id eisa 0x008e -+device.name GRAPHIC SYSTEMS EO500 -+driver.display |50-120|30-70 - - vendor.id PGS -&device.id eisa 0x008f -+device.name GRAPHIC SYSTEMS EO710 -+driver.display |50-120|30-70 - - vendor.id PGS -&device.id eisa 0x009d -+device.name GRAPHIC SYSTEMS EO400 -+driver.display |50-90|30-54 - - vendor.id PGS -&device.id eisa 0x00b6 -+device.name GRAPHIC SYSTEMS EO700 -+driver.display |50-120|30-70 - - vendor.id PGS -&device.id eisa 0x00b7 -+device.name GRAPHIC SYSTEMS EO720 -+driver.display |50-120|30-70 - - vendor.id PHL -+vendor.name PHILIPS - - vendor.id PHL -&device.id eisa 0x0107 -+device.name BRILLIANCE 107 (17 ZOLL/CM8800) -+driver.display |50-160|30-86 - - vendor.id PHL -&device.id eisa 0x0200 -+device.name CM0200 (15C) -+driver.display |50-100|31-48 - - vendor.id PHL -&device.id eisa 0x0201 -+device.name BRILLIANCE 201CS -+driver.display |50-170|30-107 - - vendor.id PHL -&device.id eisa 0x0500 -+device.name CM0500 (20C) -+driver.display |50-120|31-64 - - vendor.id PHL -&device.id eisa 0x0700 -+device.name CM0700 (20T) -+driver.display |50-160|30-90 - - vendor.id PHL -&device.id eisa 0x0800 -+device.name CM0800 (15B) -+driver.display |50-100|30-58 - - vendor.id PHL -&device.id eisa 0x104b -+device.name 104B (14 ZOLL/CM1300) -+driver.display |50-110|30-54 - - vendor.id PHL -&device.id eisa 0x105a -+device.name BRILLIANCE 105 (15 ZOLL/CM2200) -+driver.display |50-120|30-69 - - vendor.id PHL -&device.id eisa 0x105c -+device.name 105S (15 ZOLL/CM1300) -+driver.display |50-110|30-54 - - vendor.id PHL -&device.id eisa 0x107c -+device.name 107S (17 ZOLL/CM6800) -+driver.display |50-130|30-66 - - vendor.id PHL -&device.id eisa 0x1107 -+device.name BRILLIANCE 107 (PRODUCT ID 17A58...) -+driver.display |50-160|30-95 - - vendor.id PHL -&device.id eisa 0x1109 -+device.name BRILLIANCE 109 (PRODUCT ID 19A58...) -+driver.display |50-160|30-95 - - vendor.id PHL -&device.id eisa 0x1200 -+device.name CM1200 (15A) -+driver.display |50-110|31-66 - - vendor.id PHL -&device.id eisa 0x1800 -+device.name CM1800 (15A) -+driver.display |50-110|31-66 - - vendor.id PHL -&device.id eisa 0x2000 -+device.name CM0200 (14B) -+driver.display |50-100|31-48 - - vendor.id PHL -&device.id eisa 0x200d -+device.name 200T (20 ZOLL/CM0700) -+driver.display |50-160|30-90 - - vendor.id PHL -&device.id eisa 0x201a -+device.name BRILLIANCE 201 (21 ZOLL/CM1700) - - vendor.id PHL -&device.id eisa 0x201b -+device.name 201B (21 ZOLL/CM0770) -+driver.display |48-160|30-94 - - vendor.id PHL -&device.id eisa 0x2600 -+device.name 17TCM26 -+driver.display |50-100|30-66 - - vendor.id PHL -&device.id eisa 0x2800 -+device.name 17BCM28 -+driver.display |50-130|30-66 - - vendor.id PHL -&device.id eisa 0x3109 -+device.name MAGNAVOX 109S -+driver.display |50-160|30-95 - - vendor.id PHL -&device.id eisa 0x3800 -+device.name 17ACM38 -+driver.display |50-160|30-82 - - vendor.id PHL -&device.id eisa 0x4109 -+device.name 109S -+driver.display |50-160|30-95 - - vendor.id PHL -&device.id eisa 0x4500 -+device.name BRILLIANCE AX4500 (14.5 LCD-MONITOR) -+driver.display |56-75|30-60 - - vendor.id PHL -&device.id eisa 0x5600 -+device.name CM5600 (20B) -+driver.display |50-120|31-82 - - vendor.id PHL -&device.id eisa 0x5f1f -+device.name 29PX8031 MONITOR/TV - - vendor.id PHL -&device.id eisa 0x6800 -+device.name 107B (17 ZOLL/CM6800) -+driver.display |50-130|30-69 - - vendor.id PHL -&device.id eisa 0x700b -+device.name CM0700 (21B) -+driver.display |50-160|30-94 - - vendor.id PHL -&device.id eisa 0x8000 -+device.name CM0800 (14A) -+driver.display |50-100|30-58 - - vendor.id PHL -&device.id eisa 0xa15b -+device.name 105B (15 ZOLL/CM1200) -+driver.display |50-110|30-66 - - vendor.id PHL -&device.id eisa 0xa17b -+device.name MAGNAVOX MB7000 (17 ZOLL/CM6800) -+driver.display |50-130|30-66 - - vendor.id PHL -&device.id eisa 0xa17c -+device.name 107S (17 ZOLL/CM1300) -+driver.display |50-120|30-69 - - vendor.id PHL -&device.id eisa 0xa513 -+device.name PD5029S MONITOR/TV - - vendor.id PHL -&device.id eisa 0xb14b -+device.name 104B (14-ZOLL/CM2300) -+driver.display |50-120|30-54 - - vendor.id PHL -&device.id eisa 0xb15c -+device.name 105S (15 ZOLL/CM2300) -+driver.display |50-120|30-60 - - vendor.id PLB -+vendor.name PLB - - vendor.id PLB -&device.id eisa 0x1410 -+device.name 1410 MODEL -+driver.display |50-120|30-54 - - vendor.id PLB -&device.id eisa 0x1510 -+device.name 1510 MODEL -+driver.display |50-120|30-69 - - vendor.id PLB -&device.id eisa 0x1710 -+device.name 1710 -+driver.display |50-120|30-70 - - vendor.id PLB -&device.id eisa 0x1910 -+device.name 1910 -+driver.display |50-150|30-95 - - vendor.id PTS -+vendor.name PROVIEW - - vendor.id PTS -&device.id eisa 0x023a -+device.name 570 -+driver.display |50-150|30-70 - - vendor.id PTS -&device.id eisa 0x0302 -+device.name 770 -+driver.display |50-150|30-76 - - vendor.id PTS -&device.id eisa 0x035c -+device.name 860 -+driver.display |50-150|30-54 - - vendor.id REL -+vendor.name RELISYS - - vendor.id REL -&device.id eisa 0x0451 -+device.name RE451 -+driver.display |50-100|30-54 - - vendor.id REL -&device.id eisa 0x0518 -+device.name RE518 -+driver.display |50-100|30-69 - - vendor.id REL -&device.id eisa 0x0550 -+device.name RE550 -+driver.display |50-100|30-50 - - vendor.id REL -&device.id eisa 0x0551 -+device.name RE551 -+driver.display |50-100|30-54 - - vendor.id REL -&device.id eisa 0x0767 -+device.name RE767 -+driver.display |50-100|30-69 - - vendor.id SAM -+vendor.name SAMSUNG - - vendor.id SAM -&device.id eisa 0x0000 -+device.name SYNCMASTER 3NE - - vendor.id SAM -&device.id eisa 0x0100 -+device.name SYNCMASTER 4S - - vendor.id SAM -&device.id eisa 0x0cf1 -+device.name SYNCMASTER 1000S (CGP1607*) -+driver.display |50-160|30-96 - - vendor.id SAM -&device.id eisa 0x0d65 -+device.name SYNCMASTER 500(M)S PLUS (CKE5507*) -+driver.display |50-120|30-60 - - vendor.id SAM -&device.id eisa 0x0d66 -+device.name SYNCMASTER 500B PLUS (CKF5607*) -+driver.display |50-160|30-69 - - vendor.id SAM -&device.id eisa 0x0d67 -+device.name SYNCMASTER 700(M)S PLUS (CKG7507*) -+driver.display |50-160|30-69 - - vendor.id SAM -&device.id eisa 0x1530 -+device.name 15GLSI -+driver.display |50-100|24-66 - - vendor.id SAM -&device.id eisa 0x1c53 -+device.name SYNCMASTER 500B -+driver.display |50-160|30-69 - - vendor.id SAM -&device.id eisa 0x1c54 -+device.name SAMTRON 5(M)B (CGB5617*) -+driver.display |50-160|30-69 - - vendor.id SAM -&device.id eisa 0x1c73 -+device.name SYNCMASTER 500(M)P (CGC5607*) -+driver.display |50-160|30-69 - - vendor.id SAM -&device.id eisa 0x1cb3 -+device.name SYNCMASTER 700(M)S (CGE7507*) -+driver.display |50-160|30-69 - - vendor.id SAM -&device.id eisa 0x1d73 -+device.name SYNCMASTER 500(M)S (CGK5507*) -+driver.display |50-120|30-54 - - vendor.id SAM -&device.id eisa 0x1d74 -+device.name SAMTRON 5(M)E (CGK5517*) -+driver.display |50-120|30-54 - - vendor.id SAM -&device.id eisa 0x1db3 -+device.name SYNCMASTER 700(M)B (CGM7607*) -+driver.display |50-160|30-69 - - vendor.id SAM -&device.id eisa 0x1f13 -+device.name SYNCMASTER 1000P -+driver.display |50-160|30-107 - - vendor.id SAM -&device.id eisa 0x1f14 -+device.name SYNCMASTER 1000B (CGX1607*) -+driver.display |50-160|30-107 - - vendor.id SAM -&device.id eisa 0x202e -+device.name SAMTRON 40BN -+driver.display |50-120|30-55 - - vendor.id SAM -&device.id eisa 0x2033 -+device.name SYNCMASTER 410B(CHA4217*) -+driver.display |50-120|30-55 - - vendor.id SAM -&device.id eisa 0x2034 -+device.name SAMTRON 40B -+driver.display |50-120|30-55 - - vendor.id SAM -&device.id eisa 0x2035 -+device.name SYNCMASTER 510(M)S (CHA5807*) -+driver.display |50-120|30-61 - - vendor.id SAM -&device.id eisa 0x2036 -+device.name SAMTRON 50(M)E -+driver.display |50-120|30-61 - - vendor.id SAM -&device.id eisa 0x2041 -+device.name SYNCMASTER 610(M)B(CHB6107*) -+driver.display |50-160|30-70 - - vendor.id SAM -&device.id eisa 0x2042 -+device.name SAMTRON 60(M)B -+driver.display |50-160|30-70 - - vendor.id SAM -&device.id eisa 0x2055 -+device.name SYNCMASTER 510B(CHB5707*) -+driver.display |50-160|30-70 - - vendor.id SAM -&device.id eisa 0x2056 -+device.name SAMTRON 50B -+driver.display |50-160|30-70 - - vendor.id SAM -&device.id eisa 0x2057 -+device.name SYNCMASTER 710(M)S (CHB7707*) -+driver.display |50-160|30-70 - - vendor.id SAM -&device.id eisa 0x2058 -+device.name SAMTRON 70(M)E -+driver.display |50-160|30-70 - - vendor.id SAM -&device.id eisa 0x2059 -+device.name SYNCMASTER 710(M)B (CHB7709*) -+driver.display |50-160|30-70 - - vendor.id SAM -&device.id eisa 0x2c33 -+device.name SAMTRON 4BI -+driver.display |50-120|30-55 - - vendor.id SAM -&device.id eisa 0x2c34 -+device.name SYNCMASTER 400B (CKA4217*) -+driver.display |50-120|30-55 - - vendor.id SAM -&device.id eisa 0x2c35 -+device.name SAMTRON 5EI -+driver.display |50-120|30-55 - - vendor.id SAM -&device.id eisa 0x2c36 -+device.name 5E (CKA52*) -+driver.display |50-120|30-55 - - vendor.id SAM -&device.id eisa 0x2c55 -+device.name SAMTRON 5BI -+driver.display |50-120|30-70 - - vendor.id SAM -&device.id eisa 0x2c56 -+device.name 5B (CKB52*) -+driver.display |50-120|30-70 - - vendor.id SAM -&device.id eisa 0x2c57 -+device.name SAMTRON 7EI -+driver.display |50-120|30-70 - - vendor.id SAM -&device.id eisa 0x2c58 -+device.name 7E (CKB72*) -+driver.display |50-120|30-70 - - vendor.id SAM -&device.id eisa 0x2cf8 -+device.name SYNCMASTER 700B PLUS -+driver.display |50-160|30-70 - - vendor.id SAM -&device.id eisa 0x4610 -+device.name SYNCMASTER 21GLS -+driver.display |50-160|30-85 - - vendor.id SAM -&device.id eisa 0x4690 -+device.name SYNCMASTER 20GLSI -+driver.display |50-120|30-82 - - vendor.id SAM -&device.id eisa 0x49d5 -+device.name SYNCMASTER 570 B TFT -+driver.display |50-75|30-61 - - vendor.id SAM -&device.id eisa 0x4d50 -+device.name SYNCMASTER 15GLE - - vendor.id SAM -&device.id eisa 0x4d51 -+device.name SYNCMASTER 15GLI -+driver.display |50-120|30-65 - - vendor.id SAM -&device.id eisa 0x4d52 -+device.name SYNCMASTER 15M -+driver.display |50-120|30-65 - - vendor.id SAM -&device.id eisa 0x4d70 -+device.name SYNCMASTER 17GLI -+driver.display |50-120|30-65 - - vendor.id SAM -&device.id eisa 0x4d71 -+device.name SYNCMASTER 17GLSI -+driver.display |50-120|30-85 - - vendor.id SAM -&device.id eisa 0x4d72 -+device.name SYNCMASTER 6NE -+driver.display |50-100|30-65 - - vendor.id SAM -&device.id eisa 0x4d73 -+device.name 17GLI -+driver.display |50-120|24-65 - - vendor.id SAM -&device.id eisa 0x4d74 -+device.name 17GLSI -+driver.display |50-120|24-85 - - vendor.id SAM -&device.id eisa 0x4db9 -+device.name SYNCMASTER 900SL (CSM92*) -+driver.display |50-160|30-96 - - vendor.id SAM -&device.id eisa 0x4ee6 -+device.name SYNCMASTER 700P PLUS (CSH7839*) -+driver.display |50-160|30-96 - - vendor.id SAM -&device.id eisa 0x4ee9 -+device.name SYNCMASTER 700IFT (CSH780B*) -+driver.display |50-160|30-96 - - vendor.id SAM -&device.id eisa 0x4f26 -+device.name SYNCMASTER 900P (CSH9839*) -+driver.display |50-160|30-96 - - vendor.id SAM -&device.id eisa 0x4f27 -+device.name SAMTRON 9P -+driver.display |50-160|30-96 - - vendor.id SAM -&device.id eisa 0x4f29 -+device.name SYNCMASTER 900IFT -+driver.display |50-160|30-96 - - vendor.id SAM -&device.id eisa 0x5450 -+device.name SYNCMASTER 15ME -+driver.display |50-120|30-50 - - vendor.id SAM -&device.id eisa 0x6053 -+device.name SYNCMASTER 320TFT (LXB310*) -+driver.display |50-75|30-61 - - vendor.id SAM -&device.id eisa 0x6054 -+device.name SYNCMASTER 330/331TFT (LXB350*) -+driver.display |50-75|30-61 - - vendor.id SAM -&device.id eisa 0x6055 -+device.name SYNCMASTER 520TFT (LXB530*) -+driver.display |50-75|30-61 - - vendor.id SAM -&device.id eisa 0x6056 -+device.name SYNCMASTER 530/531TFT (LXB550*) -+driver.display |50-75|30-61 - - vendor.id SAM -&device.id eisa 0x6d20 -+device.name SYNCMASTER 15GLE -+driver.display |50-120|30-50 - - vendor.id SDI -+vendor.name SAMTRON - - vendor.id SDI -&device.id eisa 0x1428 -+device.name 428PT/PTL - - vendor.id SDI -&device.id eisa 0x1528 -+device.name SC-528TXL -+driver.display |50-100|30-48 - - vendor.id SDI -&device.id eisa 0x1529 -+device.name SC-528UXL -+driver.display |50-120|30-65 - - vendor.id SDI -&device.id eisa 0x1530 -+device.name SC-528MXLJ -+driver.display |50-100|24-66 - - vendor.id SDI -&device.id eisa 0x4690 -+device.name SC-208DXL+ -+driver.display |50-120|30-82 - - vendor.id SDI -&device.id eisa 0x4d70 -+device.name SC-728FXL -+driver.display |50-120|30-65 - - vendor.id SDI -&device.id eisa 0x4d71 -+device.name SC-726GXL -+driver.display |50-120|30-85 - - vendor.id SDI -&device.id eisa 0x4d73 -+device.name SC-728FXLJ -+driver.display |50-120|24-65 - - vendor.id SDI -&device.id eisa 0x5451 -+device.name SC-528MDL -+driver.display |50-120|30-48 - - vendor.id SML -+vendor.name SMILE - - vendor.id SML -&device.id eisa 0x6425 -+device.name CA6425DL/CB6425DL -+driver.display |50-100|30-54 - - vendor.id SML -&device.id eisa 0x6525 -+device.name CA6525DL/CB6525DL -+driver.display |50-100|30-54 - - vendor.id SML -&device.id eisa 0x6546 -+device.name CA6546SL/CB6546SL -+driver.display |50-120|30-69 - - vendor.id SML -&device.id eisa 0x6719 -+device.name CA6719SL/CB6719SL -+driver.display |50-150|30-95 - - vendor.id SML -&device.id eisa 0x6738 -+device.name 85KHZ-MONITOR -+driver.display |50-150|30-86 - - vendor.id SML -&device.id eisa 0x6746 -+device.name CA6746SL/CB6746SL -+driver.display |50-120|30-69 - - vendor.id SML -&device.id eisa 0x6748 -+device.name CA6748SL/CB6748SL -+driver.display |50-150|30-86 - - vendor.id SML -&device.id eisa 0x6919 -+device.name CA6919SL/CB6919SL -+driver.display |50-150|30-95 - - vendor.id SNI -+vendor.name Siemens Nixdorf - - vendor.id SNY -+vendor.name SONY - - vendor.id SNY -&device.id eisa 0x0030 -+device.name CPD-L133 -+driver.display |50-65|30-70 - - vendor.id SNY -&device.id eisa 0x0071 -+device.name CPD-220GS -+driver.display |48-120|30-85 - - vendor.id SNY -&device.id eisa 0x0090 -+device.name GDM-400PS/400PST/19PS -+driver.display |48-160|30-95 - - vendor.id SNY -&device.id eisa 0x0091 -+device.name CPD-420GS -+driver.display |48-120|30-96 - - vendor.id SNY -&device.id eisa 0x00b0 -+device.name GDM-500PS -+driver.display |48-160|30-107 - - vendor.id SNY -&device.id eisa 0x00e0 -+device.name GDM-W900 -+driver.display |50-160|30-96 - - vendor.id SNY -&device.id eisa 0x0150 -+device.name CPD-100SF -+driver.display |50-120|30-70 - - vendor.id SNY -&device.id eisa 0x0170 -+device.name GDM-17SE2T -+driver.display |48-150|30-85 - - vendor.id SNY -&device.id eisa 0x017b -+device.name CPD-2003GT -+driver.display |50-120|30-85 - - vendor.id SNY -&device.id eisa 0x0270 -+device.name CPD-200SF -+driver.display |50-120|30-80 - - vendor.id SNY -&device.id eisa 0x02b0 -+device.name CPD-520GS/520GST/21GS2 -+driver.display |48-160|30-96 - - vendor.id SNY -&device.id eisa 0x0370 -+device.name CPD-200SFT -+driver.display |50-120|30-80 - - vendor.id SNY -&device.id eisa 0x03a0 -+device.name CPD-300SFT -+driver.display |48-150|30-86 - - vendor.id SNY -&device.id eisa 0x0450 -+device.name CPD-100ES -+driver.display |50-120|30-70 - - vendor.id SNY -&device.id eisa 0x0470 -+device.name CPD-17SF9 -+driver.display |50-120|24-80 - - vendor.id SNY -&device.id eisa 0x0550 -+device.name CPD-100GS -+driver.display |50-120|30-70 - - vendor.id SNY -&device.id eisa 0x0570 -+device.name CPD-200SX -+driver.display |50-150|30-70 - - vendor.id SNY -&device.id eisa 0x0650 -+device.name CPD-120VS -+driver.display |50-120|30-70 - - vendor.id SNY -&device.id eisa 0x0670 -+device.name CPD-220VS -+driver.display |50-120|30-70 - - vendor.id SNY -&device.id eisa 0x0770 -+device.name CPD-200ES -+driver.display |50-120|30-70 - - vendor.id SNY -&device.id eisa 0x0950 -+device.name CPD-L150 -+driver.display |50-65|30-70 - - vendor.id SNY -&device.id eisa 0x0a50 -+device.name CPD-101VS IGPE -+driver.display |50-120|30-70 - - vendor.id SNY -&device.id eisa 0x0a70 -+device.name CPD-200GS -+driver.display |50-120|30-85 - - vendor.id SNY -&device.id eisa 0x0c70 -+device.name GDM-200PS -+driver.display |48-160|30-92 - - vendor.id SNY -&device.id eisa 0x8050 -+device.name CPD-100SX -+driver.display |50-120|30-65 - - vendor.id STC -+vendor.name ALPHASCAN - - vendor.id STC -&device.id eisa 0x02c7 -+device.name 711 -+driver.display |50-120|30-70 - - vendor.id STC -&device.id eisa 0x02c8 -+device.name 712 -+driver.display |50-120|30-70 - - vendor.id STC -&device.id eisa 0x032b -+device.name 811 -+driver.display |50-150|30-95 - - vendor.id STC -&device.id eisa 0x0800 -+device.name 800S -+driver.display |50-150|30-95 - - vendor.id SUN -+vendor.name Sun - - vendor.id SUN -&device.id eisa 0x0567 -+device.name 21" Premium Color Monitor - - vendor.id TAT -+vendor.name TATUNG - - vendor.id TAT -&device.id eisa 0x1f65 -+device.name TM651X SERIE -+driver.display |50-90|31-65 - - vendor.id TAT -&device.id eisa 0x1f67 -+device.name TM671X SERIE -+driver.display |50-110|31-65 - - vendor.id TAT -&device.id eisa 0x2f44 -+device.name TM442X SERIE -+driver.display |50-100|30-50 - - vendor.id TAT -&device.id eisa 0x2f45 -+device.name TM452X SERIE -+driver.display |50-100|30-50 - - vendor.id TAT -&device.id eisa 0x3044 -+device.name C5D -+driver.display |50-100|30-54 - - vendor.id TAT -&device.id eisa 0x3054 -+device.name PC DIVISION V70 (XJ63754) -+driver.display |50-100|30-70 - - vendor.id TAT -&device.id eisa 0x434d -+device.name CM-17MC - - vendor.id TAT -&device.id eisa 0x4855 -+device.name CM-14UH - - vendor.id TAX -+vendor.name ERGOVISION - - vendor.id TAX -&device.id eisa 0xe430 -+device.name 430LR -+driver.display |50-110|30-54 - - vendor.id TAX -&device.id eisa 0xe550 -+device.name 550TCO95/TCO95-S -+driver.display |55-110|30-69 - - vendor.id TAX -&device.id eisa 0xe730 -+device.name 730TCO95/TCO95-S -+driver.display |50-120|30-69 - - vendor.id TAX -&device.id eisa 0xe740 -+device.name 740TCO95/TCO95-S -+driver.display |55-120|30-85 - - vendor.id TAX -&device.id eisa 0xe750 -+device.name 750TCO95 -+driver.display |50-130|30-86 - - vendor.id TAX -&device.id eisa 0xe760 -+device.name 760TCO95/TCO95-S -+driver.display |50-120|30-70 - - vendor.id TAX -&device.id eisa 0xe975 -+device.name 975TCO95 -+driver.display |50-150|30-95 - - vendor.id TOS -+vendor.name TOSHIBA - - vendor.id TOS -&device.id eisa 0x5000 -+device.name CRT17002 -+driver.display |50-130|30-66 - - vendor.id TOS -&device.id eisa 0x5001 -+device.name CRT15003 -+driver.display |50-110|30-66 - - vendor.id TOS -&device.id eisa 0x5002 -+device.name CRT21002 -+driver.display |50-152|30-95 - - vendor.id TRL -+vendor.name TRL/RIC - - vendor.id TRL -&device.id eisa 0x0010 -+device.name RH-1450 -+driver.display |47-90|29-50 - - vendor.id TRL -&device.id eisa 0x0110 -+device.name DL-1564M/DL-1564 -+driver.display |47-120|29-64 - - vendor.id TRL -&device.id eisa 0x0310 -+device.name DL-1750MU -+driver.display |47-120|29-70 - - vendor.id TRL -&device.id eisa 0x0410 -+device.name DH-1570M/DH-1570 -+driver.display |47-120|29-70 - - vendor.id TRL -&device.id eisa 0x0510 -+device.name DH-1764M/DH-1764 -+driver.display |47-120|29-70 - - vendor.id TRL -&device.id eisa 0x0610 -+device.name DH-1764UM/DH-1764U -+driver.display |47-120|29-85 - - vendor.id TRL -&device.id eisa 0x061c -+device.name DL-1564 -+driver.display |47-100|29-64 - - vendor.id TRL -&device.id eisa 0x0622 -+device.name DH-1570 -+driver.display |47-120|29-64 - - vendor.id TSB -+vendor.name TOSHIBA - - vendor.id TSB -&device.id eisa 0x5002 -+device.name EQUIUM 15-ZOLL MONITOR -+driver.display |50-100|30-66 - - vendor.id TSB -&device.id eisa 0x5003 -+device.name EQUIUM 17-ZOLL MONITOR -+driver.display |50-160|30-82 - - vendor.id TSB -&device.id eisa 0x5004 -+device.name DR569M (PV2001U) -+driver.display |50-110|30-69 - - vendor.id TSB -&device.id eisa 0x5005 -+device.name DR769MF (PV2002U) -+driver.display |50-110|30-69 - - vendor.id TVM -+vendor.name TVM - - vendor.id TVM -&device.id eisa 0x0487 -+device.name AS4DP/LR4DP-MODELL -+driver.display |50-120|30-55 - - vendor.id TVM -&device.id eisa 0x0588 -+device.name AS5S-MODELL -+driver.display |50-120|30-69 - - vendor.id TVM -&device.id eisa 0x0589 -+device.name TCO5S-MODELL -+driver.display |50-120|30-69 - - vendor.id TVM -&device.id eisa 0x0688 -+device.name TCO6S-MODELL -+driver.display |50-120|30-69 - - vendor.id UNM -+vendor.name UNISYS - - vendor.id UNM -&device.id eisa 0x1002 -+device.name EVG1000-E2 -+driver.display |50-65|30-50 - - vendor.id UNM -&device.id eisa 0x2001 -+device.name EVG2000-E -+driver.display |50-130|30-54 - - vendor.id UNM -&device.id eisa 0x2002 -+device.name EVG2000-P -+driver.display |50-150|30-70 - - vendor.id UNM -&device.id eisa 0x2014 -+device.name EVG-142-COL -+driver.display |50-120|30-48 - - vendor.id UNM -&device.id eisa 0x2015 -+device.name EVG-152-COL -+driver.display |50-130|30-48 - - vendor.id UNM -&device.id eisa 0x2101 -+device.name EVG2100-E -+driver.display |50-130|30-54 - - vendor.id UNM -&device.id eisa 0x2102 -+device.name EVG2100-P -+driver.display |50-150|30-70 - - vendor.id UNM -&device.id eisa 0x3001 -+device.name EVG3000-E -+driver.display |50-160|30-69 - - vendor.id UNM -&device.id eisa 0x3002 -+device.name EVG3000-P -+driver.display |50-160|30-95 - - vendor.id UNM -&device.id eisa 0x3015 -+device.name EVG-153-COL -+driver.display |50-120|30-65 - - vendor.id UNM -&device.id eisa 0x3101 -+device.name EVG3100-E -+driver.display |50-75|30-65 - - vendor.id UNM -&device.id eisa 0x3102 -+device.name EVG3100-P -+driver.display |50-160|30-95 - - vendor.id UNM -&device.id eisa 0x4002 -+device.name EVG4000-P -+driver.display |50-160|30-95 - - vendor.id UNM -&device.id eisa 0x4017 -+device.name EVG-174-COL -+driver.display |50-120|30-85 - - vendor.id UNM -&device.id eisa 0x5002 -+device.name EVG5000-P -+driver.display |50-160|30-95 - - vendor.id UNM -&device.id eisa 0x5021 -+device.name EVG-215-COL -+driver.display |50-160|30-95 - - vendor.id VSC -+vendor.name VIEWSONIC - - vendor.id VSC -&device.id eisa 0x0c00 -+device.name 17GS -+driver.display |50-160|30-69 - - vendor.id VSC -&device.id eisa 0x0c0f -+device.name 17PS -+driver.display |50-160|30-82 - - vendor.id VSC -&device.id eisa 0x0c1f -+device.name 17GA -+driver.display |50-160|30-69 - - vendor.id VSC -&device.id eisa 0x1600 -+device.name 21PS -+driver.display |50-160|30-82 - - vendor.id VSC -&device.id eisa 0x2600 -+device.name ViewSonic 15GS-2 - - vendor.id VSC -&device.id eisa 0x2601 -+device.name ViewSonic 15GS - - vendor.id VSC -&device.id eisa 0x3141 -+device.name 14ES -+driver.display |50-75|31-51 - - vendor.id VSC -&device.id eisa 0x3142+0x0002 -+device.name ViewSonic 14ES - - vendor.id VSC -&device.id eisa 0x3145 -+device.name 15GS-3 -+driver.display |50-120|30-69 - - vendor.id VSC -&device.id eisa 0x3252+0x0002 -+device.name ViewSonic 21PS-2 - - vendor.id VSC -&device.id eisa 0x3254 -+device.name PJ800 - - vendor.id VSC -&device.id eisa 0x334b+0x0002 -+device.name ViewSonic 17GS-2 - - vendor.id VSC -&device.id eisa 0x3351 -+device.name PT810 -+driver.display |50-130|30-86 - - vendor.id VSC -&device.id eisa 0x3441 -+device.name E641 -+driver.display |50-100|30-54 - - vendor.id VSC -&device.id eisa 0x344b+0x0002 -+device.name ViewSonic 17PS-2 - - vendor.id VSC -&device.id eisa 0x3451 -+device.name PT810-2 -+driver.display |50-130|30-95 - - vendor.id VSC -&device.id eisa 0x3454 -+device.name PJ1000 -+driver.display |50-85|31-64 - - vendor.id VSC -&device.id eisa 0x354d -+device.name GT800 -+driver.display |50-150|30-85 - - vendor.id VSC -&device.id eisa 0x354e -+device.name ViewSonic GT800 - - vendor.id VSC -&device.id eisa 0x3550 -+device.name ViewSonic GT800 - - vendor.id VSC -&device.id eisa 0x3551 -+device.name P810 -+driver.display |50-160|30-95 - - vendor.id VSC -&device.id eisa 0x3552 -+device.name P810-E -+driver.display |50-160|30-95 - - vendor.id VSC -&device.id eisa 0x3554 -+device.name PJL802 -+driver.display |50-85|31-61 - - vendor.id VSC -&device.id eisa 0x3641 -+device.name E641-2 -+driver.display |50-100|30-54 - - vendor.id VSC -&device.id eisa 0x3644 -+device.name 15GA -+driver.display |50-160|30-69 - - vendor.id VSC -&device.id eisa 0x3645 -+device.name G653 -+driver.display |50-120|30-70 - - vendor.id VSC -&device.id eisa 0x3646 -+device.name ViewSonic 15GA - - vendor.id VSC -&device.id eisa 0x3648 -+device.name ViewSonic 15GA - - vendor.id VSC -&device.id eisa 0x364a -+device.name PT770 -+driver.display |50-130|30-82 - - vendor.id VSC -&device.id eisa 0x364b+0x0002 -+device.name ViewSonic PT770 - - vendor.id VSC -&device.id eisa 0x3651 -+device.name P815 -+driver.display |50-160|30-115 - - vendor.id VSC -&device.id eisa 0x3744 -+device.name 15G-2 -+driver.display |50-100|30-66 - - vendor.id VSC -&device.id eisa 0x3745 -+device.name E655-2 -+driver.display |50-100|30-70 - - vendor.id VSC -&device.id eisa 0x3746 -+device.name ViewSonic 15G-2 - - vendor.id VSC -&device.id eisa 0x3748 -+device.name ViewSonic 15G-2 - - vendor.id VSC -&device.id eisa 0x374b+0x0002 -+device.name ViewSonic 17GA - - vendor.id VSC -&device.id eisa 0x374d -+device.name G800 -+driver.display |50-120|30-86 - - vendor.id VSC -&device.id eisa 0x3751 -+device.name G810 -+driver.display |50-160|30-89 - - vendor.id VSC -&device.id eisa 0x3844 -+device.name 15ES-2 -+driver.display |50-100|31-62 - - vendor.id VSC -&device.id eisa 0x3845 -+device.name VP150 -+driver.display |50-77|30-61 - - vendor.id VSC -&device.id eisa 0x3846 -+device.name ViewSonic 15ES-2 - - vendor.id VSC -&device.id eisa 0x3848 -+device.name ViewSonic 15ES-2 - - vendor.id VSC -&device.id eisa 0x384a -+device.name 17EA -+driver.display |50-120|30-65 - - vendor.id VSC -&device.id eisa 0x384b+0x0002 -+device.name ViewSonic 17EA - - vendor.id VSC -&device.id eisa 0x384d -+device.name G790 -+driver.display |50-180|30-95 - - vendor.id VSC -&device.id eisa 0x3851 -+device.name PT810-3 -+driver.display |50-160|30-96 - - vendor.id VSC -&device.id eisa 0x3854 -+device.name PJ820 -+driver.display |50-85|30-69 - - vendor.id VSC -&device.id eisa 0x3944 -+device.name ViewSonic 15GS-2 - - vendor.id VSC -&device.id eisa 0x3946 -+device.name ViewSonic 15GS-2 - - vendor.id VSC -&device.id eisa 0x3948 -+device.name ViewSonic 15GS-2 - - vendor.id VSC -&device.id eisa 0x394a -+device.name 17GS-2 -+driver.display |50-160|30-69 - - vendor.id VSC -&device.id eisa 0x394b+0x0002 -+device.name ViewSonic 17GS-2 - - vendor.id VSC -&device.id eisa 0x4145 -+device.name GA655 -+driver.display |50-180|30-70 - - vendor.id VSC -&device.id eisa 0x4151 -+device.name PT813 -+driver.display |50-160|30-107 - - vendor.id VSC -&device.id eisa 0x4244 -+device.name EA771B -+driver.display |50-120|30-70 - - vendor.id VSC -&device.id eisa 0x4245 -+device.name P655 -+driver.display |50-180|30-70 - - vendor.id VSC -&device.id eisa 0x424a -+device.name GT770 -+driver.display |50-120|30-65 - - vendor.id VSC -&device.id eisa 0x424b+0x0002 -+device.name ViewSonic GT770 - - vendor.id VSC -&device.id eisa 0x434a -+device.name 17PS-2 -+driver.display |50-160|30-86 - - vendor.id VSC -&device.id eisa 0x434b+0x0002 -+device.name ViewSonic 17PS-2 - - vendor.id VSC -&device.id eisa 0x434d -+device.name PS790 -+driver.display |50-180|30-95 - - vendor.id VSC -&device.id eisa 0x4439 -+device.name ViewSonic 15GS-2 - - vendor.id VSC -&device.id eisa 0x444a -+device.name 17GA-2 -+driver.display |50-160|30-69 - - vendor.id VSC -&device.id eisa 0x4637 -+device.name ViewSonic 1769DC - - vendor.id VSC -&device.id eisa 0x474a -+device.name PT775 -+driver.display |50-160|30-96 - - vendor.id VSC -&device.id eisa 0x4851 -+device.name P810-3 -+driver.display |50-180|30-95 - - vendor.id VSC -&device.id eisa 0x4951 -+device.name G810-2 -+driver.display |50-180|30-92 - - vendor.id VSC -&device.id eisa 0x4b4a -+device.name GT775 -+driver.display |50-160|30-86 - - vendor.id VSC -&device.id eisa 0x4c4a -+device.name G771 -+driver.display |50-180|30-70 - - vendor.id VSC -&device.id eisa 0x4d4a -+device.name EA771 -+driver.display |50-120|30-70 - - vendor.id VSC -&device.id eisa 0x504a -+device.name P775 -+driver.display |50-180|30-95 - - vendor.id VSC -&device.id eisa 0x514a -+device.name GA771 -+driver.display |50-180|30-70 - - vendor.id VSC -&device.id eisa 0x524a -+device.name G773 -+driver.display |50-160|30-70 - - vendor.id VSC -&device.id eisa 0x564a -+device.name E771 -+driver.display |50-120|30-70 - - vendor.id VSC -&device.id eisa 0x594a -+device.name GS771 -+driver.display |50-180|30-70 - - vendor.id VSC -&device.id eisa 0x5a4a -+device.name PT771 -+driver.display |50-160|30-92 - diff --git a/src/hwinfo/src/ids/src/mouse b/src/hwinfo/src/ids/src/mouse deleted file mode 100644 index 6e82a0ed16..0000000000 --- a/src/hwinfo/src/ids/src/mouse +++ /dev/null @@ -1,137 +0,0 @@ -# mice - - -# KYE: protocol info not verified - vendor.id KYE -&device.id eisa 0x0001 -|vendor.id LGI -&device.id eisa 0x8001 -+driver.mouse microsoft|ms|3|0 - - vendor.id LGI -&device.id eisa 0x800b+0x0002 -+driver.mouse mouseman|mman|3|0 - - vendor.id PNP -&device.id eisa 0x0f04 -|vendor.id PNP -&device.id eisa 0x0f05 -+driver.mouse mousesystems|msc|3|0 - - vendor.id PNP -&device.id eisa 0x0f01 -|vendor.id PNP -&device.id eisa 0x0f02 -|vendor.id PNP -&device.id eisa 0x0f0a -|vendor.id PNP -&device.id eisa 0x0f0b -|vendor.id PNP -&device.id eisa 0x0f0c -|vendor.id PNP -&device.id eisa 0x0f0d -|vendor.id special 0x0200 -&device.id special 0x0003 -+driver.mouse microsoft|ms - - vendor.id PNP -&device.id eisa 0x0f0e -+driver.mouse ps/2|ps2||0 - - vendor.id special 0x0200 -&device.id special 0x0002 -+driver.mouse explorerps/2|exps2||0 - -# genius usb netmouse pro - vendor.id usb 0x0458 -&device.id usb 0x0002 -+driver.mouse explorerps/2|exps2|4|0 - -# MS IntelliMouse Explorer - vendor.id usb 0x045e -&device.id usb 0x001e -# Logitech Wheelmouse Model M-BB48 -|vendor.id usb 0x046d -&device.id usb 0xc001 -# Optical(?) Logitech Wheel Mouse -|vendor.id usb 0x046d -&device.id usb 0xc00c -# Optical Logitech Wheel Mouse (#16003) -|vendor.id usb 0x046d -&device.id usb 0xc00e -# Optical Logitech Wheel Mouse (#22797) -|vendor.id usb 0x046d -&device.id usb 0xc030 -# some mouse (#29468) -|vendor.id usb 0x046d -&device.id usb 0xc404 -# some mouse (#29719) -|vendor.id usb 0x0461 -&device.id usb 0x4d03 -+driver.mouse explorerps/2|exps2|3|1 - -# MouseMan Dual Optical (#18296) -# http://www.logitech.com/index.cfm?page=products/details&CRID=3&CONTENTID=4984&countryid=7&languageid=4 - vendor.id usb 0x046d -&device.id usb 0xc012 -+driver.mouse explorerps/2|exps2|4|1 - - vendor.id usb 0x05fe -&device.id usb 0x0005 -+driver.mouse explorerps/2|exps2|3|1 - -# apple/logitech usb mouse - vendor.id usb 0x05ac -&device.id usb 0x0301 -+driver.mouse explorerps/2|exps2|1|0 - -# Razer Boomslang USB Mouse - vendor.id usb 0x05e3 -&device.id usb 0x000b -+driver.mouse explorerps/2|exps2|5|1 - -# ADB mice - vendor.id special 0x0100 -&device.id special 0x0300+0x0100 -+driver.mouse explorerps/2|exps2|1|0 - -# general USB mice - vendor.id special 0x0200 -&device.id special 0x0001 -+driver.mouse explorerps/2|exps2 - - vendor.id special 0x0200 -&device.id special 0x0004 -+driver.mouse explorerps/2|exps2|3|1 - - vendor.id special 0x0200 -&device.id special 0x0005 -+driver.mouse explorerps/2|exps2|5|1 - - vendor.id special 0x0200 -&device.id special 0x0006 -+driver.mouse ps/2|ps2|2|0 - - vendor.id special 0x0200 -&device.id special 0x0007 -+driver.mouse ps/2|ps2|3|0 - -# Sun Mouse (/dev/sunmouse) - vendor.id special 0x0202 -&device.id special 0x0000 -+driver.mouse mousesystems|sun|3|0 - -# very special (mouse devices) - vendor.id special 0x0210 -&device.id special 0x0000+0x0100 -+driver.mouse explorerps/2|exps2 - -# A4Tech 4D++ super whatever mouse (#24137) - vendor.name A4W -+vendor.name A4Tech - - device.id eisa 0x0005 -&vendor.name A4Tech -+device.name Serial Wheel Mouse -+driver.mouse intellimouse|ms3|3|2 - diff --git a/src/hwinfo/src/ids/src/network b/src/hwinfo/src/ids/src/network deleted file mode 100644 index 71e644edef..0000000000 --- a/src/hwinfo/src/ids/src/network +++ /dev/null @@ -1,1330 +0,0 @@ -# network adapter - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# pci/isapnp/sbus adapter - -# modinfo - vendor.id pci 0x14e4 -&device.id pci 0x4401+2 -|vendor.id pci 0x14e4 -&device.id pci 0x170c -+driver.module.modprobe b44 - -# pcimap - vendor.id pci 0x10de -&device.id pci 0x0066 -|vendor.id pci 0x10de -&device.id pci 0x00d6 -|vendor.id pci 0x10de -&device.id pci 0x01c3 -+driver.module.modprobe forcedeth - -# net/r8169.c - vendor.id pci 0x10ec -&device.id pci 0x8169 -+driver.module.modprobe r8169 - -# net/tokenring/tmspci.c - vendor.id pci 0x0e11 -&device.id pci 0x0508 -|vendor.id pci 0x10b7 -&device.id pci 0x3390 -|vendor.id pci 0x10da -&device.id pci 0x0508 -|vendor.id pci 0x1148 -&device.id pci 0x4200 -+driver.module.modprobe tmspci - -# net/tlan.c - vendor.id pci 0x0e11 -&device.id pci 0xae32 -|vendor.id pci 0x0e11 -&device.id pci 0xae34+0x0002 -|vendor.id pci 0x0e11 -&device.id pci 0xae40 -|vendor.id pci 0x0e11 -&device.id pci 0xae43 -|vendor.id pci 0x0e11 -&device.id pci 0xb011+0x0002 -|vendor.id pci 0x0e11 -&device.id pci 0xb030 -|vendor.id pci 0x0e11 -&device.id pci 0xf130 -|vendor.id pci 0x0e11 -&device.id pci 0xf150 -|vendor.id pci 0x108d -&device.id pci 0x0012+0x0003 -+driver.module.modprobe tlan - -# net/yellowfin.c - vendor.id pci 0x1000 -&device.id pci 0x0701+0x0002 -+driver.module.modprobe yellowfin - -# net/natsemi.c - vendor.id pci 0x100b -&device.id pci 0x0020 -+driver.module.modprobe natsemi - -# net/ns83820.c - vendor.id pci 0x100b -&device.id pci 0x0022 -+driver.module.modprobe ns83820 - -# for an overview of de4x5 vs. tulip see bugs: -# #7317, #11093, #15303, #16036, #17303, #39127 - -# net/de4x5.c -# net/tulip.c - vendor.id pci 0x1011 -&device.id pci 0x0014 -|vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1113 -&subdevice.id pci 0x1207 -|vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x146c -&subdevice.id pci 0x1430 -+driver.module.modprobe de4x5 -+driver.module.modprobe tulip - - vendor.id pci 0x1011 -&device.id pci 0x0002 -|vendor.id pci 0x1011 -&device.id pci 0x0009 -|vendor.id pci 0x1011 -&device.id pci 0x0019 -+driver.module.modprobe tulip -+driver.module.modprobe de4x5 - -#pcimap - vendor.id pci 0x1011 -&device.id pci 0x0002 -|vendor.id pci 0x1011 -&device.id pci 0x0009 -|vendor.id pci 0x1011 -&device.id pci 0x0014 -|vendor.id pci 0x1011 -&device.id pci 0x0019 -|vendor.id pci 0x104a -&device.id pci 0x0981 -|vendor.id pci 0x104a -&device.id pci 0x2774 -|vendor.id pci 0x10d9 -&device.id pci 0x0512 -|vendor.id pci 0x10d9 -&device.id pci 0x0531 -|vendor.id pci 0x1113 -&device.id pci 0x1216+0x0002 -|vendor.id pci 0x1113 -&device.id pci 0x9511 -|vendor.id pci 0x1186 -&device.id pci 0x1561 -|vendor.id pci 0x11ad -&device.id pci 0x0002 -|vendor.id pci 0x11ad -&device.id pci 0xc115 -|vendor.id pci 0x11f6 -&device.id pci 0x9881 -|vendor.id pci 0x1259 -&device.id pci 0xa120 -|vendor.id pci 0x125b -&device.id pci 0x1400 -|vendor.id pci 0x1317 -&device.id pci 0x0981 -|vendor.id pci 0x1317 -&device.id pci 0x0985 -|vendor.id pci 0x1317 -&device.id pci 0x1985 -|vendor.id pci 0x1317 -&device.id pci 0x9511 -|vendor.id pci 0x13d1 -&device.id pci 0xab02+0x0002 -|vendor.id pci 0x13d1 -&device.id pci 0xab08 -|vendor.id pci 0x14f1 -&device.id pci 0x1803 -|vendor.id pci 0x1626 -&device.id pci 0x8410 -|vendor.id pci 0x1737 -&device.id pci 0xab09 -|vendor.id pci 0x17b3 -&device.id pci 0xab08 -|vendor.id pci 0x8086 -&device.id pci 0x0039 -+driver.module.modprobe tulip - -# pcimap - vendor.id pci 0x10b9 -&device.id pci 0x5261 -|vendor.id pci 0x1282 -&device.id pci 0x9009 -|vendor.id pci 0x1282 -&device.id pci 0x9132 -+driver.module.modprobe dmfe - -# see #19271 - vendor.id pci 0x1282 -&device.id pci 0x9102 -+driver.module.modprobe dmfe -+driver.module.modprobe tulip - - vendor.id pci 0x1282 -&device.id pci 0x9100 -+driver.module.modprobe tulip -+driver.module.modprobe dmfe - -# net/wan/lmc/lmc_main.c - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1379 -+driver.module.modprobe lmc - -# net/defxx.c - vendor.id pci 0x1011 -&device.id pci 0x000f -+driver.module.modprobe defxx - -# pcimap - vendor.id pci 0x1011 -&device.id pci 0x001a -|vendor.id pci 0x10a9 -&device.id pci 0x0009 -|vendor.id pci 0x10b7 -&device.id pci 0x0001 -|vendor.id pci 0x12ae -&device.id pci 0x0001+0x0002 -|vendor.id pci 0x12ae -&device.id pci 0x00fa -|vendor.id pci 0x1385 -&device.id pci 0x620a -|vendor.id pci 0x1385 -&device.id pci 0x630a -+driver.module.modprobe acenic - -# net/tokenring/lanstreamer.c - vendor.id pci 0x1014 -&device.id pci 0x0018 -+driver.module.modprobe lanstreamer - -# net/olympic.c - vendor.id pci 0x1014 -&device.id pci 0x003e -+driver.module.modprobe olympic - -# net/hp100.c - vendor.id pci 0x101a -&device.id pci 0x0005 -|vendor.id pci 0x103c -&device.id pci 0x1030+0x0002 -|vendor.id pci 0x11f6 -&device.id pci 0x0112 -+driver.module.modprobe hp100 - -# net/pcnet32.c - vendor.id pci 0x1022 -&device.id pci 0x2000+0x0002 -+driver.module.modprobe pcnet32 - -# net/amd8111e.c - vendor.id pci 0x1022 -&device.id pci 0x7462 -+driver.module.modprobe amd8111e - -# net/sis900.c - vendor.id pci 0x1039 -&device.id pci 0x0900 -|vendor.id pci 0x1039 -&device.id pci 0x7016 -+driver.module.modprobe sis900 - -# net/winbond-840.c - vendor.id pci 0x1050 -&device.id pci 0x0840 -|vendor.id pci 0x11f6 -&device.id pci 0x2011 -+driver.module.modprobe winbond-840 - -# net/ne2k-pci.c - vendor.id pci 0x1050 -&device.id pci 0x0940 -|vendor.id pci 0x1050 -&device.id pci 0x5a5a -|vendor.id pci 0x10bd -&device.id pci 0x0e34 -|vendor.id pci 0x10ec -&device.id pci 0x8029 -|vendor.id pci 0x1106 -&device.id pci 0x0926 -|vendor.id pci 0x11f6 -&device.id pci 0x1401 -|vendor.id pci 0x12c3 -&device.id pci 0x0058 -|vendor.id pci 0x12c3 -&device.id pci 0x5598 -|vendor.id pci 0x4a14 -&device.id pci 0x5000 -|vendor.id pci 0x8e2e -&device.id pci 0x3000 -+driver.module.modprobe ne2k-pci - -# net/sungem.c (pci) -# (used to be gmac) - vendor.id pci 0x106b -&device.id pci 0x0021 -|vendor.id pci 0x106b -&device.id pci 0x0024 -|vendor.id pci 0x108e -&device.id pci 0x1101 -|vendor.id pci 0x108e -&device.id pci 0x2bad -+driver.module.modprobe sungem - -# net/fc/iph5526.c - vendor.id pci 0x107e -&device.id pci 0x0004+0x0002 -+driver.module.modprobe iph5526 - -# net/sunhme.c (pci, sbus) - vendor.id pci 0x108e -&device.id pci 0x1001 -|vendor.id special 0x4001 -&device.id special 0x3001 -+driver.module.modprobe sunhme - -# net/tokenring/abyss.c - vendor.id pci 0x10b6 -&device.id pci 0x0002 -+driver.module.modprobe abyss - -# pcimap - vendor.id pci 0x10b7 -&device.id pci 0x4500 -|vendor.id pci 0x10b7 -&device.id pci 0x5055 -|vendor.id pci 0x10b7 -&device.id pci 0x5057 -|vendor.id pci 0x10b7 -&device.id pci 0x5157 -|vendor.id pci 0x10b7 -&device.id pci 0x5257 -|vendor.id pci 0x10b7 -&device.id pci 0x5900 -|vendor.id pci 0x10b7 -&device.id pci 0x5920 -|vendor.id pci 0x10b7 -&device.id pci 0x5950+0x0003 -|vendor.id pci 0x10b7 -&device.id pci 0x5970 -|vendor.id pci 0x10b7 -&device.id pci 0x5b57 -|vendor.id pci 0x10b7 -&device.id pci 0x6055+0x0002 -|vendor.id pci 0x10b7 -&device.id pci 0x6560 -|vendor.id pci 0x10b7 -&device.id pci 0x6562 -|vendor.id pci 0x10b7 -&device.id pci 0x6564 -|vendor.id pci 0x10b7 -&device.id pci 0x7646 -|vendor.id pci 0x10b7 -&device.id pci 0x9000+0x0002 -|vendor.id pci 0x10b7 -&device.id pci 0x9004+0x0003 -|vendor.id pci 0x10b7 -&device.id pci 0x900a -|vendor.id pci 0x10b7 -&device.id pci 0x9050+0x0002 -|vendor.id pci 0x10b7 -&device.id pci 0x9055 -|vendor.id pci 0x10b7 -&device.id pci 0x9058 -|vendor.id pci 0x10b7 -&device.id pci 0x905a -|vendor.id pci 0x10b7 -&device.id pci 0x9200+0x0002 -|vendor.id pci 0x10b7 -&device.id pci 0x9800 -|vendor.id pci 0x10b7 -&device.id pci 0x9805 -+driver.module.modprobe 3c59x - -# net/epic100.c - vendor.id pci 0x10b8 -&device.id pci 0x0005+0x0002 -+driver.module.modprobe epic100 - -# modules.alias - vendor.id pci 0x018a -&device.id pci 0x0106 -|vendor.id pci 0x021b -&device.id pci 0x8139 -|vendor.id pci 0x02ac -&device.id pci 0x1012 -|vendor.id pci 0x10ec -&device.id pci 0x8129 -|vendor.id pci 0x10ec -&device.id pci 0x8138 -|vendor.id pci 0x10ec -&device.id pci 0x8139 -&rev.id 0x0000+0x0020 -|vendor.id pci 0x1113 -&device.id pci 0x1211 -|vendor.id pci 0x1186 -&device.id pci 0x1300 -|vendor.id pci 0x1186 -&device.id pci 0x1340 -|vendor.id pci 0x11db -&device.id pci 0x1234 -|vendor.id pci 0x1259 -&device.id pci 0xa117 -|vendor.id pci 0x1259 -&device.id pci 0xa11e -|vendor.id pci 0x126c -&device.id pci 0x1211 -|vendor.id pci 0x13d1 -&device.id pci 0xab06 -|vendor.id pci 0x1432 -&device.id pci 0x9130 -|vendor.id pci 0x14ea -&device.id pci 0xab06+0x0002 -|vendor.id pci 0x1500 -&device.id pci 0x1360 -|vendor.id pci 0x1743 -&device.id pci 0x8139 -|vendor.id pci 0x4033 -&device.id pci 0x1360 -|device.id pci 0x8139 -&subvendor.id pci 0x10ec -&subdevice.id pci 0x8139 -|device.id pci 0x8139 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1300 -|device.id pci 0x8139 -&subvendor.id pci 0x13d1 -&subdevice.id pci 0xab06 -+driver.module.modprobe 8139too - -# modules.alias - vendor.id pci 0x10ec -&device.id pci 0x8139 -&rev.id 0x0020+0x00e0 -+driver.module.modprobe 8139cp - -# net/via_rhine.c - vendor.id pci 0x1106 -&device.id pci 0x3043 -|vendor.id pci 0x1106 -&device.id pci 0x3065 -|vendor.id pci 0x1106 -&device.id pci 0x6100 -+driver.module.modprobe via-rhine - -# net/skfp/ - vendor.id pci 0x1148 -&device.id pci 0x4000 -+driver.module.modprobe skfp - -# net/sk98lin/h/skdrv2nd.h::SK_PCI_ISCOMPLIANT() - vendor.id pci 0x1148 -&device.id pci 0x4300 -|vendor.id pci 0x1148 -&device.id pci 0x4320 -|vendor.id pci 0x10b7 -&device.id pci 0x1700 -|vendor.id pci 0x1186 -&device.id pci 0x4c00 -|vendor.id pci 0x11ab -&device.id pci 0x4320 -|vendor.id pci 0x1371 -&device.id pci 0x434e -|vendor.id pci 0x1737 -&device.id pci 0x1032 -|vendor.id pci 0x1737 -&device.id pci 0x1064 -+driver.module.modprobe sk98lin - -# net/dgrs.c - vendor.id pci 0x114f -&device.id pci 0x0003 -+driver.module.modprobe dgrs - -# net/irda/toshoboe.c - vendor.id pci 0x1179 -&device.id pci 0x0701 -+driver.module.modprobe toshoboe - -# net/sundance.c - vendor.id pci 0x1186 -&device.id pci 0x1002 -|vendor.id pci 0x13f0 -&device.id pci 0x0201 -+driver.module.modprobe sundance - -# net/dl2k.c - vendor.id pci 0x1186 -&device.id pci 0x4000 -+driver.module.modprobe dl2k - -# net/wan/sdladrv.c - vendor.id pci 0x11b0 -&device.id pci 0x0002 -+driver.module.modprobe sdladrv - -# net/rrunner.c - vendor.id pci 0x120f -&device.id pci 0x0001 -+driver.module.modprobe rrunner - -# net/hamachi.c - vendor.id pci 0x1318 -&device.id pci 0x0911 -+driver.module.modprobe hamachi - -# see #14848 - vendor.id pci 0x1385 -&device.id pci 0x4100 -+driver.module.modprobe prism2_plx - -# net/aironet4500_card.c - vendor.id pci 0x14b9 -&device.id pci 0x0001 -|vendor.id pci 0x14b9 -&device.id pci 0x4500 -|vendor.id pci 0x14b9 -&device.id pci 0x4800 -+driver.module.modprobe aironet4500 - -# modules.alias - vendor.id pci 0x106b -&device.id pci 0x1645 -|vendor.id pci 0x1148 -&device.id pci 0x4400 -|vendor.id pci 0x1148 -&device.id pci 0x4500 -|vendor.id pci 0x14e4 -&device.id pci 0x164d -|vendor.id pci 0x173b -&device.id pci 0x03e8+0x0004 -+driver.module.modprobe tg3 - -# modules.alias -# tg3 vs. bcm5700: #34486, #36992 - vendor.id pci 0x14e4 -&device.id pci 0x1644+0x0006 -|vendor.id pci 0x14e4 -&device.id pci 0x1653+0x0002 -|vendor.id pci 0x14e4 -&device.id pci 0x165d+0x0002 -|vendor.id pci 0x14e4 -&device.id pci 0x166e -|vendor.id pci 0x14e4 -&device.id pci 0x1696 -|vendor.id pci 0x14e4 -&device.id pci 0x169c -|vendor.id pci 0x14e4 -&device.id pci 0x16a6+0x0003 -|vendor.id pci 0x14e4 -&device.id pci 0x16c6+0x0002 -|vendor.id pci 0x14e4 -&device.id pci 0x170d+0x0002 -+driver.module.modprobe tg3 -+driver.module.modprobe bcm5700 - - vendor.id pci 0x14e4 -&device.id pci 0x4401 -+driver.module.modprobe bcm4400 - -# net/arcnet/com20020-pci.c - vendor.id pci 0x1571 -&device.id pci 0xa001+0x0013 -|vendor.id pci 0x1571 -&device.id pci 0xa201+0x0006 -+driver.module.modprobe om20020-pci - -# net/rcpci45.c - vendor.id pci 0x4916 -&device.id pci 0x1960 -+driver.module.modprobe rcpci45 - -# pcimap - vendor.id pci 0x8086 -&device.id pci 0x1050+0x0006 -+driver.module.modprobe e100 - -# pcimap - vendor.id pci 0x8086 -&device.id pci 0x1035+0x0003 -|vendor.id pci 0x8086 -&device.id pci 0x1227+0x0002 -|vendor.id pci 0x8086 -&device.id pci 0x5200+0x0002 -+driver.module.modprobe eepro100 - -# pcimap - vendor.id pci 0x8086 -&device.id pci 0x1029 -|vendor.id pci 0x8086 -&device.id pci 0x1030+0x0005 -|vendor.id pci 0x8086 -&device.id pci 0x1038+0x0007 -|vendor.id pci 0x8086 -&device.id pci 0x1059 -|vendor.id pci 0x8086 -&device.id pci 0x1209 -|vendor.id pci 0x8086 -&device.id pci 0x1229 -|vendor.id pci 0x8086 -&device.id pci 0x2449 -|vendor.id pci 0x8086 -&device.id pci 0x2459 -|vendor.id pci 0x8086 -&device.id pci 0x245d -+driver.module.modprobe e100 -+driver.module.modprobe eepro100 - -# pcimap - vendor.id pci 0x8086 -&device.id pci 0x1000+0x0002 -|vendor.id pci 0x8086 -&device.id pci 0x1004 -|vendor.id pci 0x8086 -&device.id pci 0x1008+0x0002 -|vendor.id pci 0x8086 -&device.id pci 0x100c+0x000e -|vendor.id pci 0x8086 -&device.id pci 0x101d+0x0002 -|vendor.id pci 0x8086 -&device.id pci 0x1026+0x0003 -|vendor.id pci 0x8086 -&device.id pci 0x1075+0x0007 -+driver.module.modprobe e1000 - -# net/starfire.c - vendor.id pci 0x9004 -&device.id pci 0x6915 -+driver.module.modprobe starfire - - - vendor.id pci 0x8086 -&device.id pci 0x1043 -+driver.module.modprobe ipw2100 - - -# make it an ethernet card explicitly (#65852) - vendor.id pci 0x10de -&device.id pci 0x0037+0x0002 -|vendor.id pci 0x10de -&device.id pci 0x0056+0x0002 -|vendor.id pci 0x10de -&device.id pci 0x0066 -|vendor.id pci 0x10de -&device.id pci 0x0086 -|vendor.id pci 0x10de -&device.id pci 0x008c -|vendor.id pci 0x10de -&device.id pci 0x00d6 -|vendor.id pci 0x10de -&device.id pci 0x00df -|vendor.id pci 0x10de -&device.id pci 0x00e6 -|vendor.id pci 0x10de -&device.id pci 0x01c3 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe forcedeth - - -# net/ne.c - vendor.id AXE -&device.id eisa 0x2201 -|vendor.id PNP -&device.id eisa 0x80d6 -+driver.module.modprobe ne -+driver.module.config options ne io= irq= -+driver.module.insmod 8390|ne io= irq= - -# net/3c509.c - vendor.id PNP -&device.id eisa 0x80f7+0x0002 -|vendor.id TCM -&device.id eisa 0x5090+0x0002 -|vendor.id TCM -&device.id eisa 0x5094+0x0002 -|vendor.id TCM -&device.id eisa 0x5098 -+driver.module.modprobe 3c509 - -# mac ethernet controller - vendor.id special 0x0401 -&device.id special 0x0020 -+driver.module.modprobe mace - -# mac ethernet controller - vendor.id special 0x0401 -&device.id special 0x0021+0x0002 -+driver.module.modprobe bmac - -# net/sunqe.c (sbus) - vendor.id special 0x4001 -&device.id special 0x3003 -+driver.module.modprobe sunqe - -# net/myri_sbus.c (sbus) - vendor.id special 0x4001 -&device.id special 0x3004 -+driver.module.modprobe myri_sbus - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# usb network adapter - - vendor.id usb 0x0411 -+vendor.name MELCO - - vendor.id usb 0x0411 -&device.id usb 0x0001 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name BUFFALO LUA-TX - - vendor.id usb 0x04bb -+vendor.name IO Data - - vendor.id usb 0x04bb -&device.id usb 0x0904 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name USB ET/TX - - vendor.id usb 0x056e -+vendor.name LANEED - - vendor.id usb 0x056e -&device.id usb 0x4002 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name LD-USB/TX - - vendor.id usb 0x05e9 -+vendor.name SONY - - vendor.id usb 0x05e9 -&device.id usb 0x0009 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name Ethernet USB - - vendor.id usb 0x066b -+vendor.name Linksys - - vendor.id usb 0x066b -&device.id usb 0x2203+0x0002 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name USB100TX - - vendor.id usb 0x066b -&device.id usb 0x2206 -+baseclass.id 0x002 -+subclass.id 0x00 - - vendor.id usb 0x0707 -+vendor.name SMC - - vendor.id usb 0x0707 -&device.id usb 0x0100 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name 2102 EZ Ethernet USB - - vendor.id usb 0x0707 -&device.id usb 0x0200 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name 202 USB Ethernet - - vendor.id usb 0x07a6 -+vendor.name ADMtek - - vendor.id usb 0x07a6 -&device.id usb 0x0986 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name AN986 USB Ethernet - - vendor.id usb 0x07aa -+vendor.name Corega - - vendor.id usb 0x07aa -&device.id usb 0x0001 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name FEther USB-T - - vendor.id usb 0x07aa -&device.id usb 0x0004 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name FEther USB-TX - - vendor.id usb 0x07b8 -|vendor.id usb 0x2001 -+vendor.name D-Link - - vendor.id usb 0x07b8 -&device.id usb 0x4002 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name DRU-E100 - - vendor.id usb 0x07b8 -&device.id usb 0xabc1 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name DU-10 - - vendor.id usb 0x083a -+vendor.name Accton - - vendor.id usb 0x083a -&device.id usb 0x1046 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name USB 10/100 Ethernet Adapter - - vendor.id usb 0x08dd -+vendor.name Billionton - - vendor.id usb 0x08dd -&device.id usb 0x0986 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name USB-100 - - vendor.id usb 0x2001 -&device.id usb 0x4001+0x0002 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name DSB-650X - - vendor.id usb 0x2001 -&device.id usb 0x4003 -+baseclass.id 0x002 -+subclass.id 0x00 -+device.name DSB-650X(PNA) - - - vendor.id usb 0x03e8 -&device.id usb 0x0008 -|vendor.id usb 0x04bb -&device.id usb 0x0901 -|vendor.id usb 0x0506 -&device.id usb 0x03e8 -|vendor.id usb 0x0506 -&device.id usb 0x11f8 -|vendor.id usb 0x0557 -&device.id usb 0x2002 -|vendor.id usb 0x0557 -&device.id usb 0x4000 -|vendor.id usb 0x0565 -&device.id usb 0x0002+0x0002 -|vendor.id usb 0x0565 -&device.id usb 0x0005 -|vendor.id usb 0x05e9 -&device.id usb 0x0008+0x0002 -|vendor.id usb 0x06e1 -&device.id usb 0x0008+0x0002 -|vendor.id usb 0x0707 -&device.id usb 0x0100 -|vendor.id usb 0x07aa -&device.id usb 0x0001 -|vendor.id usb 0x07b8 -&device.id usb 0x4000 -|vendor.id usb 0x0846 -&device.id usb 0x1001+0x0002 -|vendor.id usb 0x085a -&device.id usb 0x0008+0x0002 -|vendor.id usb 0x087d -&device.id usb 0x5704 -|vendor.id usb 0x0951 -&device.id usb 0x0008 -|vendor.id usb 0x095a -&device.id usb 0x3003 -|vendor.id usb 0x10bd -&device.id usb 0x1427 -|vendor.id usb 0x1342 -&device.id usb 0x0204 -|vendor.id usb 0x13d2 -&device.id usb 0x0400 -|vendor.id usb 0x1485 -&device.id usb 0x0001 -|vendor.id usb 0x1645 -&device.id usb 0x0005 -|vendor.id usb 0x1645 -&device.id usb 0x0008 -|vendor.id usb 0x1645 -&device.id usb 0x8005 -|vendor.id usb 0x2001 -&device.id usb 0x4000 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe kaweth - - vendor.id usb 0x03f0 -&device.id usb 0x811c -|vendor.id usb 0x0411 -&device.id usb 0x0001 -|vendor.id usb 0x0411 -&device.id usb 0x0005 -|vendor.id usb 0x0411 -&device.id usb 0x0009 -|vendor.id usb 0x045e -&device.id usb 0x007a -|vendor.id usb 0x049f -&device.id usb 0x8511 -|vendor.id usb 0x04bb -&device.id usb 0x0904 -|vendor.id usb 0x04bb -&device.id usb 0x0913 -|vendor.id usb 0x0506 -&device.id usb 0x4601 -|vendor.id usb 0x050d -&device.id usb 0x0121 -|vendor.id usb 0x0557 -&device.id usb 0x2007 -|vendor.id usb 0x056e -&device.id usb 0x200c -|vendor.id usb 0x056e -&device.id usb 0x4002 -|vendor.id usb 0x056e -&device.id usb 0x400b -|vendor.id usb 0x056e -&device.id usb 0xabc1 -|vendor.id usb 0x05cc -&device.id usb 0x3000 -|vendor.id usb 0x066b -&device.id usb 0x200c -|vendor.id usb 0x066b -&device.id usb 0x2203+0x0002 -|vendor.id usb 0x066b -&device.id usb 0x2206 -|vendor.id usb 0x066b -&device.id usb 0x400b -|vendor.id usb 0x067c -&device.id usb 0x1001 -|vendor.id usb 0x0707 -&device.id usb 0x0200+0x0002 -|vendor.id usb 0x07a6 -&device.id usb 0x07c2 -|vendor.id usb 0x07a6 -&device.id usb 0x0986 -|vendor.id usb 0x07a6 -&device.id usb 0x8511 -|vendor.id usb 0x07a6 -&device.id usb 0x8513 -|vendor.id usb 0x07a6 -&device.id usb 0x8515 -|vendor.id usb 0x07aa -&device.id usb 0x0004 -|vendor.id usb 0x07aa -&device.id usb 0x000d -|vendor.id usb 0x07b8 -&device.id usb 0x110c -|vendor.id usb 0x07b8 -&device.id usb 0x200c -|vendor.id usb 0x07b8 -&device.id usb 0x4002 -|vendor.id usb 0x07b8 -&device.id usb 0x4004 -|vendor.id usb 0x07b8 -&device.id usb 0x4007 -|vendor.id usb 0x07b8 -&device.id usb 0x400b+0x0002 -|vendor.id usb 0x07b8 -&device.id usb 0x4102 -|vendor.id usb 0x07b8 -&device.id usb 0x4104 -|vendor.id usb 0x07b8 -&device.id usb 0xabc1 -|vendor.id usb 0x07c9 -&device.id usb 0xb100 -|vendor.id usb 0x083a -&device.id usb 0x1046 -|vendor.id usb 0x083a -&device.id usb 0x5046 -|vendor.id usb 0x0846 -&device.id usb 0x1020 -|vendor.id usb 0x08d1 -&device.id usb 0x0003 -|vendor.id usb 0x08dd -&device.id usb 0x0986+0x0003 -|vendor.id usb 0x08dd -&device.id usb 0x8511 -|vendor.id usb 0x0951 -&device.id usb 0x000a -|vendor.id usb 0x0b39 -&device.id usb 0x0109 -|vendor.id usb 0x0b39 -&device.id usb 0x0901 -|vendor.id usb 0x0db7 -&device.id usb 0x0002 -|vendor.id usb 0x0e66 -&device.id usb 0x400c -|vendor.id usb 0x1044 -&device.id usb 0x8002 -|vendor.id usb 0x1342 -&device.id usb 0x0304 -|vendor.id usb 0x15e8 -&device.id usb 0x9100 -|vendor.id usb 0x15e8 -&device.id usb 0x9110 -|vendor.id usb 0x2001 -&device.id usb 0x200c -|vendor.id usb 0x2001 -&device.id usb 0x4001+0x0003 -|vendor.id usb 0x2001 -&device.id usb 0x400b -|vendor.id usb 0x2001 -&device.id usb 0x4102 -|vendor.id usb 0x2001 -&device.id usb 0xabc1 -|vendor.id usb 0x3334 -&device.id usb 0x1701 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe pegasus - - vendor.id usb 0x0411 -&device.id usb 0x0012 -|vendor.id usb 0x07b8 -&device.id usb 0x401a -|vendor.id usb 0x0bda -&device.id usb 0x8150 -|vendor.id usb 0x3980 -&device.id usb 0x0003 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe rtl8150 - - vendor.id usb 0x0423 -&device.id usb 0x000a -|vendor.id usb 0x0423 -&device.id usb 0x000c -|vendor.id usb 0x08d1 -&device.id usb 0x0001 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe catc - - vendor.id usb 0x066b -&device.id usb 0x2202 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe pegasus -+driver.module.modprobe kaweth - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# myrinet adapter - - vendor.id pci 0x14c1 -+vendor.name Myricom, Inc. - - vendor.id pci 0x14c1 -&device.id pci 0x8043 -+baseclass.id 0x002 -+subclass.id 0x81 -+driver.module.modprobe gm -+device.name Myrinet Adapter - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# bluetooth usb devices - vendor.id usb 0x044e -&device.id usb 0x3001+0x0002 -|vendor.id usb 0x04bf -&device.id usb 0x030a -|vendor.id usb 0x057c -&device.id usb 0x3800 -|vendor.id usb 0x0bdb -&device.id usb 0x1002 -+driver.module.modprobe hci_usb -+baseclass.id 0x115 -+subclass.id 0x00 - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# firmware - - vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x103c -&subdevice.id pci 0x2741 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2701+0x0002 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2711+0x0002 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2721+0x0002 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2731+0x0002 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2741+0x0002 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2751+0x0004 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2761+0x0002 -|vendor.id pci 0x8086 -&device.id pci 0x104f -|vendor.id pci 0x8086 -&device.id pci 0x4220 -|vendor.id pci 0x8086 -&device.id pci 0x4223 -+driver.module.modprobe ipw2200 -+requires ipw-firmware - - vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2520+0x000a -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x252b+0x0003 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2550+0x0002 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2553+0x0003 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2560+0x0004 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2565+0x0003 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2570 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2580+0x0004 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2585+0x0003 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2590+0x0004 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2596 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2598 -|vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x25a0 -+driver.module.modprobe ipw2100 -+requires ipw-firmware - - - vendor.id usb 0x03eb -&device.id usb 0x4102 -|vendor.id usb 0x03eb -&device.id usb 0x7605 -|vendor.id usb 0x049f -&device.id usb 0x0032 -|vendor.id usb 0x04a5 -&device.id usb 0x9001 -|vendor.id usb 0x0506 -&device.id usb 0x0a01 -|vendor.id usb 0x050d -&device.id usb 0x0050 -|vendor.id usb 0x0681 -&device.id usb 0x001b -|vendor.id usb 0x069a -&device.id usb 0x0321 -|vendor.id usb 0x077b -&device.id usb 0x2219 -|vendor.id usb 0x077b -&device.id usb 0x2227 -|vendor.id usb 0x07b8 -&device.id usb 0xb000 -|vendor.id usb 0x0864 -&device.id usb 0x4102 -|vendor.id usb 0x1044 -&device.id usb 0x8003 -|vendor.id usb 0x1371 -&device.id usb 0x0002 -|vendor.id usb 0x1371 -&device.id usb 0x5743 -|vendor.id usb 0x1668 -&device.id usb 0x7605 -|vendor.id usb 0x2001 -&device.id usb 0x3200 -|vendor.id usb 0x2019 -&device.id usb 0x3220 -+driver.module.modprobe at76c503-rfmd -+requires atmel-firmware - - vendor.id usb 0x03eb -&device.id usb 0x7603 -|vendor.id usb 0x03f0 -&device.id usb 0x011c -|vendor.id usb 0x04a5 -&device.id usb 0x9000 -|vendor.id usb 0x04bb -&device.id usb 0x0919 -|vendor.id usb 0x05dd -&device.id usb 0xff31 -|vendor.id usb 0x066b -&device.id usb 0x2211 -|vendor.id usb 0x069a -&device.id usb 0x0320 -|vendor.id usb 0x069a -&device.id usb 0x0821 -|vendor.id usb 0x0864 -&device.id usb 0x4100 -|vendor.id usb 0x0b3b -&device.id usb 0x1612 -|vendor.id usb 0x0cde -&device.id usb 0x0001 -|vendor.id usb 0x0d5c -&device.id usb 0xa001 -|vendor.id usb 0x0d8e -&device.id usb 0x7100 -|vendor.id usb 0x0d8e -&device.id usb 0x7110 -|vendor.id usb 0x8086 -&device.id usb 0x0200 -+driver.module.modprobe at76c503-i3861 -+requires atmel-firmware - - vendor.id usb 0x03eb -&device.id usb 0x7604 -|vendor.id usb 0x055d -&device.id usb 0xa000 -+driver.module.modprobe at76c503-i3863 -+requires atmel-firmware - - vendor.id usb 0x03eb -&device.id usb 0x7606 -+driver.module.modprobe at76c505-rfmd -+requires atmel-firmware - - vendor.id usb 0x03eb -&device.id usb 0x7613 -|vendor.id usb 0x07aa -&device.id usb 0x7613 -|vendor.id usb 0x0db0 -&device.id usb 0x1020 -|vendor.id usb 0x12fd -&device.id usb 0x1001 -|vendor.id usb 0x1371 -&device.id usb 0x0013+0x0002 -|vendor.id usb 0x1915 -&device.id usb 0x2233 -+driver.module.modprobe at76c505-rfmd2958 -+requires atmel-firmware - - vendor.id usb 0x03eb -&device.id usb 0x7614 -|vendor.id usb 0x03eb -&device.id usb 0x7617 -+driver.module.modprobe at76c505a-rfmd2958 -+requires atmel-firmware - - vendor.id usb 0x083a -&device.id usb 0x3501 -|vendor.id usb 0x0d5c -&device.id usb 0xa002 -+driver.module.modprobe at76c503-rfmd-acc -+requires atmel-firmware - - vendor.id usb 0x0a5c -&device.id usb 0x2033 -+requires bluez-firmware - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# usbnet devices - - vendor.id usb 0x0402 -&device.id usb 0x5632 -|vendor.id usb 0x0411 -&device.id usb 0x003d -|vendor.id usb 0x049f -&device.id usb 0x505a -|vendor.id usb 0x050d -&device.id usb 0x0004 -|vendor.id usb 0x0525 -&device.id usb 0x1080 -|vendor.id usb 0x0525 -&device.id usb 0x2888 -|vendor.id usb 0x0525 -&device.id usb 0x9901 -|vendor.id usb 0x0547 -&device.id usb 0x2720 -|vendor.id usb 0x0547 -&device.id usb 0x2727 -|vendor.id usb 0x0557 -&device.id usb 0x2009 -|vendor.id usb 0x056c -&device.id usb 0x8100 -|vendor.id usb 0x05e3 -&device.id usb 0x0502 -|vendor.id usb 0x067b -&device.id usb 0x0000+0x0002 -|vendor.id usb 0x06d0 -&device.id usb 0x0622 -|vendor.id usb 0x077b -&device.id usb 0x2226 -|vendor.id usb 0x07b8 -&device.id usb 0x420a -|vendor.id usb 0x0846 -&device.id usb 0x1040 -|vendor.id usb 0x08dd -&device.id usb 0x90ff -|vendor.id usb 0x0b95 -&device.id usb 0x1720 -|vendor.id usb 0x0e7e -&device.id usb 0x1001 -|vendor.id usb 0x2001 -&device.id usb 0x1a00 -|vendor.id usb 0x6189 -&device.id usb 0x182d -|vendor.id usb 0x8086 -&device.id usb 0x07d3 -+driver.module.modprobe usbnet -+baseclass.id 0x002 -+subclass.id 0x91 - diff --git a/src/hwinfo/src/ids/src/pci b/src/hwinfo/src/ids/src/pci deleted file mode 100644 index 4cd40d78f0..0000000000 --- a/src/hwinfo/src/ids/src/pci +++ /dev/null @@ -1,43466 +0,0 @@ - vendor.id pci 0x0000 -+vendor.name Gammagraphx, Inc. - - vendor.id pci 0x001a -+vendor.name Ascend Communications, Inc. - - vendor.id pci 0x0033 -+vendor.name Paradyne corp. - - vendor.id pci 0x003d -+vendor.name Lockheed Martin-Marietta Corp - - vendor.id pci 0x0059 -+vendor.name Tiger Jet Network Inc. (Wrong ID) - - vendor.id pci 0x0070 -+vendor.name Hauppauge computer works Inc. - - vendor.id pci 0x0070 -&device.id pci 0x4000 -+device.name WinTV PVR-350 - - vendor.id pci 0x0070 -&device.id pci 0x4001 -+device.name WinTV PVR-250 (v1) - - vendor.id pci 0x0070 -&device.id pci 0x4009 -+device.name WinTV PVR-250 - - vendor.id pci 0x0070 -&device.id pci 0x4801 -+device.name WinTV PVR-250 MCE - - vendor.id pci 0x0071 -+vendor.name Nebula Electronics Ltd. - - vendor.id pci 0x0095 -+vendor.name Silicon Image, Inc. (Wrong ID) - - vendor.id pci 0x0095 -&device.id pci 0x0680 -+device.name Ultra ATA/133 IDE RAID CONTROLLER CARD - - vendor.id pci 0x0100 -+vendor.name Ncipher Corp Ltd - - vendor.id pci 0x018a -+vendor.name LevelOne - - vendor.id pci 0x018a -&device.id pci 0x0106 -+device.name FPC-0106TX misprogrammed [RTL81xx] - - vendor.id pci 0x021b -+vendor.name Compaq Computer Corporation - - vendor.id pci 0x021b -&device.id pci 0x8139 -+device.name HNE-300 (RealTek RTL8139c) [iPaq Networking] - - vendor.id pci 0x0291 -+vendor.name Davicom Semiconductor, Inc. - - vendor.id pci 0x0291 -&device.id pci 0x8212 -+device.name DM9102A(DM9102AE, SM9102AF) Ethernet 100/10 MBit(Rev 40) - - vendor.id pci 0x02ac -+vendor.name SpeedStream - - vendor.id pci 0x02ac -&device.id pci 0x1012 -+device.name 1012 PCMCIA 10/100 Ethernet Card [RTL81xx] - - vendor.id pci 0x0357 -+vendor.name TTTech AG - - vendor.id pci 0x0357 -&device.id pci 0x000a -+device.name TTP-Monitoring Card V2.0 - - vendor.id pci 0x0432 -+vendor.name SCM Microsystems, Inc. - - vendor.id pci 0x05e3 -+vendor.name CyberDoor - - vendor.id pci 0x05e3 -&device.id pci 0x0701 -+device.name CBD516 - - vendor.id pci 0x0675 -+vendor.name Dynalink - - vendor.id pci 0x0675 -&device.id pci 0x1700 -+device.name IS64PH ISDN Adapter - - vendor.id pci 0x0675 -&device.id pci 0x1702 -+device.name IS64PH ISDN Adapter - - vendor.id pci 0x0925 -+vendor.name VIA Technologies, Inc. (Wrong ID) - - vendor.id pci 0x09c1 -+vendor.name Arris - - vendor.id pci 0x09c1 -&device.id pci 0x0704 -+device.name CM 200E Cable Modem - - vendor.id pci 0x0a89 -+vendor.name BREA Technologies Inc - - vendor.id pci 0x0b49 -+vendor.name ASCII Corporation - - vendor.id pci 0x0b49 -&device.id pci 0x064f -+device.name Trance Vibrator - - vendor.id pci 0x0e11 -+vendor.name Compaq Computer Corporation - - vendor.id pci 0x0e11 -&device.id pci 0x0001 -+device.name PCI to EISA Bridge - - vendor.id pci 0x0e11 -&device.id pci 0x0002 -+device.name PCI to ISA Bridge - - vendor.id pci 0x0e11 -&device.id pci 0x0046 -+device.name Smart Array 64xx - - vendor.id pci 0x0e11 -&device.id pci 0x0046 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x409a -+subdevice.name Smart Array 641 - - vendor.id pci 0x0e11 -&device.id pci 0x0046 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x409b -+subdevice.name Smart Array 642 - - vendor.id pci 0x0e11 -&device.id pci 0x0046 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x409c -+subdevice.name Smart Array 6400 - - vendor.id pci 0x0e11 -&device.id pci 0x0046 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x409d -+subdevice.name Smart Array 6400 EM - - vendor.id pci 0x0e11 -&device.id pci 0x0049 -+device.name NC7132 Gigabit Upgrade Module - - vendor.id pci 0x0e11 -&device.id pci 0x004a -+device.name NC6136 Gigabit Server Adapter - - vendor.id pci 0x0e11 -&device.id pci 0x007c -+device.name NC7770 1000BaseTX - - vendor.id pci 0x0e11 -&device.id pci 0x007d -+device.name NC6770 1000BaseTX - - vendor.id pci 0x0e11 -&device.id pci 0x0085 -+device.name NC7780 1000BaseTX - - vendor.id pci 0x0e11 -&device.id pci 0x00bb -+device.name NC7760 - - vendor.id pci 0x0e11 -&device.id pci 0x00ca -+device.name NC7771 - - vendor.id pci 0x0e11 -&device.id pci 0x00cb -+device.name NC7781 - - vendor.id pci 0x0e11 -&device.id pci 0x00cf -+device.name NC7772 - - vendor.id pci 0x0e11 -&device.id pci 0x00d0 -+device.name NC7782 - - vendor.id pci 0x0e11 -&device.id pci 0x00d1 -+device.name NC7783 - - vendor.id pci 0x0e11 -&device.id pci 0x00e3 -+device.name NC7761 - - vendor.id pci 0x0e11 -&device.id pci 0x0508 -+device.name Netelligent 4/16 Token Ring - - vendor.id pci 0x0e11 -&device.id pci 0x1000 -+device.name Triflex/Pentium Bridge, Model 1000 - - vendor.id pci 0x0e11 -&device.id pci 0x2000 -+device.name Triflex/Pentium Bridge, Model 2000 - - vendor.id pci 0x0e11 -&device.id pci 0x3032 -+device.name QVision 1280/p - - vendor.id pci 0x0e11 -&device.id pci 0x3033 -+device.name QVision 1280/p - - vendor.id pci 0x0e11 -&device.id pci 0x3034 -+device.name QVision 1280/p - - vendor.id pci 0x0e11 -&device.id pci 0x4000 -+device.name 4000 [Triflex] - - vendor.id pci 0x0e11 -&device.id pci 0x4030 -+device.name SMART-2/P - - vendor.id pci 0x0e11 -&device.id pci 0x4031 -+device.name SMART-2SL - - vendor.id pci 0x0e11 -&device.id pci 0x4032 -+device.name Smart Array 3200 - - vendor.id pci 0x0e11 -&device.id pci 0x4033 -+device.name Smart Array 3100ES - - vendor.id pci 0x0e11 -&device.id pci 0x4034 -+device.name Smart Array 221 - - vendor.id pci 0x0e11 -&device.id pci 0x4040 -+device.name Integrated Array - - vendor.id pci 0x0e11 -&device.id pci 0x4048 -+device.name Compaq Raid LC2 - - vendor.id pci 0x0e11 -&device.id pci 0x4050 -+device.name Smart Array 4200 - - vendor.id pci 0x0e11 -&device.id pci 0x4051 -+device.name Smart Array 4250ES - - vendor.id pci 0x0e11 -&device.id pci 0x4058 -+device.name Smart Array 431 - - vendor.id pci 0x0e11 -&device.id pci 0x4070 -+device.name Smart Array 5300 - - vendor.id pci 0x0e11 -&device.id pci 0x4080 -+device.name Smart Array 5i - - vendor.id pci 0x0e11 -&device.id pci 0x4082 -+device.name Smart Array 532 - - vendor.id pci 0x0e11 -&device.id pci 0x4083 -+device.name Smart Array 5312 - - vendor.id pci 0x0e11 -&device.id pci 0x4091 -+device.name Smart Array 6i - - vendor.id pci 0x0e11 -&device.id pci 0x409a -+device.name Smart Array 641 - - vendor.id pci 0x0e11 -&device.id pci 0x409b -+device.name Smart Array 642 - - vendor.id pci 0x0e11 -&device.id pci 0x409c -+device.name Smart Array 6400 - - vendor.id pci 0x0e11 -&device.id pci 0x409d -+device.name Smart Array 6400 EM - - vendor.id pci 0x0e11 -&device.id pci 0x6010 -+device.name HotPlug PCI Bridge 6010 - - vendor.id pci 0x0e11 -&device.id pci 0x7020 -+device.name USB Controller - - vendor.id pci 0x0e11 -&device.id pci 0xa0ec -+device.name Fibre Channel Host Controller - - vendor.id pci 0x0e11 -&device.id pci 0xa0f0 -+device.name Advanced System Management Controller - - vendor.id pci 0x0e11 -&device.id pci 0xa0f3 -+device.name Triflex PCI to ISA Bridge - - vendor.id pci 0x0e11 -&device.id pci 0xa0f7 -+device.name PCI Hotplug Controller - - vendor.id pci 0x0e11 -&device.id pci 0xa0f7 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x002a -+subdevice.name PCI Hotplug Controller A - - vendor.id pci 0x0e11 -&device.id pci 0xa0f7 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x002b -+subdevice.name PCI Hotplug Controller B - - vendor.id pci 0x0e11 -&device.id pci 0xa0f8 -+device.name ZFMicro Chipset USB - - vendor.id pci 0x0e11 -&device.id pci 0xa0fc -+device.name FibreChannel HBA Tachyon - - vendor.id pci 0x0e11 -&device.id pci 0xae10 -+device.name Smart-2/P RAID Controller - - vendor.id pci 0x0e11 -&device.id pci 0xae10 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4030 -+subdevice.name Smart-2/P Array Controller - - vendor.id pci 0x0e11 -&device.id pci 0xae10 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4031 -+subdevice.name Smart-2SL Array Controller - - vendor.id pci 0x0e11 -&device.id pci 0xae10 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4032 -+subdevice.name Smart Array Controller - - vendor.id pci 0x0e11 -&device.id pci 0xae10 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4033 -+subdevice.name Smart 3100ES Array Controller - - vendor.id pci 0x0e11 -&device.id pci 0xae29 -+device.name MIS-L - - vendor.id pci 0x0e11 -&device.id pci 0xae2a -+device.name MPC - - vendor.id pci 0x0e11 -&device.id pci 0xae2b -+device.name MIS-E - - vendor.id pci 0x0e11 -&device.id pci 0xae31 -+device.name System Management Controller - - vendor.id pci 0x0e11 -&device.id pci 0xae32 -+device.name Compaq Netelligent 10/100 TX PCI UTP TLAN 2.3 - - vendor.id pci 0x0e11 -&device.id pci 0xae33 -+device.name Triflex Dual EIDE Controller - - vendor.id pci 0x0e11 -&device.id pci 0xae34 -+device.name Compaq Netelligent 10 T PCI UTP TLAN 2.3 - - vendor.id pci 0x0e11 -&device.id pci 0xae35 -+device.name Compaq Integrated NetFlex-3/P ThunderLAN 2.3 - - vendor.id pci 0x0e11 -&device.id pci 0xae40 -+device.name Compaq Netelligent Dual 10/100 TX PCI TLAN 3.03 - - vendor.id pci 0x0e11 -&device.id pci 0xae43 -+device.name Compaq Integrated Netelligent 10/100 TX PCI TLAN 2.3 - - vendor.id pci 0x0e11 -&device.id pci 0xae69 -+device.name CETUS-L - - vendor.id pci 0x0e11 -&device.id pci 0xae6c -+device.name Northstar - - vendor.id pci 0x0e11 -&device.id pci 0xae6d -+device.name NorthStar CPU to PCI Bridge - - vendor.id pci 0x0e11 -&device.id pci 0xb011 -+device.name Netelligent 10/100 TX Embedded UTP - - vendor.id pci 0x0e11 -&device.id pci 0xb012 -+device.name Compaq Netelligent 10 T/2 UTP/Coax PCI - - vendor.id pci 0x0e11 -&device.id pci 0xb01e -+device.name NC3120 Fast Ethernet NIC - - vendor.id pci 0x0e11 -&device.id pci 0xb01f -+device.name NC3122 Fast Ethernet NIC - - vendor.id pci 0x0e11 -&device.id pci 0xb02f -+device.name NC1120 Ethernet NIC - - vendor.id pci 0x0e11 -&device.id pci 0xb030 -+device.name Compaq Netelligent 10/100 TX Embedded UTP/Coax Controller (5100) - - vendor.id pci 0x0e11 -&device.id pci 0xb04a -+device.name 10/100 TX PCI Intel WOL UTP Controller - - vendor.id pci 0x0e11 -&device.id pci 0xb060 -+device.name Smart Array 5300 Controller - - vendor.id pci 0x0e11 -&device.id pci 0xb0c6 -+device.name NC3161 Fast Ethernet NIC - - vendor.id pci 0x0e11 -&device.id pci 0xb0c7 -+device.name NC3160 Fast Ethernet NIC - - vendor.id pci 0x0e11 -&device.id pci 0xb0d7 -+device.name NC3121 Fast Ethernet NIC - - vendor.id pci 0x0e11 -&device.id pci 0xb0dd -+device.name NC3131 Fast Ethernet NIC - - vendor.id pci 0x0e11 -&device.id pci 0xb0de -+device.name NC3132 Fast Ethernet Module - - vendor.id pci 0x0e11 -&device.id pci 0xb0df -+device.name NC6132 Gigabit Module - - vendor.id pci 0x0e11 -&device.id pci 0xb0e0 -+device.name NC6133 Gigabit Module - - vendor.id pci 0x0e11 -&device.id pci 0xb0e1 -+device.name NC3133 Fast Ethernet Module - - vendor.id pci 0x0e11 -&device.id pci 0xb123 -+device.name NC6134 Gigabit NIC - - vendor.id pci 0x0e11 -&device.id pci 0xb134 -+device.name NC3163 Fast Ethernet NIC - - vendor.id pci 0x0e11 -&device.id pci 0xb13c -+device.name NC3162 Fast Ethernet NIC - - vendor.id pci 0x0e11 -&device.id pci 0xb144 -+device.name NC3123 Fast Ethernet NIC - - vendor.id pci 0x0e11 -&device.id pci 0xb163 -+device.name NC3134 Fast Ethernet NIC - - vendor.id pci 0x0e11 -&device.id pci 0xb164 -+device.name NC3165 Fast Ethernet Upgrade Module - - vendor.id pci 0x0e11 -&device.id pci 0xb178 -+device.name Smart Array 5i/532 - - vendor.id pci 0x0e11 -&device.id pci 0xb178 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4080 -+subdevice.name Smart Array 5i - - vendor.id pci 0x0e11 -&device.id pci 0xb178 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4082 -+subdevice.name Smart Array 532 - - vendor.id pci 0x0e11 -&device.id pci 0xb178 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4083 -+subdevice.name Smart Array 5312 - - vendor.id pci 0x0e11 -&device.id pci 0xb1a4 -+device.name NC7131 Gigabit Server Adapter - - vendor.id pci 0x0e11 -&device.id pci 0xb200 -+device.name Memory Hot-Plug Controller - - vendor.id pci 0x0e11 -&device.id pci 0xb203 -+device.name Integrated Lights Out Controller - - vendor.id pci 0x0e11 -&device.id pci 0xb204 -+device.name Integrated Lights Out Processor - - vendor.id pci 0x0e11 -&device.id pci 0xf130 -+device.name Compaq NetFlex-3/P ThunderLAN 1.0 - - vendor.id pci 0x0e11 -&device.id pci 0xf150 -+device.name Compaq NetFlex-3/P ThunderLAN 2.3 - - vendor.id pci 0x0e55 -+vendor.name HaSoTec GmbH - - vendor.id pci 0x1000 -+vendor.name LSI Logic / Symbios Logic - - vendor.id pci 0x1000 -&device.id pci 0x0001 -+device.name 53c810 - - vendor.id pci 0x1000 -&device.id pci 0x0001 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1000 -+subdevice.name LSI53C810AE PCI to SCSI I/O Processor - - vendor.id pci 0x1000 -&device.id pci 0x0002 -+device.name 53c820 - - vendor.id pci 0x1000 -&device.id pci 0x0003 -+device.name 53c825 - - vendor.id pci 0x1000 -&device.id pci 0x0003 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1000 -+subdevice.name LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide) - - vendor.id pci 0x1000 -&device.id pci 0x0004 -+device.name 53c815 - - vendor.id pci 0x1000 -&device.id pci 0x0005 -+device.name 53c810AP - - vendor.id pci 0x1000 -&device.id pci 0x0006 -+device.name 53c860 - - vendor.id pci 0x1000 -&device.id pci 0x0006 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1000 -+subdevice.name LSI53C860E PCI to Ultra SCSI I/O Processor - - vendor.id pci 0x1000 -&device.id pci 0x000a -+device.name 53c1510 - - vendor.id pci 0x1000 -&device.id pci 0x000a -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1000 -+subdevice.name LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode) - - vendor.id pci 0x1000 -&device.id pci 0x000b -+device.name 53C896/897 - - vendor.id pci 0x1000 -&device.id pci 0x000b -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x6004 -+subdevice.name EOB003 Series SCSI host adapter - - vendor.id pci 0x1000 -&device.id pci 0x000b -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1000 -+subdevice.name LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller - - vendor.id pci 0x1000 -&device.id pci 0x000b -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1010 -+subdevice.name LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter - - vendor.id pci 0x1000 -&device.id pci 0x000b -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1020 -+subdevice.name LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter - - vendor.id pci 0x1000 -&device.id pci 0x000b -&subvendor.id pci 0x13e9 -&subdevice.id pci 0x1000 -+subdevice.name 6221L-4U - - vendor.id pci 0x1000 -&device.id pci 0x000c -+device.name 53c895 - - vendor.id pci 0x1000 -&device.id pci 0x000c -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1010 -+subdevice.name LSI8951U PCI to Ultra2 SCSI host adapter - - vendor.id pci 0x1000 -&device.id pci 0x000c -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1020 -+subdevice.name LSI8952U PCI to Ultra2 SCSI host adapter - - vendor.id pci 0x1000 -&device.id pci 0x000c -&subvendor.id pci 0x1de1 -&subdevice.id pci 0x3906 -+subdevice.name DC-390U2B SCSI adapter - - vendor.id pci 0x1000 -&device.id pci 0x000c -&subvendor.id pci 0x1de1 -&subdevice.id pci 0x3907 -+subdevice.name DC-390U2W - - vendor.id pci 0x1000 -&device.id pci 0x000d -+device.name 53c885 - - vendor.id pci 0x1000 -&device.id pci 0x000f -+device.name 53c875 - - vendor.id pci 0x1000 -&device.id pci 0x000f -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x7004 -+subdevice.name Embedded Ultra Wide SCSI Controller - - vendor.id pci 0x1000 -&device.id pci 0x000f -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1000 -+subdevice.name LSI53C876/E PCI to Dual Channel SCSI Controller - - vendor.id pci 0x1000 -&device.id pci 0x000f -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1010 -+subdevice.name LSI22801 PCI to Dual Channel Ultra SCSI host adapter - - vendor.id pci 0x1000 -&device.id pci 0x000f -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1020 -+subdevice.name LSI22802 PCI to Dual Channel Ultra SCSI host adapter - - vendor.id pci 0x1000 -&device.id pci 0x000f -&subvendor.id pci 0x1092 -&subdevice.id pci 0x8760 -+subdevice.name FirePort 40 Dual SCSI Controller - - vendor.id pci 0x1000 -&device.id pci 0x000f -&subvendor.id pci 0x1de1 -&subdevice.id pci 0x3904 -+subdevice.name DC390F/U Ultra Wide SCSI Adapter - - vendor.id pci 0x1000 -&device.id pci 0x000f -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1000 -+subdevice.name CC7/CR7/CP7/VC7/VP7/VR7 mainboard - - vendor.id pci 0x1000 -&device.id pci 0x000f -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1050 -+subdevice.name CT7 mainboard - - vendor.id pci 0x1000 -&device.id pci 0x0010 -+device.name 53C1510 - - vendor.id pci 0x1000 -&device.id pci 0x0010 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4040 -+subdevice.name Integrated Array Controller - - vendor.id pci 0x1000 -&device.id pci 0x0010 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4048 -+subdevice.name RAID LC2 Controller - - vendor.id pci 0x1000 -&device.id pci 0x0010 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1000 -+subdevice.name 53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode) - - vendor.id pci 0x1000 -&device.id pci 0x0012 -+device.name 53c895a - - vendor.id pci 0x1000 -&device.id pci 0x0012 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1000 -+subdevice.name LSI53C895A PCI to Ultra2 SCSI Controller - - vendor.id pci 0x1000 -&device.id pci 0x0013 -+device.name 53c875a - - vendor.id pci 0x1000 -&device.id pci 0x0013 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1000 -+subdevice.name LSI53C875A PCI to Ultra SCSI Controller - - vendor.id pci 0x1000 -&device.id pci 0x0020 -+device.name 53c1010 Ultra3 SCSI Adapter - - vendor.id pci 0x1000 -&device.id pci 0x0020 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1000 -+subdevice.name LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller - - vendor.id pci 0x1000 -&device.id pci 0x0020 -&subvendor.id pci 0x1de1 -&subdevice.id pci 0x1020 -+subdevice.name DC-390U3W - - vendor.id pci 0x1000 -&device.id pci 0x0021 -+device.name 53c1010 66MHz Ultra3 SCSI Adapter - - vendor.id pci 0x1000 -&device.id pci 0x0021 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1000 -+subdevice.name LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller - - vendor.id pci 0x1000 -&device.id pci 0x0021 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1010 -+subdevice.name Asus TR-DLS onboard 53C1010-66 - - vendor.id pci 0x1000 -&device.id pci 0x0021 -&subvendor.id pci 0x124b -&subdevice.id pci 0x1070 -+subdevice.name PMC-USCSI3 - - vendor.id pci 0x1000 -&device.id pci 0x0021 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1080 -+subdevice.name CT8 mainboard - - vendor.id pci 0x1000 -&device.id pci 0x0021 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1300 -+subdevice.name P017 mezzanine (32-bit PMC) - - vendor.id pci 0x1000 -&device.id pci 0x0021 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1310 -+subdevice.name P017 mezzanine (64-bit PMC) - - vendor.id pci 0x1000 -&device.id pci 0x0030 -+device.name 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI - - vendor.id pci 0x1000 -&device.id pci 0x0030 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0123 -+subdevice.name PowerEdge 2600 - - vendor.id pci 0x1000 -&device.id pci 0x0030 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x014a -+subdevice.name PowerEdge 1750 - - vendor.id pci 0x1000 -&device.id pci 0x0030 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x016c -+subdevice.name PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4) - - vendor.id pci 0x1000 -&device.id pci 0x0030 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x1010 -+subdevice.name LSI U320 SCSI Controller - - vendor.id pci 0x1000 -&device.id pci 0x0031 -+device.name 53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI - - vendor.id pci 0x1000 -&device.id pci 0x0032 -+device.name 53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI - - vendor.id pci 0x1000 -&device.id pci 0x0032 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1000 -+subdevice.name LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller - - vendor.id pci 0x1000 -&device.id pci 0x0033 -+device.name 1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI - - vendor.id pci 0x1000 -&device.id pci 0x0040 -+device.name 53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI - - vendor.id pci 0x1000 -&device.id pci 0x0040 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0033 -+subdevice.name MegaRAID SCSI 320-2XR - - vendor.id pci 0x1000 -&device.id pci 0x0040 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0066 -+subdevice.name MegaRAID SCSI 320-2XRWS - - vendor.id pci 0x1000 -&device.id pci 0x0041 -+device.name 53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI - - vendor.id pci 0x1000 -&device.id pci 0x008f -+device.name 53c875J - - vendor.id pci 0x1000 -&device.id pci 0x008f -&subvendor.id pci 0x1092 -&subdevice.id pci 0x8000 -+subdevice.name FirePort 40 SCSI Controller - - vendor.id pci 0x1000 -&device.id pci 0x008f -&subvendor.id pci 0x1092 -&subdevice.id pci 0x8760 -+subdevice.name FirePort 40 Dual SCSI Host Adapter - - vendor.id pci 0x1000 -&device.id pci 0x0407 -+device.name MegaRAID - - vendor.id pci 0x1000 -&device.id pci 0x0407 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0530 -+subdevice.name MegaRAID 530 SCSI 320-0X RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x0407 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0531 -+subdevice.name MegaRAID 531 SCSI 320-4X RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x0407 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0532 -+subdevice.name MegaRAID 532 SCSI 320-2X RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x0407 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0531 -+subdevice.name PowerEdge Expandable RAID Controller 4/QC - - vendor.id pci 0x1000 -&device.id pci 0x0407 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0533 -+subdevice.name PowerEdge Expandable RAID Controller 4/QC - - vendor.id pci 0x1000 -&device.id pci 0x0407 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0530 -+subdevice.name MegaRAID Intel RAID Controller SRCZCRX - - vendor.id pci 0x1000 -&device.id pci 0x0407 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0532 -+subdevice.name MegaRAID Intel RAID Controller SRCU42X - - vendor.id pci 0x1000 -&device.id pci 0x0408 -+device.name MegaRAID - - vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0001 -+subdevice.name MegaRAID SCSI 320-1E RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0002 -+subdevice.name MegaRAID SCSI 320-2E RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x004d -+subdevice.name MegaRAID ACER ROMB-2E RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0001 -+subdevice.name PowerEdge RAID Controller PERC4e/SC - - vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0002 -+subdevice.name PowerEdge RAID Controller PERC4e/DC - - vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x1734 -&subdevice.id pci 0x1065 -+subdevice.name FSC MegaRAID PCI Express ROMB - - vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0002 -+subdevice.name MegaRAID Intel RAID Controller SRCU42E - - vendor.id pci 0x1000 -&device.id pci 0x0409 -+device.name MegaRAID - - vendor.id pci 0x1000 -&device.id pci 0x0409 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x3004 -+subdevice.name MegaRAID SATA 300-4X RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x0409 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x3008 -+subdevice.name MegaRAID SATA 300-8X RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x0409 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3008 -+subdevice.name MegaRAID RAID Controller SRCS28X - - vendor.id pci 0x1000 -&device.id pci 0x0409 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3431 -+subdevice.name MegaRAID RAID Controller Alief SROMBU42E - - vendor.id pci 0x1000 -&device.id pci 0x0409 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3499 -+subdevice.name MegaRAID RAID Controller Harwich SROMBU42E - - vendor.id pci 0x1000 -&device.id pci 0x0621 -+device.name FC909 Fibre Channel Adapter - - vendor.id pci 0x1000 -&device.id pci 0x0622 -+device.name FC929 Fibre Channel Adapter - - vendor.id pci 0x1000 -&device.id pci 0x0622 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1020 -+subdevice.name 44929 O Dual Fibre Channel card - - vendor.id pci 0x1000 -&device.id pci 0x0623 -+device.name FC929 LAN - - vendor.id pci 0x1000 -&device.id pci 0x0624 -+device.name FC919 Fibre Channel Adapter - - vendor.id pci 0x1000 -&device.id pci 0x0625 -+device.name FC919 LAN - - vendor.id pci 0x1000 -&device.id pci 0x0626 -+device.name FC929X Fibre Channel Adapter - - vendor.id pci 0x1000 -&device.id pci 0x0626 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x1010 -+subdevice.name 7202-XP-LC Dual Fibre Channel card - - vendor.id pci 0x1000 -&device.id pci 0x0627 -+device.name FC929X LAN - - vendor.id pci 0x1000 -&device.id pci 0x0628 -+device.name FC919X Fibre Channel Adapter - - vendor.id pci 0x1000 -&device.id pci 0x0629 -+device.name FC919X LAN - - vendor.id pci 0x1000 -&device.id pci 0x0701 -+device.name 83C885 NT50 DigitalScape Fast Ethernet - - vendor.id pci 0x1000 -&device.id pci 0x0702 -+device.name Yellowfin G-NIC gigabit ethernet - - vendor.id pci 0x1000 -&device.id pci 0x0702 -&subvendor.id pci 0x1318 -&subdevice.id pci 0x0000 -+subdevice.name PEI100X - - vendor.id pci 0x1000 -&device.id pci 0x0804 -+device.name SA2010 - - vendor.id pci 0x1000 -&device.id pci 0x0805 -+device.name SA2010ZC - - vendor.id pci 0x1000 -&device.id pci 0x0806 -+device.name SA2020 - - vendor.id pci 0x1000 -&device.id pci 0x0807 -+device.name SA2020ZC - - vendor.id pci 0x1000 -&device.id pci 0x0901 -+device.name 61C102 - - vendor.id pci 0x1000 -&device.id pci 0x1000 -+device.name 63C815 - - vendor.id pci 0x1000 -&device.id pci 0x1960 -+device.name MegaRAID - - vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0518 -+subdevice.name MegaRAID 518 SCSI 320-2 Controller - - vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0520 -+subdevice.name MegaRAID 520 SCSI 320-1 Controller - - vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0522 -+subdevice.name MegaRAID 522 i4 133 RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0523 -+subdevice.name MegaRAID SATA 150-6 RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x4523 -+subdevice.name MegaRAID SATA 150-4 RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1000 -&subdevice.id pci 0xa520 -+subdevice.name MegaRAID ZCR SCSI 320-0 Controller - - vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0518 -+subdevice.name MegaRAID 518 DELL PERC 4/DC RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0520 -+subdevice.name MegaRAID 520 DELL PERC 4/SC RAID Controller - - vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0531 -+subdevice.name PowerEdge Expandable RAID Controller 4/QC - - vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0533 -+subdevice.name PowerEdge Expandable RAID Controller 4/QC - - vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0520 -+subdevice.name MegaRAIDRAID Controller SRCU41L - - vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0523 -+subdevice.name MegaRAID RAID Controller SRCS16 - - vendor.id pci 0x1001 -+vendor.name Kolter Electronic - - vendor.id pci 0x1001 -&device.id pci 0x0010 -+device.name PCI 1616 Measurement card with 32 digital I/O lines - - vendor.id pci 0x1001 -&device.id pci 0x0011 -+device.name OPTO-PCI Opto-Isolated digital I/O board - - vendor.id pci 0x1001 -&device.id pci 0x0012 -+device.name PCI-AD/DA Analogue I/O board - - vendor.id pci 0x1001 -&device.id pci 0x0013 -+device.name PCI-OPTO-RELAIS Digital I/O board with relay outputs - - vendor.id pci 0x1001 -&device.id pci 0x0014 -+device.name PCI-Counter/Timer Counter Timer board - - vendor.id pci 0x1001 -&device.id pci 0x0015 -+device.name PCI-DAC416 Analogue output board - - vendor.id pci 0x1001 -&device.id pci 0x0016 -+device.name PCI-MFB Analogue I/O board - - vendor.id pci 0x1001 -&device.id pci 0x0017 -+device.name PROTO-3 PCI Prototyping board - - vendor.id pci 0x1001 -&device.id pci 0x9100 -+device.name INI-9100/9100W SCSI Host - - vendor.id pci 0x1002 -+vendor.name ATI Technologies Inc - - vendor.id pci 0x1002 -&device.id pci 0x3150 -+device.name M24 1P [Radeon Mobility X600] - - vendor.id pci 0x1002 -&device.id pci 0x3154 -+device.name M24 1T [FireGL M24 GL] - - vendor.id pci 0x1002 -&device.id pci 0x3e50 -+device.name RV380 0x3e50 [Radeon X600] - - vendor.id pci 0x1002 -&device.id pci 0x3e54 -+device.name RV380 0x3e54 [FireGL V3200] - - vendor.id pci 0x1002 -&device.id pci 0x3e70 -+device.name RV380 [Radeon X600] Secondary - - vendor.id pci 0x1002 -&device.id pci 0x4136 -+device.name Radeon IGP 320 M - - vendor.id pci 0x1002 -&device.id pci 0x4137 -+device.name Radeon IGP330/340/350 - - vendor.id pci 0x1002 -&device.id pci 0x4144 -+device.name R300 AD [Radeon 9500 Pro] - - vendor.id pci 0x1002 -&device.id pci 0x4145 -+device.name R300 AE [Radeon 9700 Pro] - - vendor.id pci 0x1002 -&device.id pci 0x4146 -+device.name R300 AF [Radeon 9700 Pro] - - vendor.id pci 0x1002 -&device.id pci 0x4147 -+device.name R300 AG [FireGL Z1/X1] - - vendor.id pci 0x1002 -&device.id pci 0x4148 -+device.name R350 AH [Radeon 9800] - - vendor.id pci 0x1002 -&device.id pci 0x4149 -+device.name R350 AI [Radeon 9800] - - vendor.id pci 0x1002 -&device.id pci 0x414a -+device.name R350 AJ [Radeon 9800] - - vendor.id pci 0x1002 -&device.id pci 0x414b -+device.name R350 AK [Fire GL X2] - - vendor.id pci 0x1002 -&device.id pci 0x4150 -+device.name RV350 AP [Radeon 9600] - - vendor.id pci 0x1002 -&device.id pci 0x4150 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0002 -+subdevice.name R9600 Pro primary (Asus OEM for HP) - - vendor.id pci 0x1002 -&device.id pci 0x4150 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0003 -+subdevice.name R9600 Pro secondary (Asus OEM for HP) - - vendor.id pci 0x1002 -&device.id pci 0x4150 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x4024 -+subdevice.name Giga-Byte GV-R96128D Primary - - vendor.id pci 0x1002 -&device.id pci 0x4150 -&subvendor.id pci 0x148c -&subdevice.id pci 0x2064 -+subdevice.name PowerColor R96A-C3N - - vendor.id pci 0x1002 -&device.id pci 0x4150 -&subvendor.id pci 0x148c -&subdevice.id pci 0x2066 -+subdevice.name PowerColor R96A-C3N - - vendor.id pci 0x1002 -&device.id pci 0x4150 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7c19 -+subdevice.name Sapphire Atlantis Radeon 9600 Pro - - vendor.id pci 0x1002 -&device.id pci 0x4150 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7c29 -+subdevice.name GC-R9600PRO Primary [Sapphire] - - vendor.id pci 0x1002 -&device.id pci 0x4150 -&subvendor.id pci 0x17ee -&subdevice.id pci 0x2002 -+subdevice.name Radeon 9600 256Mb Primary - - vendor.id pci 0x1002 -&device.id pci 0x4150 -&subvendor.id pci 0x18bc -&subdevice.id pci 0x0101 -+subdevice.name GC-R9600PRO Primary - - vendor.id pci 0x1002 -&device.id pci 0x4151 -+device.name RV350 AQ [Radeon 9600] - - vendor.id pci 0x1002 -&device.id pci 0x4151 -&subvendor.id pci 0x1043 -&subdevice.id pci 0xc004 -+subdevice.name A9600SE - - vendor.id pci 0x1002 -&device.id pci 0x4152 -+device.name RV350 AR [Radeon 9600] - - vendor.id pci 0x1002 -&device.id pci 0x4152 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0002 -+subdevice.name Radeon 9600XT - - vendor.id pci 0x1002 -&device.id pci 0x4152 -&subvendor.id pci 0x1043 -&subdevice.id pci 0xc002 -+subdevice.name Radeon 9600 XT TVD - - vendor.id pci 0x1002 -&device.id pci 0x4153 -+device.name RV350 AS [Radeon 9600 AS] - - vendor.id pci 0x1002 -&device.id pci 0x4154 -+device.name RV350 AT [Fire GL T2] - - vendor.id pci 0x1002 -&device.id pci 0x4155 -+device.name RV350 AU [Fire GL T2] - - vendor.id pci 0x1002 -&device.id pci 0x4156 -+device.name RV350 AV [Fire GL T2] - - vendor.id pci 0x1002 -&device.id pci 0x4157 -+device.name RV350 AW [Fire GL T2] - - vendor.id pci 0x1002 -&device.id pci 0x4158 -+device.name 68800AX [Mach32] - - vendor.id pci 0x1002 -&device.id pci 0x4164 -+device.name R300 AD [Radeon 9500 Pro] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4165 -+device.name R300 AE [Radeon 9700 Pro] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4166 -+device.name R300 AF [Radeon 9700 Pro] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4168 -+device.name Radeon R350 [Radeon 9800] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4170 -+device.name RV350 AP [Radeon 9600] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4170 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x4025 -+subdevice.name Giga-Byte GV-R96128D Secondary - - vendor.id pci 0x1002 -&device.id pci 0x4170 -&subvendor.id pci 0x148c -&subdevice.id pci 0x2067 -+subdevice.name PowerColor R96A-C3N (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4170 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7c28 -+subdevice.name GC-R9600PRO Secondary [Sapphire] - - vendor.id pci 0x1002 -&device.id pci 0x4170 -&subvendor.id pci 0x17ee -&subdevice.id pci 0x2003 -+subdevice.name Radeon 9600 256Mb Secondary - - vendor.id pci 0x1002 -&device.id pci 0x4170 -&subvendor.id pci 0x18bc -&subdevice.id pci 0x0100 -+subdevice.name GC-R9600PRO Secondary - - vendor.id pci 0x1002 -&device.id pci 0x4171 -+device.name RV350 AQ [Radeon 9600] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4171 -&subvendor.id pci 0x1043 -&subdevice.id pci 0xc005 -+subdevice.name A9600SE (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4172 -+device.name RV350 AR [Radeon 9600] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4172 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0003 -+subdevice.name Radeon 9600XT (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4172 -&subvendor.id pci 0x1043 -&subdevice.id pci 0xc003 -+subdevice.name A9600XT (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4173 -+device.name RV350 ?? [Radeon 9550] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4237 -+device.name Radeon 7000 IGP - - vendor.id pci 0x1002 -&device.id pci 0x4242 -+device.name R200 BB [Radeon All in Wonder 8500DV] - - vendor.id pci 0x1002 -&device.id pci 0x4242 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x02aa -+subdevice.name Radeon 8500 AIW DV Edition - - vendor.id pci 0x1002 -&device.id pci 0x4243 -+device.name R200 BC [Radeon All in Wonder 8500] - - vendor.id pci 0x1002 -&device.id pci 0x4336 -+device.name Radeon Mobility U1 - - vendor.id pci 0x1002 -&device.id pci 0x4336 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0024 -+subdevice.name Pavilion ze4400 builtin Video - - vendor.id pci 0x1002 -&device.id pci 0x4337 -+device.name Radeon IGP 330M/340M/350M - - vendor.id pci 0x1002 -&device.id pci 0x4337 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x053a -+subdevice.name ThinkPad R40e (2684-HVG) builtin VGA controller - - vendor.id pci 0x1002 -&device.id pci 0x4337 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0850 -+subdevice.name Radeon IGP 345M - - vendor.id pci 0x1002 -&device.id pci 0x4341 -+device.name IXP150 AC'97 Audio Controller - - vendor.id pci 0x1002 -&device.id pci 0x4345 -+device.name EHCI USB Controller - - vendor.id pci 0x1002 -&device.id pci 0x4347 -+device.name OHCI USB Controller #1 - - vendor.id pci 0x1002 -&device.id pci 0x4348 -+device.name OHCI USB Controller #2 - - vendor.id pci 0x1002 -&device.id pci 0x434d -+device.name IXP AC'97 Modem - - vendor.id pci 0x1002 -&device.id pci 0x4353 -+device.name ATI SMBus - - vendor.id pci 0x1002 -&device.id pci 0x4354 -+device.name 215CT [Mach64 CT] - - vendor.id pci 0x1002 -&device.id pci 0x4358 -+device.name 210888CX [Mach64 CX] - - vendor.id pci 0x1002 -&device.id pci 0x4437 -+device.name Radeon Mobility 7000 IGP - - vendor.id pci 0x1002 -&device.id pci 0x4554 -+device.name 210888ET [Mach64 ET] - - vendor.id pci 0x1002 -&device.id pci 0x4654 -+device.name Mach64 VT - - vendor.id pci 0x1002 -&device.id pci 0x4742 -+device.name 3D Rage Pro AGP 1X/2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0040 -+subdevice.name Rage Pro Turbo AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0044 -+subdevice.name Rage Pro Turbo AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0061 -+subdevice.name Rage Pro AIW AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0062 -+subdevice.name Rage Pro AIW AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0063 -+subdevice.name Rage Pro AIW AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0080 -+subdevice.name Rage Pro Turbo AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0084 -+subdevice.name Rage Pro Turbo AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x4742 -+subdevice.name Rage Pro Turbo AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x8001 -+subdevice.name Rage Pro Turbo AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0082 -+subdevice.name Rage Pro Turbo AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x4082 -+subdevice.name Optiplex GX1 Onboard Display Adapter - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x8082 -+subdevice.name Rage Pro Turbo AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x1028 -&subdevice.id pci 0xc082 -+subdevice.name Rage Pro Turbo AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4152 -+subdevice.name Xpert 98D AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4742 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x464a -+subdevice.name Rage Pro Turbo AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4744 -+device.name 3D Rage Pro AGP 1X - - vendor.id pci 0x1002 -&device.id pci 0x4744 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x4744 -+subdevice.name Rage Pro Turbo AGP - - vendor.id pci 0x1002 -&device.id pci 0x4747 -+device.name 3D Rage Pro - - vendor.id pci 0x1002 -&device.id pci 0x4749 -+device.name 3D Rage Pro - - vendor.id pci 0x1002 -&device.id pci 0x4749 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0061 -+subdevice.name Rage Pro AIW - - vendor.id pci 0x1002 -&device.id pci 0x4749 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0062 -+subdevice.name Rage Pro AIW - - vendor.id pci 0x1002 -&device.id pci 0x474c -+device.name Rage XC - - vendor.id pci 0x1002 -&device.id pci 0x474d -+device.name Rage XL AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x474d -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0004 -+subdevice.name Xpert 98 RXL AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x474d -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0008 -+subdevice.name Xpert 98 RXL AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x474d -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0080 -+subdevice.name Rage XL AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x474d -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0084 -+subdevice.name Xpert 98 AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x474d -&subvendor.id pci 0x1002 -&subdevice.id pci 0x474d -+subdevice.name Rage XL AGP - - vendor.id pci 0x1002 -&device.id pci 0x474d -&subvendor.id pci 0x1033 -&subdevice.id pci 0x806a -+subdevice.name Rage XL AGP - - vendor.id pci 0x1002 -&device.id pci 0x474e -+device.name Rage XC AGP - - vendor.id pci 0x1002 -&device.id pci 0x474e -&subvendor.id pci 0x1002 -&subdevice.id pci 0x474e -+subdevice.name Rage XC AGP - - vendor.id pci 0x1002 -&device.id pci 0x474f -+device.name Rage XL - - vendor.id pci 0x1002 -&device.id pci 0x474f -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0008 -+subdevice.name Rage XL - - vendor.id pci 0x1002 -&device.id pci 0x474f -&subvendor.id pci 0x1002 -&subdevice.id pci 0x474f -+subdevice.name Rage XL - - vendor.id pci 0x1002 -&device.id pci 0x4750 -+device.name 3D Rage Pro 215GP - - vendor.id pci 0x1002 -&device.id pci 0x4750 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0040 -+subdevice.name Rage Pro Turbo - - vendor.id pci 0x1002 -&device.id pci 0x4750 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0044 -+subdevice.name Rage Pro Turbo - - vendor.id pci 0x1002 -&device.id pci 0x4750 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0080 -+subdevice.name Rage Pro Turbo - - vendor.id pci 0x1002 -&device.id pci 0x4750 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0084 -+subdevice.name Rage Pro Turbo - - vendor.id pci 0x1002 -&device.id pci 0x4750 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x4750 -+subdevice.name Rage Pro Turbo - - vendor.id pci 0x1002 -&device.id pci 0x4751 -+device.name 3D Rage Pro 215GQ - - vendor.id pci 0x1002 -&device.id pci 0x4752 -+device.name Rage XL - - vendor.id pci 0x1002 -&device.id pci 0x4752 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0008 -+subdevice.name Rage XL - - vendor.id pci 0x1002 -&device.id pci 0x4752 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x4752 -+subdevice.name Rage XL - - vendor.id pci 0x1002 -&device.id pci 0x4752 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x8008 -+subdevice.name Rage XL - - vendor.id pci 0x1002 -&device.id pci 0x4752 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00ce -+subdevice.name PowerEdge 1400 - - vendor.id pci 0x1002 -&device.id pci 0x4752 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00d1 -+subdevice.name PowerEdge 2550 - - vendor.id pci 0x1002 -&device.id pci 0x4752 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00d9 -+subdevice.name PowerEdge 2500 - - vendor.id pci 0x1002 -&device.id pci 0x4752 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3411 -+subdevice.name SDS2 Mainboard - - vendor.id pci 0x1002 -&device.id pci 0x4752 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3427 -+subdevice.name S875WP1-E mainboard - - vendor.id pci 0x1002 -&device.id pci 0x4753 -+device.name Rage XC - - vendor.id pci 0x1002 -&device.id pci 0x4753 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x4753 -+subdevice.name Rage XC - - vendor.id pci 0x1002 -&device.id pci 0x4754 -+device.name 3D Rage I/II 215GT [Mach64 GT] - - vendor.id pci 0x1002 -&device.id pci 0x4755 -+device.name 3D Rage II+ 215GTB [Mach64 GTB] - - vendor.id pci 0x1002 -&device.id pci 0x4756 -+device.name 3D Rage IIC 215IIC [Mach64 GT IIC] - - vendor.id pci 0x1002 -&device.id pci 0x4756 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x4756 -+subdevice.name Rage IIC - - vendor.id pci 0x1002 -&device.id pci 0x4757 -+device.name 3D Rage IIC AGP - - vendor.id pci 0x1002 -&device.id pci 0x4757 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x4757 -+subdevice.name Rage IIC AGP - - vendor.id pci 0x1002 -&device.id pci 0x4757 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0089 -+subdevice.name Rage 3D IIC - - vendor.id pci 0x1002 -&device.id pci 0x4757 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x4082 -+subdevice.name Rage 3D IIC - - vendor.id pci 0x1002 -&device.id pci 0x4757 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x8082 -+subdevice.name Rage 3D IIC - - vendor.id pci 0x1002 -&device.id pci 0x4757 -&subvendor.id pci 0x1028 -&subdevice.id pci 0xc082 -+subdevice.name Rage 3D IIC - - vendor.id pci 0x1002 -&device.id pci 0x4758 -+device.name 210888GX [Mach64 GX] - - vendor.id pci 0x1002 -&device.id pci 0x4759 -+device.name 3D Rage IIC - - vendor.id pci 0x1002 -&device.id pci 0x475a -+device.name 3D Rage IIC AGP - - vendor.id pci 0x1002 -&device.id pci 0x475a -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0084 -+subdevice.name Rage 3D Pro AGP 2x XPERT 98 - - vendor.id pci 0x1002 -&device.id pci 0x475a -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0087 -+subdevice.name Rage 3D IIC - - vendor.id pci 0x1002 -&device.id pci 0x475a -&subvendor.id pci 0x1002 -&subdevice.id pci 0x475a -+subdevice.name Rage IIC AGP - - vendor.id pci 0x1002 -&device.id pci 0x4964 -+device.name Radeon RV250 Id [Radeon 9000] - - vendor.id pci 0x1002 -&device.id pci 0x4965 -+device.name Radeon RV250 Ie [Radeon 9000] - - vendor.id pci 0x1002 -&device.id pci 0x4966 -+device.name Radeon RV250 If [Radeon 9000] - - vendor.id pci 0x1002 -&device.id pci 0x4966 -&subvendor.id pci 0x10f1 -&subdevice.id pci 0x0002 -+subdevice.name RV250 If [Tachyon G9000 PRO] - - vendor.id pci 0x1002 -&device.id pci 0x4966 -&subvendor.id pci 0x148c -&subdevice.id pci 0x2039 -+subdevice.name RV250 If [Radeon 9000 Pro "Evil Commando"] - - vendor.id pci 0x1002 -&device.id pci 0x4966 -&subvendor.id pci 0x1509 -&subdevice.id pci 0x9a00 -+subdevice.name RV250 If [Radeon 9000 "AT009"] - - vendor.id pci 0x1002 -&device.id pci 0x4966 -&subvendor.id pci 0x1681 -&subdevice.id pci 0x0040 -+subdevice.name RV250 If [3D prophet 9000] - - vendor.id pci 0x1002 -&device.id pci 0x4966 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7176 -+subdevice.name RV250 If [Sapphire Radeon 9000 Pro] - - vendor.id pci 0x1002 -&device.id pci 0x4966 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7192 -+subdevice.name RV250 If [Radeon 9000 "Atlantis"] - - vendor.id pci 0x1002 -&device.id pci 0x4966 -&subvendor.id pci 0x17af -&subdevice.id pci 0x2005 -+subdevice.name RV250 If [Excalibur Radeon 9000 Pro] - - vendor.id pci 0x1002 -&device.id pci 0x4966 -&subvendor.id pci 0x17af -&subdevice.id pci 0x2006 -+subdevice.name RV250 If [Excalibur Radeon 9000] - - vendor.id pci 0x1002 -&device.id pci 0x4967 -+device.name Radeon RV250 Ig [Radeon 9000] - - vendor.id pci 0x1002 -&device.id pci 0x496e -+device.name Radeon RV250 [Radeon 9000] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4a48 -+device.name R420 JH [Radeon X800] - - vendor.id pci 0x1002 -&device.id pci 0x4a49 -+device.name R420 JI [Radeon X800PRO] - - vendor.id pci 0x1002 -&device.id pci 0x4a4a -+device.name R420 JJ [Radeon X800SE] - - vendor.id pci 0x1002 -&device.id pci 0x4a4b -+device.name R420 JK [Radeon X800] - - vendor.id pci 0x1002 -&device.id pci 0x4a4c -+device.name R420 JL [Radeon X800] - - vendor.id pci 0x1002 -&device.id pci 0x4a4d -+device.name R420 JM [FireGL X3] - - vendor.id pci 0x1002 -&device.id pci 0x4a4e -+device.name M18 JN [Radeon Mobility 9800] - - vendor.id pci 0x1002 -&device.id pci 0x4a50 -+device.name R420 JP [Radeon X800XT] - - vendor.id pci 0x1002 -&device.id pci 0x4a70 -+device.name R420 [X800XT-PE] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -+device.name 3D Rage LT Pro AGP-133 - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0e7 -+subdevice.name Rage LT Pro (Compaq Presario 5240) - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0e8 -+subdevice.name Rage 3D LT Pro - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb10e -+subdevice.name 3D Rage LT Pro (Compaq Armada 1750) - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0040 -+subdevice.name Rage LT Pro AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0044 -+subdevice.name Rage LT Pro AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x4c42 -+subdevice.name Rage LT Pro AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x8001 -+subdevice.name Rage LT Pro AGP 2X - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0085 -+subdevice.name Rage 3D LT Pro - - vendor.id pci 0x1002 -&device.id pci 0x4c44 -+device.name 3D Rage LT Pro AGP-66 - - vendor.id pci 0x1002 -&device.id pci 0x4c45 -+device.name Rage Mobility M3 AGP - - vendor.id pci 0x1002 -&device.id pci 0x4c46 -+device.name Rage Mobility M3 AGP 2x - - vendor.id pci 0x1002 -&device.id pci 0x4c46 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00b1 -+subdevice.name Latitude C600 - - vendor.id pci 0x1002 -&device.id pci 0x4c47 -+device.name 3D Rage LT-G 215LG - - vendor.id pci 0x1002 -&device.id pci 0x4c49 -+device.name 3D Rage LT Pro - - vendor.id pci 0x1002 -&device.id pci 0x4c49 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0004 -+subdevice.name Rage LT Pro - - vendor.id pci 0x1002 -&device.id pci 0x4c49 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0040 -+subdevice.name Rage LT Pro - - vendor.id pci 0x1002 -&device.id pci 0x4c49 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0044 -+subdevice.name Rage LT Pro - - vendor.id pci 0x1002 -&device.id pci 0x4c49 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x4c49 -+subdevice.name Rage LT Pro - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -+device.name Rage Mobility P/M AGP 2x - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb111 -+subdevice.name Armada M700 - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb160 -+subdevice.name Armada E500 - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0084 -+subdevice.name Xpert 98 AGP 2X (Mobility) - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0154 -+subdevice.name ThinkPad A20m - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00aa -+subdevice.name Latitude CPt - - vendor.id pci 0x1002 -&device.id pci 0x4c4e -+device.name Rage Mobility L AGP 2x - - vendor.id pci 0x1002 -&device.id pci 0x4c50 -+device.name 3D Rage LT Pro - - vendor.id pci 0x1002 -&device.id pci 0x4c50 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x4c50 -+subdevice.name Rage LT Pro - - vendor.id pci 0x1002 -&device.id pci 0x4c51 -+device.name 3D Rage LT Pro - - vendor.id pci 0x1002 -&device.id pci 0x4c52 -+device.name Rage Mobility P/M - - vendor.id pci 0x1002 -&device.id pci 0x4c52 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8112 -+subdevice.name Versa Note VXi - - vendor.id pci 0x1002 -&device.id pci 0x4c53 -+device.name Rage Mobility L - - vendor.id pci 0x1002 -&device.id pci 0x4c54 -+device.name 264LT [Mach64 LT] - - vendor.id pci 0x1002 -&device.id pci 0x4c57 -+device.name Radeon Mobility M7 LW [Radeon Mobility 7500] - - vendor.id pci 0x1002 -&device.id pci 0x4c57 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0517 -+subdevice.name ThinkPad T30 - - vendor.id pci 0x1002 -&device.id pci 0x4c57 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00e6 -+subdevice.name Radeon Mobility M7 LW (Dell Inspiron 8100) - - vendor.id pci 0x1002 -&device.id pci 0x4c57 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x012a -+subdevice.name Latitude C640 - - vendor.id pci 0x1002 -&device.id pci 0x4c57 -&subvendor.id pci 0x144d -&subdevice.id pci 0xc006 -+subdevice.name Radeon Mobility M7 LW in vpr Matrix 170B4 - - vendor.id pci 0x1002 -&device.id pci 0x4c58 -+device.name Radeon RV200 LX [Mobility FireGL 7800 M7] - - vendor.id pci 0x1002 -&device.id pci 0x4c59 -+device.name Radeon Mobility M6 LY - - vendor.id pci 0x1002 -&device.id pci 0x4c59 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0235 -+subdevice.name ThinkPad A30/A30p (2652/2653) - - vendor.id pci 0x1002 -&device.id pci 0x4c59 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0239 -+subdevice.name ThinkPad X22/X23/X24 - - vendor.id pci 0x1002 -&device.id pci 0x4c59 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80e7 -+subdevice.name VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - - vendor.id pci 0x1002 -&device.id pci 0x4c5a -+device.name Radeon Mobility M6 LZ - - vendor.id pci 0x1002 -&device.id pci 0x4c64 -+device.name Radeon R250 Ld [Radeon Mobility 9000 M9] - - vendor.id pci 0x1002 -&device.id pci 0x4c65 -+device.name Radeon R250 Le [Radeon Mobility 9000 M9] - - vendor.id pci 0x1002 -&device.id pci 0x4c66 -+device.name Radeon R250 Lf [FireGL 9000] - - vendor.id pci 0x1002 -&device.id pci 0x4c67 -+device.name Radeon R250 Lg [Radeon Mobility 9000 M9] - - vendor.id pci 0x1002 -&device.id pci 0x4c6e -+device.name Radeon R250 Ln [Radeon Mobility 9000 M9] [Secondary] - - vendor.id pci 0x1002 -&device.id pci 0x4d46 -+device.name Rage Mobility M4 AGP - - vendor.id pci 0x1002 -&device.id pci 0x4d4c -+device.name Rage Mobility M4 AGP - - vendor.id pci 0x1002 -&device.id pci 0x4e44 -+device.name Radeon R300 ND [Radeon 9700 Pro] - - vendor.id pci 0x1002 -&device.id pci 0x4e45 -+device.name Radeon R300 NE [Radeon 9500 Pro] - - vendor.id pci 0x1002 -&device.id pci 0x4e45 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0002 -+subdevice.name Radeon R300 NE [Radeon 9500 Pro] - - vendor.id pci 0x1002 -&device.id pci 0x4e45 -&subvendor.id pci 0x1681 -&subdevice.id pci 0x0002 -+subdevice.name Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] - - vendor.id pci 0x1002 -&device.id pci 0x4e46 -+device.name RV350 NF [Radeon 9600] - - vendor.id pci 0x1002 -&device.id pci 0x4e47 -+device.name Radeon R300 NG [FireGL X1] - - vendor.id pci 0x1002 -&device.id pci 0x4e48 -+device.name Radeon R350 [Radeon 9800 Pro] - - vendor.id pci 0x1002 -&device.id pci 0x4e49 -+device.name Radeon R350 [Radeon 9800] - - vendor.id pci 0x1002 -&device.id pci 0x4e4a -+device.name RV350 NJ [Radeon 9800 XT] - - vendor.id pci 0x1002 -&device.id pci 0x4e4b -+device.name R350 NK [Fire GL X2] - - vendor.id pci 0x1002 -&device.id pci 0x4e50 -+device.name RV350 [Mobility Radeon 9600 M10] - - vendor.id pci 0x1002 -&device.id pci 0x4e50 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x1002 -&device.id pci 0x4e50 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x1002 -&device.id pci 0x4e50 -&subvendor.id pci 0x1734 -&subdevice.id pci 0x1055 -+subdevice.name Amilo M1420W - - vendor.id pci 0x1002 -&device.id pci 0x4e51 -+device.name M10 NQ [Radeon Mobility 9600] - - vendor.id pci 0x1002 -&device.id pci 0x4e52 -+device.name RV350 [Mobility Radeon 9600 M10] - - vendor.id pci 0x1002 -&device.id pci 0x4e53 -+device.name M10 NS [Radeon Mobility 9600] - - vendor.id pci 0x1002 -&device.id pci 0x4e54 -+device.name M10 NT [FireGL Mobility T2] - - vendor.id pci 0x1002 -&device.id pci 0x4e56 -+device.name M11 NV [FireGL Mobility T2e] - - vendor.id pci 0x1002 -&device.id pci 0x4e64 -+device.name Radeon R300 [Radeon 9700 Pro] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4e65 -+device.name Radeon R300 [Radeon 9500 Pro] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4e65 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0003 -+subdevice.name Radeon R300 NE [Radeon 9500 Pro] - - vendor.id pci 0x1002 -&device.id pci 0x4e65 -&subvendor.id pci 0x1681 -&subdevice.id pci 0x0003 -+subdevice.name Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4e66 -+device.name RV350 NF [Radeon 9600] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4e67 -+device.name Radeon R300 [FireGL X1] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4e68 -+device.name Radeon R350 [Radeon 9800 Pro] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4e69 -+device.name Radeon R350 [Radeon 9800] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x4e6a -+device.name RV350 NJ [Radeon 9800 XT] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x5041 -+device.name Rage 128 PA/PRO - - vendor.id pci 0x1002 -&device.id pci 0x5042 -+device.name Rage 128 PB/PRO AGP 2x - - vendor.id pci 0x1002 -&device.id pci 0x5043 -+device.name Rage 128 PC/PRO AGP 4x - - vendor.id pci 0x1002 -&device.id pci 0x5044 -+device.name Rage 128 PD/PRO TMDS - - vendor.id pci 0x1002 -&device.id pci 0x5044 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0028 -+subdevice.name Rage 128 AIW - - vendor.id pci 0x1002 -&device.id pci 0x5044 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0029 -+subdevice.name Rage 128 AIW - - vendor.id pci 0x1002 -&device.id pci 0x5045 -+device.name Rage 128 PE/PRO AGP 2x TMDS - - vendor.id pci 0x1002 -&device.id pci 0x5046 -+device.name Rage 128 PF/PRO AGP 4x TMDS - - vendor.id pci 0x1002 -&device.id pci 0x5046 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0004 -+subdevice.name Rage Fury Pro - - vendor.id pci 0x1002 -&device.id pci 0x5046 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0008 -+subdevice.name Rage Fury Pro/Xpert 2000 Pro - - vendor.id pci 0x1002 -&device.id pci 0x5046 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0014 -+subdevice.name Rage Fury Pro - - vendor.id pci 0x1002 -&device.id pci 0x5046 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0018 -+subdevice.name Rage Fury Pro/Xpert 2000 Pro - - vendor.id pci 0x1002 -&device.id pci 0x5046 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0028 -+subdevice.name Rage 128 Pro AIW AGP - - vendor.id pci 0x1002 -&device.id pci 0x5046 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x002a -+subdevice.name Rage 128 Pro AIW AGP - - vendor.id pci 0x1002 -&device.id pci 0x5046 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0048 -+subdevice.name Rage Fury Pro - - vendor.id pci 0x1002 -&device.id pci 0x5046 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x2000 -+subdevice.name Rage Fury MAXX AGP 4x (TMDS) (VGA device) - - vendor.id pci 0x1002 -&device.id pci 0x5046 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x2001 -+subdevice.name Rage Fury MAXX AGP 4x (TMDS) (Extra device?!) - - vendor.id pci 0x1002 -&device.id pci 0x5047 -+device.name Rage 128 PG/PRO - - vendor.id pci 0x1002 -&device.id pci 0x5048 -+device.name Rage 128 PH/PRO AGP 2x - - vendor.id pci 0x1002 -&device.id pci 0x5049 -+device.name Rage 128 PI/PRO AGP 4x - - vendor.id pci 0x1002 -&device.id pci 0x504a -+device.name Rage 128 PJ/PRO TMDS - - vendor.id pci 0x1002 -&device.id pci 0x504b -+device.name Rage 128 PK/PRO AGP 2x TMDS - - vendor.id pci 0x1002 -&device.id pci 0x504c -+device.name Rage 128 PL/PRO AGP 4x TMDS - - vendor.id pci 0x1002 -&device.id pci 0x504d -+device.name Rage 128 PM/PRO - - vendor.id pci 0x1002 -&device.id pci 0x504e -+device.name Rage 128 PN/PRO AGP 2x - - vendor.id pci 0x1002 -&device.id pci 0x504f -+device.name Rage 128 PO/PRO AGP 4x - - vendor.id pci 0x1002 -&device.id pci 0x5050 -+device.name Rage 128 PP/PRO TMDS [Xpert 128] - - vendor.id pci 0x1002 -&device.id pci 0x5050 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0008 -+subdevice.name Xpert 128 - - vendor.id pci 0x1002 -&device.id pci 0x5051 -+device.name Rage 128 PQ/PRO AGP 2x TMDS - - vendor.id pci 0x1002 -&device.id pci 0x5052 -+device.name Rage 128 PR/PRO AGP 4x TMDS - - vendor.id pci 0x1002 -&device.id pci 0x5053 -+device.name Rage 128 PS/PRO - - vendor.id pci 0x1002 -&device.id pci 0x5054 -+device.name Rage 128 PT/PRO AGP 2x - - vendor.id pci 0x1002 -&device.id pci 0x5055 -+device.name Rage 128 PU/PRO AGP 4x - - vendor.id pci 0x1002 -&device.id pci 0x5056 -+device.name Rage 128 PV/PRO TMDS - - vendor.id pci 0x1002 -&device.id pci 0x5057 -+device.name Rage 128 PW/PRO AGP 2x TMDS - - vendor.id pci 0x1002 -&device.id pci 0x5058 -+device.name Rage 128 PX/PRO AGP 4x TMDS - - vendor.id pci 0x1002 -&device.id pci 0x5144 -+device.name Radeon R100 QD [Radeon 7200] - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0008 -+subdevice.name Radeon 7000/Radeon VE - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0009 -+subdevice.name Radeon 7000/Radeon - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x000a -+subdevice.name Radeon 7000/Radeon - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x001a -+subdevice.name Radeon 7000/Radeon - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0029 -+subdevice.name Radeon AIW - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0038 -+subdevice.name Radeon 7000/Radeon - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0039 -+subdevice.name Radeon 7000/Radeon - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x008a -+subdevice.name Radeon 7000/Radeon - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x00ba -+subdevice.name Radeon 7000/Radeon - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0139 -+subdevice.name Radeon 7000/Radeon - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x028a -+subdevice.name Radeon 7000/Radeon - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x02aa -+subdevice.name Radeon AIW - - vendor.id pci 0x1002 -&device.id pci 0x5144 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x053a -+subdevice.name Radeon 7000/Radeon - - vendor.id pci 0x1002 -&device.id pci 0x5145 -+device.name Radeon R100 QE - - vendor.id pci 0x1002 -&device.id pci 0x5146 -+device.name Radeon R100 QF - - vendor.id pci 0x1002 -&device.id pci 0x5147 -+device.name Radeon R100 QG - - vendor.id pci 0x1002 -&device.id pci 0x5148 -+device.name Radeon R200 QH [Radeon 8500] - - vendor.id pci 0x1002 -&device.id pci 0x5148 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x010a -+subdevice.name FireGL 8800 64Mb - - vendor.id pci 0x1002 -&device.id pci 0x5148 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0152 -+subdevice.name FireGL 8800 128Mb - - vendor.id pci 0x1002 -&device.id pci 0x5148 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0162 -+subdevice.name FireGL 8700 32Mb - - vendor.id pci 0x1002 -&device.id pci 0x5148 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0172 -+subdevice.name FireGL 8700 64Mb - - vendor.id pci 0x1002 -&device.id pci 0x5149 -+device.name Radeon R200 QI - - vendor.id pci 0x1002 -&device.id pci 0x514a -+device.name Radeon R200 QJ - - vendor.id pci 0x1002 -&device.id pci 0x514b -+device.name Radeon R200 QK - - vendor.id pci 0x1002 -&device.id pci 0x514c -+device.name Radeon R200 QL [Radeon 8500 LE] - - vendor.id pci 0x1002 -&device.id pci 0x514c -&subvendor.id pci 0x1002 -&subdevice.id pci 0x003a -+subdevice.name Radeon R200 QL [Radeon 8500 LE] - - vendor.id pci 0x1002 -&device.id pci 0x514c -&subvendor.id pci 0x1002 -&subdevice.id pci 0x013a -+subdevice.name Radeon 8500 - - vendor.id pci 0x1002 -&device.id pci 0x514c -&subvendor.id pci 0x148c -&subdevice.id pci 0x2026 -+subdevice.name R200 QL [Radeon 8500 Evil Master II Multi Display Edition] - - vendor.id pci 0x1002 -&device.id pci 0x514c -&subvendor.id pci 0x1681 -&subdevice.id pci 0x0010 -+subdevice.name Radeon 8500 [3D Prophet 8500 128Mb] - - vendor.id pci 0x1002 -&device.id pci 0x514c -&subvendor.id pci 0x174b -&subdevice.id pci 0x7149 -+subdevice.name Radeon R200 QL [Sapphire Radeon 8500 LE] - - vendor.id pci 0x1002 -&device.id pci 0x514d -+device.name Radeon R200 QM [Radeon 9100] - - vendor.id pci 0x1002 -&device.id pci 0x514e -+device.name Radeon R200 QN [Radeon 8500LE] - - vendor.id pci 0x1002 -&device.id pci 0x514f -+device.name Radeon R200 QO [Radeon 8500LE] - - vendor.id pci 0x1002 -&device.id pci 0x5154 -+device.name R200 QT [Radeon 8500] - - vendor.id pci 0x1002 -&device.id pci 0x5155 -+device.name R200 QU [Radeon 9100] - - vendor.id pci 0x1002 -&device.id pci 0x5157 -+device.name Radeon RV200 QW [Radeon 7500] - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x013a -+subdevice.name Radeon 7500 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x103a -+subdevice.name Dell Optiplex GX260 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x4000 -+subdevice.name RV200 QW [RADEON 7500 PRO MAYA AR] - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x148c -&subdevice.id pci 0x2024 -+subdevice.name RV200 QW [Radeon 7500LE Dual Display] - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x148c -&subdevice.id pci 0x2025 -+subdevice.name RV200 QW [Radeon 7500 Evil Master Multi Display Edition] - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x148c -&subdevice.id pci 0x2036 -+subdevice.name RV200 QW [Radeon 7500 PCI Dual Display] - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7146 -+subdevice.name RV200 QW [Radeon 7500 LE] - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7147 -+subdevice.name RV200 QW [Sapphire Radeon 7500LE] - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7161 -+subdevice.name Radeon RV200 QW [Radeon 7500 LE] - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x17af -&subdevice.id pci 0x0202 -+subdevice.name RV200 QW [Excalibur Radeon 7500LE] - - vendor.id pci 0x1002 -&device.id pci 0x5158 -+device.name Radeon RV200 QX [Radeon 7500] - - vendor.id pci 0x1002 -&device.id pci 0x5159 -+device.name Radeon RV100 QY [Radeon 7000/VE] - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x000a -+subdevice.name Radeon 7000/Radeon VE - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x000b -+subdevice.name Radeon 7000 - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0038 -+subdevice.name Radeon 7000/Radeon VE - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x003a -+subdevice.name Radeon 7000/Radeon VE - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x00ba -+subdevice.name Radeon 7000/Radeon VE - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x013a -+subdevice.name Radeon 7000/Radeon VE - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x4002 -+subdevice.name RV100 QY [RADEON 7000 PRO MAYA AV Series] - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x148c -&subdevice.id pci 0x2003 -+subdevice.name RV100 QY [Radeon 7000 Multi-Display Edition] - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x148c -&subdevice.id pci 0x2023 -+subdevice.name RV100 QY [Radeon 7000 Evil Master Multi-Display] - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7112 -+subdevice.name RV100 QY [Sapphire Radeon VE 7000] - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7c28 -+subdevice.name Sapphire Radeon VE 7000 DDR - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x1787 -&subdevice.id pci 0x0202 -+subdevice.name RV100 QY [Excalibur Radeon 7000] - - vendor.id pci 0x1002 -&device.id pci 0x515a -+device.name Radeon RV100 QZ [Radeon 7000/VE] - - vendor.id pci 0x1002 -&device.id pci 0x5168 -+device.name Radeon R200 Qh - - vendor.id pci 0x1002 -&device.id pci 0x5169 -+device.name Radeon R200 Qi - - vendor.id pci 0x1002 -&device.id pci 0x516a -+device.name Radeon R200 Qj - - vendor.id pci 0x1002 -&device.id pci 0x516b -+device.name Radeon R200 Qk - - vendor.id pci 0x1002 -&device.id pci 0x516c -+device.name Radeon R200 Ql - - vendor.id pci 0x1002 -&device.id pci 0x5245 -+device.name Rage 128 RE/SG - - vendor.id pci 0x1002 -&device.id pci 0x5245 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0008 -+subdevice.name Xpert 128 - - vendor.id pci 0x1002 -&device.id pci 0x5245 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0028 -+subdevice.name Rage 128 AIW - - vendor.id pci 0x1002 -&device.id pci 0x5245 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0029 -+subdevice.name Rage 128 AIW - - vendor.id pci 0x1002 -&device.id pci 0x5245 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0068 -+subdevice.name Rage 128 AIW - - vendor.id pci 0x1002 -&device.id pci 0x5246 -+device.name Rage 128 RF/SG AGP - - vendor.id pci 0x1002 -&device.id pci 0x5246 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0004 -+subdevice.name Magnum/Xpert 128/Xpert 99 - - vendor.id pci 0x1002 -&device.id pci 0x5246 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0008 -+subdevice.name Magnum/Xpert128/X99/Xpert2000 - - vendor.id pci 0x1002 -&device.id pci 0x5246 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0028 -+subdevice.name Rage 128 AIW AGP - - vendor.id pci 0x1002 -&device.id pci 0x5246 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0044 -+subdevice.name Rage Fury/Xpert 128/Xpert 2000 - - vendor.id pci 0x1002 -&device.id pci 0x5246 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0068 -+subdevice.name Rage 128 AIW AGP - - vendor.id pci 0x1002 -&device.id pci 0x5246 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0448 -+subdevice.name Rage Fury - - vendor.id pci 0x1002 -&device.id pci 0x5247 -+device.name Rage 128 RG - - vendor.id pci 0x1002 -&device.id pci 0x524b -+device.name Rage 128 RK/VR - - vendor.id pci 0x1002 -&device.id pci 0x524c -+device.name Rage 128 RL/VR AGP - - vendor.id pci 0x1002 -&device.id pci 0x524c -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0008 -+subdevice.name Xpert 99/Xpert 2000 - - vendor.id pci 0x1002 -&device.id pci 0x524c -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0088 -+subdevice.name Xpert 99 - - vendor.id pci 0x1002 -&device.id pci 0x5345 -+device.name Rage 128 SE/4x - - vendor.id pci 0x1002 -&device.id pci 0x5346 -+device.name Rage 128 SF/4x AGP 2x - - vendor.id pci 0x1002 -&device.id pci 0x5346 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0048 -+subdevice.name RAGE 128 16MB VGA TVOUT AMC PAL - - vendor.id pci 0x1002 -&device.id pci 0x5347 -+device.name Rage 128 SG/4x AGP 4x - - vendor.id pci 0x1002 -&device.id pci 0x5348 -+device.name Rage 128 SH - - vendor.id pci 0x1002 -&device.id pci 0x534b -+device.name Rage 128 SK/4x - - vendor.id pci 0x1002 -&device.id pci 0x534c -+device.name Rage 128 SL/4x AGP 2x - - vendor.id pci 0x1002 -&device.id pci 0x534d -+device.name Rage 128 SM/4x AGP 4x - - vendor.id pci 0x1002 -&device.id pci 0x534d -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0008 -+subdevice.name Xpert 99/Xpert 2000 - - vendor.id pci 0x1002 -&device.id pci 0x534d -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0018 -+subdevice.name Xpert 2000 - - vendor.id pci 0x1002 -&device.id pci 0x534e -+device.name Rage 128 4x - - vendor.id pci 0x1002 -&device.id pci 0x5354 -+device.name Mach 64 VT - - vendor.id pci 0x1002 -&device.id pci 0x5354 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x5654 -+subdevice.name Mach 64 reference - - vendor.id pci 0x1002 -&device.id pci 0x5446 -+device.name Rage 128 Pro Ultra TF - - vendor.id pci 0x1002 -&device.id pci 0x5446 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0004 -+subdevice.name Rage Fury Pro - - vendor.id pci 0x1002 -&device.id pci 0x5446 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0008 -+subdevice.name Rage Fury Pro/Xpert 2000 Pro - - vendor.id pci 0x1002 -&device.id pci 0x5446 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0018 -+subdevice.name Rage Fury Pro/Xpert 2000 Pro - - vendor.id pci 0x1002 -&device.id pci 0x5446 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0028 -+subdevice.name Rage 128 AIW Pro AGP - - vendor.id pci 0x1002 -&device.id pci 0x5446 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0029 -+subdevice.name Rage 128 AIW - - vendor.id pci 0x1002 -&device.id pci 0x5446 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x002a -+subdevice.name Rage 128 AIW Pro AGP - - vendor.id pci 0x1002 -&device.id pci 0x5446 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x002b -+subdevice.name Rage 128 AIW - - vendor.id pci 0x1002 -&device.id pci 0x5446 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0048 -+subdevice.name Xpert 2000 Pro - - vendor.id pci 0x1002 -&device.id pci 0x544c -+device.name Rage 128 Pro Ultra TL - - vendor.id pci 0x1002 -&device.id pci 0x5452 -+device.name Rage 128 Pro Ultra TR - - vendor.id pci 0x1002 -&device.id pci 0x5452 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x001c -+subdevice.name Rage 128 Pro 4XL - - vendor.id pci 0x1002 -&device.id pci 0x5452 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1279 -+subdevice.name Rage 128 Pro 4XL - - vendor.id pci 0x1002 -&device.id pci 0x5453 -+device.name Rage 128 Pro Ultra TS - - vendor.id pci 0x1002 -&device.id pci 0x5454 -+device.name Rage 128 Pro Ultra TT - - vendor.id pci 0x1002 -&device.id pci 0x5455 -+device.name Rage 128 Pro Ultra TU - - vendor.id pci 0x1002 -&device.id pci 0x5460 -+device.name M22 [Radeon Mobility M300] - - vendor.id pci 0x1002 -&device.id pci 0x5464 -+device.name M22 [FireGL GL] - - vendor.id pci 0x1002 -&device.id pci 0x5548 -+device.name R423 UH [Radeon X800 (PCIE)] - - vendor.id pci 0x1002 -&device.id pci 0x5549 -+device.name R423 UI [Radeon X800PRO (PCIE)] - - vendor.id pci 0x1002 -&device.id pci 0x554a -+device.name R423 UJ [Radeon X800LE (PCIE)] - - vendor.id pci 0x1002 -&device.id pci 0x554b -+device.name R423 UK [Radeon X800SE (PCIE)] - - vendor.id pci 0x1002 -&device.id pci 0x5551 -+device.name R423 UQ [FireGL V7200 (PCIE)] - - vendor.id pci 0x1002 -&device.id pci 0x5552 -+device.name R423 UR [FireGL V5100 (PCIE)] - - vendor.id pci 0x1002 -&device.id pci 0x5554 -+device.name R423 UT [FireGL V7100 (PCIE)] - - vendor.id pci 0x1002 -&device.id pci 0x556b -+device.name Radeon R423 UK (PCIE) [X800 SE] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x5654 -+device.name 264VT [Mach64 VT] - - vendor.id pci 0x1002 -&device.id pci 0x5654 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x5654 -+subdevice.name Mach64VT Reference - - vendor.id pci 0x1002 -&device.id pci 0x5655 -+device.name 264VT3 [Mach64 VT3] - - vendor.id pci 0x1002 -&device.id pci 0x5656 -+device.name 264VT4 [Mach64 VT4] - - vendor.id pci 0x1002 -&device.id pci 0x5830 -+device.name RS300 Host Bridge - - vendor.id pci 0x1002 -&device.id pci 0x5831 -+device.name RS300 Host Bridge - - vendor.id pci 0x1002 -&device.id pci 0x5832 -+device.name RS300 Host Bridge - - vendor.id pci 0x1002 -&device.id pci 0x5833 -+device.name Radeon 9100 IGP Host Bridge - - vendor.id pci 0x1002 -&device.id pci 0x5834 -+device.name Radeon 9100 IGP - - vendor.id pci 0x1002 -&device.id pci 0x5835 -+device.name RS300M AGP [Radeon Mobility 9100IGP] - - vendor.id pci 0x1002 -&device.id pci 0x5838 -+device.name Radeon 9100 IGP AGP Bridge - - vendor.id pci 0x1002 -&device.id pci 0x5941 -+device.name RV280 [Radeon 9200] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x5941 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7c12 -+subdevice.name Sapphire Radeon 9200 - - vendor.id pci 0x1002 -&device.id pci 0x5941 -&subvendor.id pci 0x17af -&subdevice.id pci 0x200d -+subdevice.name Excalibur Radeon 9200 - - vendor.id pci 0x1002 -&device.id pci 0x5941 -&subvendor.id pci 0x18bc -&subdevice.id pci 0x0050 -+subdevice.name GeXcube GC-R9200-C3 (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x5944 -+device.name RV280 [Radeon 9200 SE (PCI)] - - vendor.id pci 0x1002 -&device.id pci 0x5960 -+device.name RV280 [Radeon 9200 PRO] - - vendor.id pci 0x1002 -&device.id pci 0x5961 -+device.name RV280 [Radeon 9200] - - vendor.id pci 0x1002 -&device.id pci 0x5961 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x2f72 -+subdevice.name All-in-Wonder 9200 Series - - vendor.id pci 0x1002 -&device.id pci 0x5961 -&subvendor.id pci 0x12ab -&subdevice.id pci 0x5961 -+subdevice.name YUAN SMARTVGA Radeon 9200 - - vendor.id pci 0x1002 -&device.id pci 0x5961 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x4018 -+subdevice.name Gigabyte Radeon 9200 - - vendor.id pci 0x1002 -&device.id pci 0x5961 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7c13 -+subdevice.name Sapphire Radeon 9200 - - vendor.id pci 0x1002 -&device.id pci 0x5961 -&subvendor.id pci 0x17af -&subdevice.id pci 0x200c -+subdevice.name Excalibur Radeon 9200 - - vendor.id pci 0x1002 -&device.id pci 0x5961 -&subvendor.id pci 0x18bc -&subdevice.id pci 0x0050 -+subdevice.name Radeon 9200 Game Buster - - vendor.id pci 0x1002 -&device.id pci 0x5961 -&subvendor.id pci 0x18bc -&subdevice.id pci 0x0051 -+subdevice.name GeXcube GC-R9200-C3 - - vendor.id pci 0x1002 -&device.id pci 0x5961 -&subvendor.id pci 0x18bc -&subdevice.id pci 0x0053 -+subdevice.name Radeon 9200 Game Buster VIVO - - vendor.id pci 0x1002 -&device.id pci 0x5962 -+device.name RV280 [Radeon 9200] - - vendor.id pci 0x1002 -&device.id pci 0x5964 -+device.name RV280 [Radeon 9200 SE] - - vendor.id pci 0x1002 -&device.id pci 0x5964 -&subvendor.id pci 0x1043 -&subdevice.id pci 0xc006 -+subdevice.name ASUS Radeon 9200 SE / TD / 128M - - vendor.id pci 0x1002 -&device.id pci 0x5964 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x4018 -+subdevice.name Radeon 9200 SE - - vendor.id pci 0x1002 -&device.id pci 0x5964 -&subvendor.id pci 0x148c -&subdevice.id pci 0x2073 -+subdevice.name CN-AG92E - - vendor.id pci 0x1002 -&device.id pci 0x5964 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7c13 -+subdevice.name Sapphire Radeon 9200 SE - - vendor.id pci 0x1002 -&device.id pci 0x5964 -&subvendor.id pci 0x1787 -&subdevice.id pci 0x5964 -+subdevice.name Excalibur 9200SE VIVO 128M - - vendor.id pci 0x1002 -&device.id pci 0x5964 -&subvendor.id pci 0x17af -&subdevice.id pci 0x2012 -+subdevice.name Radeon 9200 SE Excalibur - - vendor.id pci 0x1002 -&device.id pci 0x5964 -&subvendor.id pci 0x18bc -&subdevice.id pci 0x0170 -+subdevice.name Sapphire Radeon 9200 SE 128MB Game Buster - - vendor.id pci 0x1002 -&device.id pci 0x5964 -&subvendor.id pci 0x18bc -&subdevice.id pci 0x0173 -+subdevice.name GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] - - vendor.id pci 0x1002 -&device.id pci 0x5b60 -+device.name RV370 5B60 [Radeon X300 (PCIE)] - - vendor.id pci 0x1002 -&device.id pci 0x5b60 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x002a -+subdevice.name EAX300SE - - vendor.id pci 0x1002 -&device.id pci 0x5b62 -+device.name RV370 5B62 [Radeon X600 (PCIE)] - - vendor.id pci 0x1002 -&device.id pci 0x5b64 -+device.name RV370 5B64 [FireGL V3100 (PCIE)] - - vendor.id pci 0x1002 -&device.id pci 0x5b65 -+device.name RV370 5B65 [FireGL D1100 (PCIE)] - - vendor.id pci 0x1002 -&device.id pci 0x5c61 -+device.name M9+ 5C61 [Radeon Mobility 9200 (AGP)] - - vendor.id pci 0x1002 -&device.id pci 0x5c63 -+device.name M9+ 5C63 [Radeon Mobility 9200 (AGP)] - - vendor.id pci 0x1002 -&device.id pci 0x5d44 -+device.name RV280 [Radeon 9200 SE] (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x5d44 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x4019 -+subdevice.name Radeon 9200 SE (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x5d44 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7c12 -+subdevice.name Sapphire Radeon 9200 SE (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x5d44 -&subvendor.id pci 0x1787 -&subdevice.id pci 0x5965 -+subdevice.name Excalibur 9200SE VIVO 128M (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x5d44 -&subvendor.id pci 0x17af -&subdevice.id pci 0x2013 -+subdevice.name Radeon 9200 SE Excalibur (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x5d44 -&subvendor.id pci 0x18bc -&subdevice.id pci 0x0171 -+subdevice.name Radeon 9200 SE 128MB Game Buster (Secondary) - - vendor.id pci 0x1002 -&device.id pci 0x5d44 -&subvendor.id pci 0x18bc -&subdevice.id pci 0x0172 -+subdevice.name GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] - - vendor.id pci 0x1002 -&device.id pci 0x5d57 -+device.name R423 5F57 [Radeon X800XT (PCIE)] - - vendor.id pci 0x1002 -&device.id pci 0x700f -+device.name PCI Bridge [IGP 320M] - - vendor.id pci 0x1002 -&device.id pci 0x7010 -+device.name PCI Bridge [IGP 340M] - - vendor.id pci 0x1002 -&device.id pci 0x7834 -+device.name Radeon 9100 PRO IGP - - vendor.id pci 0x1002 -&device.id pci 0x7835 -+device.name Radeon Mobility 9200 IGP - - vendor.id pci 0x1002 -&device.id pci 0x7c37 -+device.name RV350 AQ [Radeon 9600 SE] - - vendor.id pci 0x1002 -&device.id pci 0xcab0 -+device.name AGP Bridge [IGP 320M] - - vendor.id pci 0x1002 -&device.id pci 0xcab2 -+device.name RS200/RS200M AGP Bridge [IGP 340M] - - vendor.id pci 0x1002 -&device.id pci 0xcbb2 -+device.name RS200/RS200M AGP Bridge [IGP 340M] - - vendor.id pci 0x1003 -+vendor.name ULSI Systems - - vendor.id pci 0x1003 -&device.id pci 0x0201 -+device.name US201 - - vendor.id pci 0x1004 -+vendor.name VLSI Technology Inc - - vendor.id pci 0x1004 -&device.id pci 0x0005 -+device.name 82C592-FC1 - - vendor.id pci 0x1004 -&device.id pci 0x0006 -+device.name 82C593-FC1 - - vendor.id pci 0x1004 -&device.id pci 0x0007 -+device.name 82C594-AFC2 - - vendor.id pci 0x1004 -&device.id pci 0x0008 -+device.name 82C596/7 [Wildcat] - - vendor.id pci 0x1004 -&device.id pci 0x0009 -+device.name 82C597-AFC2 - - vendor.id pci 0x1004 -&device.id pci 0x000c -+device.name 82C541 [Lynx] - - vendor.id pci 0x1004 -&device.id pci 0x000d -+device.name 82C543 [Lynx] - - vendor.id pci 0x1004 -&device.id pci 0x0101 -+device.name 82C532 - - vendor.id pci 0x1004 -&device.id pci 0x0102 -+device.name 82C534 [Eagle] - - vendor.id pci 0x1004 -&device.id pci 0x0103 -+device.name 82C538 - - vendor.id pci 0x1004 -&device.id pci 0x0104 -+device.name 82C535 - - vendor.id pci 0x1004 -&device.id pci 0x0105 -+device.name 82C147 - - vendor.id pci 0x1004 -&device.id pci 0x0200 -+device.name 82C975 - - vendor.id pci 0x1004 -&device.id pci 0x0280 -+device.name 82C925 - - vendor.id pci 0x1004 -&device.id pci 0x0304 -+device.name QSound ThunderBird PCI Audio - - vendor.id pci 0x1004 -&device.id pci 0x0304 -&subvendor.id pci 0x1004 -&subdevice.id pci 0x0304 -+subdevice.name QSound ThunderBird PCI Audio - - vendor.id pci 0x1004 -&device.id pci 0x0304 -&subvendor.id pci 0x122d -&subdevice.id pci 0x1206 -+subdevice.name DSP368 Audio - - vendor.id pci 0x1004 -&device.id pci 0x0304 -&subvendor.id pci 0x1483 -&subdevice.id pci 0x5020 -+subdevice.name XWave Thunder 3D Audio - - vendor.id pci 0x1004 -&device.id pci 0x0305 -+device.name QSound ThunderBird PCI Audio Gameport - - vendor.id pci 0x1004 -&device.id pci 0x0305 -&subvendor.id pci 0x1004 -&subdevice.id pci 0x0305 -+subdevice.name QSound ThunderBird PCI Audio Gameport - - vendor.id pci 0x1004 -&device.id pci 0x0305 -&subvendor.id pci 0x122d -&subdevice.id pci 0x1207 -+subdevice.name DSP368 Audio Gameport - - vendor.id pci 0x1004 -&device.id pci 0x0305 -&subvendor.id pci 0x1483 -&subdevice.id pci 0x5021 -+subdevice.name XWave Thunder 3D Audio Gameport - - vendor.id pci 0x1004 -&device.id pci 0x0306 -+device.name QSound ThunderBird PCI Audio Support Registers - - vendor.id pci 0x1004 -&device.id pci 0x0306 -&subvendor.id pci 0x1004 -&subdevice.id pci 0x0306 -+subdevice.name QSound ThunderBird PCI Audio Support Registers - - vendor.id pci 0x1004 -&device.id pci 0x0306 -&subvendor.id pci 0x122d -&subdevice.id pci 0x1208 -+subdevice.name DSP368 Audio Support Registers - - vendor.id pci 0x1004 -&device.id pci 0x0306 -&subvendor.id pci 0x1483 -&subdevice.id pci 0x5022 -+subdevice.name XWave Thunder 3D Audio Support Registers - - vendor.id pci 0x1004 -&device.id pci 0x0307 -+device.name Thunderbird - - vendor.id pci 0x1004 -&device.id pci 0x0308 -+device.name Thunderbird - - vendor.id pci 0x1004 -&device.id pci 0x0702 -+device.name VAS96011 [Golden Gate II] - - vendor.id pci 0x1004 -&device.id pci 0x0703 -+device.name Tollgate - - vendor.id pci 0x1005 -+vendor.name Avance Logic Inc. [ALI] - - vendor.id pci 0x1005 -&device.id pci 0x2064 -+device.name ALG2032/2064 - - vendor.id pci 0x1005 -&device.id pci 0x2128 -+device.name ALG2364A - - vendor.id pci 0x1005 -&device.id pci 0x2301 -+device.name ALG2301 - - vendor.id pci 0x1005 -&device.id pci 0x2302 -+device.name ALG2302 - - vendor.id pci 0x1005 -&device.id pci 0x2364 -+device.name ALG2364 - - vendor.id pci 0x1005 -&device.id pci 0x2464 -+device.name ALG2364A - - vendor.id pci 0x1005 -&device.id pci 0x2501 -+device.name ALG2564A/25128A - - vendor.id pci 0x1006 -+vendor.name Reply Group - - vendor.id pci 0x1007 -+vendor.name NetFrame Systems Inc - - vendor.id pci 0x1008 -+vendor.name Epson - - vendor.id pci 0x100a -+vendor.name Phoenix Technologies - - vendor.id pci 0x100b -+vendor.name National Semiconductor Corporation - - vendor.id pci 0x100b -&device.id pci 0x0001 -+device.name DP83810 - - vendor.id pci 0x100b -&device.id pci 0x0002 -+device.name 87415/87560 IDE - - vendor.id pci 0x100b -&device.id pci 0x000e -+device.name 87560 Legacy I/O - - vendor.id pci 0x100b -&device.id pci 0x000f -+device.name FireWire Controller - - vendor.id pci 0x100b -&device.id pci 0x0011 -+device.name NS87560 National PCI System I/O - - vendor.id pci 0x100b -&device.id pci 0x0012 -+device.name USB Controller - - vendor.id pci 0x100b -&device.id pci 0x0020 -+device.name DP83815 (MacPhyter) Ethernet Controller - - vendor.id pci 0x100b -&device.id pci 0x0020 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0024 -+subdevice.name Pavilion ze4400 builtin Network - - vendor.id pci 0x100b -&device.id pci 0x0020 -&subvendor.id pci 0x1385 -&subdevice.id pci 0xf311 -+subdevice.name FA311 / FA312 (FA311 with WoL HW) - - vendor.id pci 0x100b -&device.id pci 0x0022 -+device.name DP83820 10/100/1000 Ethernet Controller - - vendor.id pci 0x100b -&device.id pci 0x0028 -+device.name CS5535 Host bridge - - vendor.id pci 0x100b -&device.id pci 0x002b -+device.name CS5535 ISA bridge - - vendor.id pci 0x100b -&device.id pci 0x002d -+device.name CS5535 IDE - - vendor.id pci 0x100b -&device.id pci 0x002e -+device.name CS5535 Audio - - vendor.id pci 0x100b -&device.id pci 0x002f -+device.name CS5535 USB - - vendor.id pci 0x100b -&device.id pci 0x0030 -+device.name CS5535 Video - - vendor.id pci 0x100b -&device.id pci 0x0035 -+device.name DP83065 [Saturn] 10/100/1000 Ethernet Controller - - vendor.id pci 0x100b -&device.id pci 0x0500 -+device.name SCx200 Bridge - - vendor.id pci 0x100b -&device.id pci 0x0501 -+device.name SCx200 SMI - - vendor.id pci 0x100b -&device.id pci 0x0502 -+device.name SCx200 IDE - - vendor.id pci 0x100b -&device.id pci 0x0503 -+device.name SCx200 Audio - - vendor.id pci 0x100b -&device.id pci 0x0504 -+device.name SCx200 Video - - vendor.id pci 0x100b -&device.id pci 0x0505 -+device.name SCx200 XBus - - vendor.id pci 0x100b -&device.id pci 0x0510 -+device.name SC1100 Bridge - - vendor.id pci 0x100b -&device.id pci 0x0511 -+device.name SC1100 SMI - - vendor.id pci 0x100b -&device.id pci 0x0515 -+device.name SC1100 XBus - - vendor.id pci 0x100b -&device.id pci 0xd001 -+device.name 87410 IDE - - vendor.id pci 0x100c -+vendor.name Tseng Labs Inc - - vendor.id pci 0x100c -&device.id pci 0x3202 -+device.name ET4000/W32p rev A - - vendor.id pci 0x100c -&device.id pci 0x3205 -+device.name ET4000/W32p rev B - - vendor.id pci 0x100c -&device.id pci 0x3206 -+device.name ET4000/W32p rev C - - vendor.id pci 0x100c -&device.id pci 0x3207 -+device.name ET4000/W32p rev D - - vendor.id pci 0x100c -&device.id pci 0x3208 -+device.name ET6000 - - vendor.id pci 0x100c -&device.id pci 0x4702 -+device.name ET6300 - - vendor.id pci 0x100d -+vendor.name AST Research Inc - - vendor.id pci 0x100e -+vendor.name Weitek - - vendor.id pci 0x100e -&device.id pci 0x9000 -+device.name P9000 Viper - - vendor.id pci 0x100e -&device.id pci 0x9001 -+device.name P9000 Viper - - vendor.id pci 0x100e -&device.id pci 0x9002 -+device.name P9000 Viper - - vendor.id pci 0x100e -&device.id pci 0x9100 -+device.name P9100 Viper Pro/SE - - vendor.id pci 0x1010 -+vendor.name Video Logic, Ltd. - - vendor.id pci 0x1011 -+vendor.name Digital Equipment Corporation - - vendor.id pci 0x1011 -&device.id pci 0x0001 -+device.name DECchip 21050 - - vendor.id pci 0x1011 -&device.id pci 0x0002 -+device.name DECchip 21040 [Tulip] - - vendor.id pci 0x1011 -&device.id pci 0x0004 -+device.name DECchip 21030 [TGA] - - vendor.id pci 0x1011 -&device.id pci 0x0007 -+device.name NVRAM [Zephyr NVRAM] - - vendor.id pci 0x1011 -&device.id pci 0x0008 -+device.name KZPSA [KZPSA] - - vendor.id pci 0x1011 -&device.id pci 0x0009 -+device.name DECchip 21140 [FasterNet] - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x0310 -+subdevice.name 21140 Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0x2001 -+subdevice.name SMC9332BDT EtherPower 10/100 - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0x2002 -+subdevice.name SMC9332BVT EtherPower T4 10/100 - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0x2003 -+subdevice.name SMC9334BDT EtherPower 10/100 (1-port) - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1109 -&subdevice.id pci 0x2400 -+subdevice.name ANA-6944A/TX Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1112 -&subdevice.id pci 0x2300 -+subdevice.name RNS2300 Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1112 -&subdevice.id pci 0x2320 -+subdevice.name RNS2320 Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1112 -&subdevice.id pci 0x2340 -+subdevice.name RNS2340 Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1113 -&subdevice.id pci 0x1207 -+subdevice.name EN-1207-TX Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1100 -+subdevice.name DFE-500TX Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1112 -+subdevice.name DFE-570TX Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1140 -+subdevice.name DFE-660 Cardbus Ethernet 10/100 - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1142 -+subdevice.name DFE-660 Cardbus Ethernet 10/100 - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x11f6 -&subdevice.id pci 0x0503 -+subdevice.name Freedomline Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1282 -&subdevice.id pci 0x9100 -+subdevice.name AEF-380TXD Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x1385 -&subdevice.id pci 0x1100 -+subdevice.name FA310TX Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0009 -&subvendor.id pci 0x2646 -&subdevice.id pci 0x0001 -+subdevice.name KNE100TX Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x000a -+device.name 21230 Video Codec - - vendor.id pci 0x1011 -&device.id pci 0x000d -+device.name PBXGB [TGA2] - - vendor.id pci 0x1011 -&device.id pci 0x000f -+device.name DEFPA - - vendor.id pci 0x1011 -&device.id pci 0x0014 -+device.name DECchip 21041 [Tulip Pass 3] - - vendor.id pci 0x1011 -&device.id pci 0x0014 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x0100 -+subdevice.name DE-530+ - - vendor.id pci 0x1011 -&device.id pci 0x0016 -+device.name DGLPB [OPPO] - - vendor.id pci 0x1011 -&device.id pci 0x0017 -+device.name PV-PCI Graphics Controller (ZLXp-L) - - vendor.id pci 0x1011 -&device.id pci 0x0019 -+device.name DECchip 21142/43 - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1011 -&subdevice.id pci 0x500a -+subdevice.name DE500A Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1011 -&subdevice.id pci 0x500b -+subdevice.name DE500B Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0001 -+subdevice.name 10/100 EtherJet Cardbus - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x0315 -+subdevice.name ALN315 Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x800c -+subdevice.name PC-9821-CS01 100BASE-TX Interface Card - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x800d -+subdevice.name PC-9821NR-B06 100BASE-TX Interface Card - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x108d -&subdevice.id pci 0x0016 -+subdevice.name Rapidfire 2327 10/100 Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x108d -&subdevice.id pci 0x0017 -+subdevice.name GoCard 2250 Ethernet 10/100 Cardbus - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0x2005 -+subdevice.name SMC8032DT Extreme Ethernet 10/100 - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0x8034 -+subdevice.name SMC8034 Extreme Ethernet 10/100 - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x10ef -&subdevice.id pci 0x8169 -+subdevice.name Cardbus Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1109 -&subdevice.id pci 0x2a00 -+subdevice.name ANA-6911A/TX Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1109 -&subdevice.id pci 0x2b00 -+subdevice.name ANA-6911A/TXC Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1109 -&subdevice.id pci 0x3000 -+subdevice.name ANA-6922/TX Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1113 -&subdevice.id pci 0x1207 -+subdevice.name Cheetah Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1113 -&subdevice.id pci 0x2220 -+subdevice.name Cardbus Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x115d -&subdevice.id pci 0x0002 -+subdevice.name Cardbus Ethernet 10/100 - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0203 -+subdevice.name Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0204 -+subdevice.name Cardbus Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1100 -+subdevice.name DFE-500TX Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1101 -+subdevice.name DFE-500TX Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1102 -+subdevice.name DFE-500TX Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1112 -+subdevice.name DFE-570TX Quad Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2800 -+subdevice.name AT-2800Tx Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1266 -&subdevice.id pci 0x0004 -+subdevice.name Eagle Fast EtherMAX - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x12af -&subdevice.id pci 0x0019 -+subdevice.name NetFlyer Cardbus Fast Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1374 -&subdevice.id pci 0x0001 -+subdevice.name Cardbus Ethernet Card 10/100 - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1374 -&subdevice.id pci 0x0002 -+subdevice.name Cardbus Ethernet Card 10/100 - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1374 -&subdevice.id pci 0x0007 -+subdevice.name Cardbus Ethernet Card 10/100 - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1374 -&subdevice.id pci 0x0008 -+subdevice.name Cardbus Ethernet Card 10/100 - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1385 -&subdevice.id pci 0x2100 -+subdevice.name FA510 - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x1395 -&subdevice.id pci 0x0001 -+subdevice.name 10/100 Ethernet CardBus PC Card - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x13d1 -&subdevice.id pci 0xab01 -+subdevice.name EtherFast 10/100 Cardbus (PCMPC200) - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x14cb -&subdevice.id pci 0x0100 -+subdevice.name LNDL-100N 100Base-TX Ethernet PC Card - - vendor.id pci 0x1011 -&device.id pci 0x0019 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0001 -+subdevice.name EtherExpress PRO/100 Mobile CardBus 32 - - vendor.id pci 0x1011 -&device.id pci 0x001a -+device.name Farallon PN9000SX Gigabit Ethernet - - vendor.id pci 0x1011 -&device.id pci 0x0021 -+device.name DECchip 21052 - - vendor.id pci 0x1011 -&device.id pci 0x0022 -+device.name DECchip 21150 - - vendor.id pci 0x1011 -&device.id pci 0x0023 -+device.name DECchip 21150 - - vendor.id pci 0x1011 -&device.id pci 0x0024 -+device.name DECchip 21152 - - vendor.id pci 0x1011 -&device.id pci 0x0025 -+device.name DECchip 21153 - - vendor.id pci 0x1011 -&device.id pci 0x0026 -+device.name DECchip 21154 - - vendor.id pci 0x1011 -&device.id pci 0x0034 -+device.name 56k Modem Cardbus - - vendor.id pci 0x1011 -&device.id pci 0x0034 -&subvendor.id pci 0x1374 -&subdevice.id pci 0x0003 -+subdevice.name 56k Modem Cardbus - - vendor.id pci 0x1011 -&device.id pci 0x0045 -+device.name DECchip 21553 - - vendor.id pci 0x1011 -&device.id pci 0x0046 -+device.name DECchip 21554 - - vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4050 -+subdevice.name Integrated Smart Array - - vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4051 -+subdevice.name Integrated Smart Array - - vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4058 -+subdevice.name Integrated Smart Array - - vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10c2 -+subdevice.name Hewlett-Packard NetRAID-4M - - vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x12d9 -&subdevice.id pci 0x000a -+subdevice.name IP Telephony card - - vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1050 -+subdevice.name CT7 mainboard - - vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1051 -+subdevice.name CE7 mainboard - - vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0364 -+subdevice.name 5400S (Mustang) - - vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0365 -+subdevice.name 5400S (Mustang) - - vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x1364 -+subdevice.name Dell PowerEdge RAID Controller 2 - - vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x1365 -+subdevice.name Dell PowerEdge RAID Controller 2 - - vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0xe4bf -&subdevice.id pci 0x1000 -+subdevice.name CC8-1-BLUES - - vendor.id pci 0x1011 -&device.id pci 0x1065 -+device.name StrongARM DC21285 - - vendor.id pci 0x1011 -&device.id pci 0x1065 -&subvendor.id pci 0x1069 -&subdevice.id pci 0x0020 -+subdevice.name DAC960P / DAC1164P - - vendor.id pci 0x1012 -+vendor.name Micronics Computers Inc - - vendor.id pci 0x1013 -+vendor.name Cirrus Logic - - vendor.id pci 0x1013 -&device.id pci 0x0038 -+device.name GD 7548 - - vendor.id pci 0x1013 -&device.id pci 0x0040 -+device.name GD 7555 Flat Panel GUI Accelerator - - vendor.id pci 0x1013 -&device.id pci 0x004c -+device.name GD 7556 Video/Graphics LCD/CRT Ctrlr - - vendor.id pci 0x1013 -&device.id pci 0x00a0 -+device.name GD 5430/40 [Alpine] - - vendor.id pci 0x1013 -&device.id pci 0x00a2 -+device.name GD 5432 [Alpine] - - vendor.id pci 0x1013 -&device.id pci 0x00a4 -+device.name GD 5434-4 [Alpine] - - vendor.id pci 0x1013 -&device.id pci 0x00a8 -+device.name GD 5434-8 [Alpine] - - vendor.id pci 0x1013 -&device.id pci 0x00ac -+device.name GD 5436 [Alpine] - - vendor.id pci 0x1013 -&device.id pci 0x00b0 -+device.name GD 5440 - - vendor.id pci 0x1013 -&device.id pci 0x00b8 -+device.name GD 5446 - - vendor.id pci 0x1013 -&device.id pci 0x00bc -+device.name GD 5480 - - vendor.id pci 0x1013 -&device.id pci 0x00bc -&subvendor.id pci 0x1013 -&subdevice.id pci 0x00bc -+subdevice.name CL-GD5480 - - vendor.id pci 0x1013 -&device.id pci 0x00d0 -+device.name GD 5462 - - vendor.id pci 0x1013 -&device.id pci 0x00d2 -+device.name GD 5462 [Laguna I] - - vendor.id pci 0x1013 -&device.id pci 0x00d4 -+device.name GD 5464 [Laguna] - - vendor.id pci 0x1013 -&device.id pci 0x00d5 -+device.name GD 5464 BD [Laguna] - - vendor.id pci 0x1013 -&device.id pci 0x00d6 -+device.name GD 5465 [Laguna] - - vendor.id pci 0x1013 -&device.id pci 0x00d6 -&subvendor.id pci 0x13ce -&subdevice.id pci 0x8031 -+subdevice.name Barco Metheus 2 Megapixel, Dual Head - - vendor.id pci 0x1013 -&device.id pci 0x00d6 -&subvendor.id pci 0x13cf -&subdevice.id pci 0x8031 -+subdevice.name Barco Metheus 2 Megapixel, Dual Head - - vendor.id pci 0x1013 -&device.id pci 0x00e8 -+device.name GD 5436U - - vendor.id pci 0x1013 -&device.id pci 0x1100 -+device.name CL 6729 - - vendor.id pci 0x1013 -&device.id pci 0x1110 -+device.name PD 6832 PCMCIA/CardBus Ctrlr - - vendor.id pci 0x1013 -&device.id pci 0x1112 -+device.name PD 6834 PCMCIA/CardBus Ctrlr - - vendor.id pci 0x1013 -&device.id pci 0x1113 -+device.name PD 6833 PCMCIA/CardBus Ctrlr - - vendor.id pci 0x1013 -&device.id pci 0x1200 -+device.name GD 7542 [Nordic] - - vendor.id pci 0x1013 -&device.id pci 0x1202 -+device.name GD 7543 [Viking] - - vendor.id pci 0x1013 -&device.id pci 0x1204 -+device.name GD 7541 [Nordic Light] - - vendor.id pci 0x1013 -&device.id pci 0x4400 -+device.name CD 4400 - - vendor.id pci 0x1013 -&device.id pci 0x6001 -+device.name CS 4610/11 [CrystalClear SoundFusion Audio Accelerator] - - vendor.id pci 0x1013 -&device.id pci 0x6001 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x1010 -+subdevice.name CS4610 SoundFusion Audio Accelerator - - vendor.id pci 0x1013 -&device.id pci 0x6003 -+device.name CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] - - vendor.id pci 0x1013 -&device.id pci 0x6003 -&subvendor.id pci 0x1013 -&subdevice.id pci 0x4280 -+subdevice.name Crystal SoundFusion PCI Audio Accelerator - - vendor.id pci 0x1013 -&device.id pci 0x6003 -&subvendor.id pci 0x1681 -&subdevice.id pci 0x0050 -+subdevice.name Game Theater XP - - vendor.id pci 0x1013 -&device.id pci 0x6003 -&subvendor.id pci 0x1681 -&subdevice.id pci 0xa011 -+subdevice.name Fortissimo III 7.1 - - vendor.id pci 0x1013 -&device.id pci 0x6004 -+device.name CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] - - vendor.id pci 0x1013 -&device.id pci 0x6005 -+device.name Crystal CS4281 PCI Audio - - vendor.id pci 0x1013 -&device.id pci 0x6005 -&subvendor.id pci 0x1013 -&subdevice.id pci 0x4281 -+subdevice.name Crystal CS4281 PCI Audio - - vendor.id pci 0x1013 -&device.id pci 0x6005 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x10a8 -+subdevice.name Crystal CS4281 PCI Audio - - vendor.id pci 0x1013 -&device.id pci 0x6005 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x10a9 -+subdevice.name Crystal CS4281 PCI Audio - - vendor.id pci 0x1013 -&device.id pci 0x6005 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x10aa -+subdevice.name Crystal CS4281 PCI Audio - - vendor.id pci 0x1013 -&device.id pci 0x6005 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x10ab -+subdevice.name Crystal CS4281 PCI Audio - - vendor.id pci 0x1013 -&device.id pci 0x6005 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x10ac -+subdevice.name Crystal CS4281 PCI Audio - - vendor.id pci 0x1013 -&device.id pci 0x6005 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x10ad -+subdevice.name Crystal CS4281 PCI Audio - - vendor.id pci 0x1013 -&device.id pci 0x6005 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x10b4 -+subdevice.name Crystal CS4281 PCI Audio - - vendor.id pci 0x1013 -&device.id pci 0x6005 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Crystal CS4281 PCI Audio - - vendor.id pci 0x1013 -&device.id pci 0x6005 -&subvendor.id pci 0x14c0 -&subdevice.id pci 0x000c -+subdevice.name Crystal CS4281 PCI Audio - - vendor.id pci 0x1014 -+vendor.name IBM - - vendor.id pci 0x1014 -&device.id pci 0x0002 -+device.name PCI to MCA Bridge - - vendor.id pci 0x1014 -&device.id pci 0x0005 -+device.name Alta Lite - - vendor.id pci 0x1014 -&device.id pci 0x0007 -+device.name Alta MP - - vendor.id pci 0x1014 -&device.id pci 0x000a -+device.name Fire Coral - - vendor.id pci 0x1014 -&device.id pci 0x0017 -+device.name CPU to PCI Bridge - - vendor.id pci 0x1014 -&device.id pci 0x0018 -+device.name TR Auto LANstreamer - - vendor.id pci 0x1014 -&device.id pci 0x001b -+device.name GXT-150P - - vendor.id pci 0x1014 -&device.id pci 0x001c -+device.name Carrera - - vendor.id pci 0x1014 -&device.id pci 0x001d -+device.name 82G2675 - - vendor.id pci 0x1014 -&device.id pci 0x0020 -+device.name GXT1000 Graphics Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0022 -+device.name IBM27-82351 - - vendor.id pci 0x1014 -&device.id pci 0x002d -+device.name Python - - vendor.id pci 0x1014 -&device.id pci 0x002e -+device.name SCSI RAID Adapter [ServeRAID] - - vendor.id pci 0x1014 -&device.id pci 0x002e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x002e -+subdevice.name ServeRAID-3x - - vendor.id pci 0x1014 -&device.id pci 0x002e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x022e -+subdevice.name ServeRAID-4H - - vendor.id pci 0x1014 -&device.id pci 0x0031 -+device.name 2 Port Serial Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0031 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0031 -+subdevice.name 2721 WAN IOA - 2 Port Sync Serial Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0036 -+device.name Miami - - vendor.id pci 0x1014 -&device.id pci 0x0037 -+device.name 82660 CPU to PCI Bridge - - vendor.id pci 0x1014 -&device.id pci 0x003a -+device.name CPU to PCI Bridge - - vendor.id pci 0x1014 -&device.id pci 0x003c -+device.name GXT250P/GXT255P Graphics Adapter - - vendor.id pci 0x1014 -&device.id pci 0x003e -+device.name 16/4 Token ring UTP/STP controller - - vendor.id pci 0x1014 -&device.id pci 0x003e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x003e -+subdevice.name Token-Ring Adapter - - vendor.id pci 0x1014 -&device.id pci 0x003e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x00cd -+subdevice.name Token-Ring Adapter + Wake-On-LAN - - vendor.id pci 0x1014 -&device.id pci 0x003e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x00ce -+subdevice.name 16/4 Token-Ring Adapter 2 - - vendor.id pci 0x1014 -&device.id pci 0x003e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x00cf -+subdevice.name 16/4 Token-Ring Adapter Special - - vendor.id pci 0x1014 -&device.id pci 0x003e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x00e4 -+subdevice.name High-Speed 100/16/4 Token-Ring Adapter - - vendor.id pci 0x1014 -&device.id pci 0x003e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x00e5 -+subdevice.name 16/4 Token-Ring Adapter 2 + Wake-On-LAN - - vendor.id pci 0x1014 -&device.id pci 0x003e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x016d -+subdevice.name iSeries 2744 Card - - vendor.id pci 0x1014 -&device.id pci 0x0045 -+device.name SSA Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0046 -+device.name MPIC interrupt controller - - vendor.id pci 0x1014 -&device.id pci 0x0047 -+device.name PCI to PCI Bridge - - vendor.id pci 0x1014 -&device.id pci 0x0048 -+device.name PCI to PCI Bridge - - vendor.id pci 0x1014 -&device.id pci 0x0049 -+device.name Warhead SCSI Controller - - vendor.id pci 0x1014 -&device.id pci 0x004e -+device.name ATM Controller (14104e00) - - vendor.id pci 0x1014 -&device.id pci 0x004f -+device.name ATM Controller (14104f00) - - vendor.id pci 0x1014 -&device.id pci 0x0050 -+device.name ATM Controller (14105000) - - vendor.id pci 0x1014 -&device.id pci 0x0053 -+device.name 25 MBit ATM Controller - - vendor.id pci 0x1014 -&device.id pci 0x0054 -+device.name GXT500P/GXT550P Graphics Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0057 -+device.name MPEG PCI Bridge - - vendor.id pci 0x1014 -&device.id pci 0x005c -+device.name i82557B 10/100 - - vendor.id pci 0x1014 -&device.id pci 0x005e -+device.name GXT800P Graphics Adapter - - vendor.id pci 0x1014 -&device.id pci 0x007c -+device.name ATM Controller (14107c00) - - vendor.id pci 0x1014 -&device.id pci 0x007d -+device.name 3780IDSP [MWave] - - vendor.id pci 0x1014 -&device.id pci 0x008b -+device.name EADS PCI to PCI Bridge - - vendor.id pci 0x1014 -&device.id pci 0x008e -+device.name GXT3000P Graphics Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0090 -+device.name GXT 3000P - - vendor.id pci 0x1014 -&device.id pci 0x0090 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x008e -+subdevice.name GXT-3000P - - vendor.id pci 0x1014 -&device.id pci 0x0091 -+device.name SSA Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0095 -+device.name 20H2999 PCI Docking Bridge - - vendor.id pci 0x1014 -&device.id pci 0x0096 -+device.name Chukar chipset SCSI controller - - vendor.id pci 0x1014 -&device.id pci 0x0096 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0097 -+subdevice.name iSeries 2778 DASD IOA - - vendor.id pci 0x1014 -&device.id pci 0x0096 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0098 -+subdevice.name iSeries 2763 DASD IOA - - vendor.id pci 0x1014 -&device.id pci 0x0096 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0099 -+subdevice.name iSeries 2748 DASD IOA - - vendor.id pci 0x1014 -&device.id pci 0x009f -+device.name PCI 4758 Cryptographic Accelerator - - vendor.id pci 0x1014 -&device.id pci 0x00a5 -+device.name ATM Controller (1410a500) - - vendor.id pci 0x1014 -&device.id pci 0x00a6 -+device.name ATM 155MBPS MM Controller (1410a600) - - vendor.id pci 0x1014 -&device.id pci 0x00b7 -+device.name 256-bit Graphics Rasterizer [Fire GL1] - - vendor.id pci 0x1014 -&device.id pci 0x00b7 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x00b8 -+subdevice.name FireGL1 AGP 32Mb - - vendor.id pci 0x1014 -&device.id pci 0x00b8 -+device.name GXT2000P Graphics Adapter - - vendor.id pci 0x1014 -&device.id pci 0x00be -+device.name ATM 622MBPS Controller (1410be00) - - vendor.id pci 0x1014 -&device.id pci 0x00dc -+device.name Advanced Systems Management Adapter (ASMA) - - vendor.id pci 0x1014 -&device.id pci 0x00fc -+device.name CPC710 Dual Bridge and Memory Controller (PCI-64) - - vendor.id pci 0x1014 -&device.id pci 0x0104 -+device.name Gigabit Ethernet-SX Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0105 -+device.name CPC710 Dual Bridge and Memory Controller (PCI-32) - - vendor.id pci 0x1014 -&device.id pci 0x010f -+device.name Remote Supervisor Adapter (RSA) - - vendor.id pci 0x1014 -&device.id pci 0x0142 -+device.name Yotta Video Compositor Input - - vendor.id pci 0x1014 -&device.id pci 0x0142 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0143 -+subdevice.name Yotta Input Controller (ytin) - - vendor.id pci 0x1014 -&device.id pci 0x0144 -+device.name Yotta Video Compositor Output - - vendor.id pci 0x1014 -&device.id pci 0x0144 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0145 -+subdevice.name Yotta Output Controller (ytout) - - vendor.id pci 0x1014 -&device.id pci 0x0156 -+device.name 405GP PLB to PCI Bridge - - vendor.id pci 0x1014 -&device.id pci 0x015e -+device.name 622Mbps ATM PCI Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0160 -+device.name 64bit/66MHz PCI ATM 155 MMF - - vendor.id pci 0x1014 -&device.id pci 0x016e -+device.name GXT4000P Graphics Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0170 -+device.name GXT6000P Graphics Adapter - - vendor.id pci 0x1014 -&device.id pci 0x017d -+device.name GXT300P Graphics Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0180 -+device.name Snipe chipset SCSI controller - - vendor.id pci 0x1014 -&device.id pci 0x0180 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0241 -+subdevice.name iSeries 2757 DASD IOA - - vendor.id pci 0x1014 -&device.id pci 0x0180 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0264 -+subdevice.name Quad Channel PCI-X U320 SCSI RAID Adapter (2780) - - vendor.id pci 0x1014 -&device.id pci 0x0188 -+device.name EADS-X PCI-X to PCI-X Bridge - - vendor.id pci 0x1014 -&device.id pci 0x01a7 -+device.name PCI-X to PCI-X Bridge - - vendor.id pci 0x1014 -&device.id pci 0x01bd -+device.name ServeRAID Controller - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01be -+subdevice.name ServeRAID-4M - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01bf -+subdevice.name ServeRAID-4L - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0208 -+subdevice.name ServeRAID-4Mx - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x020e -+subdevice.name ServeRAID-4Lx - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x022e -+subdevice.name ServeRAID-4H - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0258 -+subdevice.name ServeRAID-5i - - vendor.id pci 0x1014 -&device.id pci 0x01bd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0259 -+subdevice.name ServeRAID-5i - - vendor.id pci 0x1014 -&device.id pci 0x01c1 -+device.name 64bit/66MHz PCI ATM 155 UTP - - vendor.id pci 0x1014 -&device.id pci 0x01e6 -+device.name Cryptographic Accelerator - - vendor.id pci 0x1014 -&device.id pci 0x01ff -+device.name 10/100 Mbps Ethernet - - vendor.id pci 0x1014 -&device.id pci 0x0219 -+device.name Multiport Serial Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0219 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x021a -+subdevice.name Dual RVX - - vendor.id pci 0x1014 -&device.id pci 0x0219 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0251 -+subdevice.name Internal Modem/RVX - - vendor.id pci 0x1014 -&device.id pci 0x0219 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0252 -+subdevice.name Quad Internal Modem - - vendor.id pci 0x1014 -&device.id pci 0x021b -+device.name GXT6500P Graphics Adapter - - vendor.id pci 0x1014 -&device.id pci 0x021c -+device.name GXT4500P Graphics Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0233 -+device.name GXT135P Graphics Adapter - - vendor.id pci 0x1014 -&device.id pci 0x0266 -+device.name PCI-X Dual Channel SCSI - - vendor.id pci 0x1014 -&device.id pci 0x0268 -+device.name Gigabit Ethernet-SX Adapter (PCI-X) - - vendor.id pci 0x1014 -&device.id pci 0x0269 -+device.name 10/100/1000 Base-TX Ethernet Adapter (PCI-X) - - vendor.id pci 0x1014 -&device.id pci 0x0302 -+device.name Winnipeg PCI-X Host Bridge - - vendor.id pci 0x1014 -&device.id pci 0x0314 -+device.name ZISC 036 Neural accelerator card - - vendor.id pci 0x1014 -&device.id pci 0xffff -+device.name MPIC-2 interrupt controller - - vendor.id pci 0x1015 -+vendor.name LSI Logic Corp of Canada - - vendor.id pci 0x1016 -+vendor.name ICL Personal Systems - - vendor.id pci 0x1017 -+vendor.name SPEA Software AG - - vendor.id pci 0x1017 -&device.id pci 0x5343 -+device.name SPEA 3D Accelerator - - vendor.id pci 0x1018 -+vendor.name Unisys Systems - - vendor.id pci 0x1019 -+vendor.name Elitegroup Computer Systems - - vendor.id pci 0x101a -+vendor.name AT&T GIS (NCR) - - vendor.id pci 0x101a -&device.id pci 0x0005 -+device.name 100VG ethernet - - vendor.id pci 0x101b -+vendor.name Vitesse Semiconductor - - vendor.id pci 0x101c -+vendor.name Western Digital - - vendor.id pci 0x101c -&device.id pci 0x0193 -+device.name 33C193A - - vendor.id pci 0x101c -&device.id pci 0x0196 -+device.name 33C196A - - vendor.id pci 0x101c -&device.id pci 0x0197 -+device.name 33C197A - - vendor.id pci 0x101c -&device.id pci 0x0296 -+device.name 33C296A - - vendor.id pci 0x101c -&device.id pci 0x3193 -+device.name 7193 - - vendor.id pci 0x101c -&device.id pci 0x3197 -+device.name 7197 - - vendor.id pci 0x101c -&device.id pci 0x3296 -+device.name 33C296A - - vendor.id pci 0x101c -&device.id pci 0x4296 -+device.name 34C296 - - vendor.id pci 0x101c -&device.id pci 0x9710 -+device.name Pipeline 9710 - - vendor.id pci 0x101c -&device.id pci 0x9712 -+device.name Pipeline 9712 - - vendor.id pci 0x101c -&device.id pci 0xc24a -+device.name 90C - - vendor.id pci 0x101e -+vendor.name American Megatrends Inc. - - vendor.id pci 0x101e -&device.id pci 0x1960 -+device.name MegaRAID - - vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0471 -+subdevice.name MegaRAID 471 Enterprise 1600 RAID Controller - - vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0475 -+subdevice.name MegaRAID 475 Express 500/500LC RAID Controller - - vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0477 -+subdevice.name MegaRAID 477 Elite 3100 RAID Controller - - vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0493 -+subdevice.name MegaRAID 493 Elite 1600 RAID Controller - - vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0494 -+subdevice.name MegaRAID 494 Elite 1650 RAID Controller - - vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0503 -+subdevice.name MegaRAID 503 Enterprise 1650 RAID Controller - - vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0511 -+subdevice.name MegaRAID 511 i4 IDE RAID Controller - - vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0522 -+subdevice.name MegaRAID 522 i4133 RAID Controller - - vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0471 -+subdevice.name PowerEdge RAID Controller 3/QC - - vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0475 -+subdevice.name PowerEdge RAID Controller 3/SC - - vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0493 -+subdevice.name PowerEdge RAID Controller 3/DC - - vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0511 -+subdevice.name PowerEdge Cost Effective RAID Controller ATA100/4Ch - - vendor.id pci 0x101e -&device.id pci 0x9010 -+device.name MegaRAID 428 Ultra RAID Controller - - vendor.id pci 0x101e -&device.id pci 0x9030 -+device.name EIDE Controller - - vendor.id pci 0x101e -&device.id pci 0x9031 -+device.name EIDE Controller - - vendor.id pci 0x101e -&device.id pci 0x9032 -+device.name EIDE & SCSI Controller - - vendor.id pci 0x101e -&device.id pci 0x9033 -+device.name SCSI Controller - - vendor.id pci 0x101e -&device.id pci 0x9040 -+device.name Multimedia card - - vendor.id pci 0x101e -&device.id pci 0x9060 -+device.name MegaRAID 434 Ultra GT RAID Controller - - vendor.id pci 0x101e -&device.id pci 0x9063 -+device.name MegaRAC - - vendor.id pci 0x101e -&device.id pci 0x9063 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0767 -+subdevice.name Dell Remote Assistant Card 2 - - vendor.id pci 0x101f -+vendor.name PictureTel - - vendor.id pci 0x1020 -+vendor.name Hitachi Computer Products - - vendor.id pci 0x1021 -+vendor.name OKI Electric Industry Co. Ltd. - - vendor.id pci 0x1022 -+vendor.name Advanced Micro Devices [AMD] - - vendor.id pci 0x1022 -&device.id pci 0x1100 -+device.name K8 [Athlon64/Opteron] HyperTransport Technology Configuration - - vendor.id pci 0x1022 -&device.id pci 0x1101 -+device.name K8 [Athlon64/Opteron] Address Map - - vendor.id pci 0x1022 -&device.id pci 0x1102 -+device.name K8 [Athlon64/Opteron] DRAM Controller - - vendor.id pci 0x1022 -&device.id pci 0x1103 -+device.name K8 [Athlon64/Opteron] Miscellaneous Control - - vendor.id pci 0x1022 -&device.id pci 0x2000 -+device.name 79c970 [PCnet32 LANCE] - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x2000 -+subdevice.name NetFinity 10/100 Fast Ethernet - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x1022 -&subdevice.id pci 0x2000 -+subdevice.name PCnet - Fast 79C971 - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x103c -&subdevice.id pci 0x104c -+subdevice.name Ethernet with LAN remote power Adapter - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1064 -+subdevice.name Ethernet with LAN remote power Adapter - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1065 -+subdevice.name Ethernet with LAN remote power Adapter - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x103c -&subdevice.id pci 0x106c -+subdevice.name Ethernet with LAN remote power Adapter - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x103c -&subdevice.id pci 0x106e -+subdevice.name Ethernet with LAN remote power Adapter - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10ea -+subdevice.name Ethernet with LAN remote power Adapter - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x1113 -&subdevice.id pci 0x1220 -+subdevice.name EN1220 10/100 Fast Ethernet - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2450 -+subdevice.name AT-2450 10/100 Fast Ethernet - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2454 -+subdevice.name AT-2450v4 10Mb Ethernet Adapter - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2700 -+subdevice.name AT-2700TX 10/100 Fast Ethernet - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2701 -+subdevice.name AT-2700FX 100Mb Ethernet - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1000 -+subdevice.name CC7/CR7/CP7/VC7/VP7/VR7 mainboard - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1010 -+subdevice.name CP5/CR6 mainboard - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1020 -+subdevice.name VR6 mainboard - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1030 -+subdevice.name PC5 mainboard - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1040 -+subdevice.name CL7 mainboard - - vendor.id pci 0x1022 -&device.id pci 0x2000 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1060 -+subdevice.name PC7 mainboard - - vendor.id pci 0x1022 -&device.id pci 0x2001 -+device.name 79c978 [HomePNA] - - vendor.id pci 0x1022 -&device.id pci 0x2001 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0a78 -+subdevice.name Multimedia Home Network Adapter - - vendor.id pci 0x1022 -&device.id pci 0x2001 -&subvendor.id pci 0x1668 -&subdevice.id pci 0x0299 -+subdevice.name ActionLink Home Network Adapter - - vendor.id pci 0x1022 -&device.id pci 0x2003 -+device.name Am 1771 MBW [Alchemy] - - vendor.id pci 0x1022 -&device.id pci 0x2020 -+device.name 53c974 [PCscsi] - - vendor.id pci 0x1022 -&device.id pci 0x2040 -+device.name 79c974 - - vendor.id pci 0x1022 -&device.id pci 0x3000 -+device.name ELanSC520 Microcontroller - - vendor.id pci 0x1022 -&device.id pci 0x7006 -+device.name AMD-751 [Irongate] System Controller - - vendor.id pci 0x1022 -&device.id pci 0x7007 -+device.name AMD-751 [Irongate] AGP Bridge - - vendor.id pci 0x1022 -&device.id pci 0x700a -+device.name AMD-IGR4 AGP Host to PCI Bridge - - vendor.id pci 0x1022 -&device.id pci 0x700b -+device.name AMD-IGR4 PCI to PCI Bridge - - vendor.id pci 0x1022 -&device.id pci 0x700c -+device.name AMD-760 MP [IGD4-2P] System Controller - - vendor.id pci 0x1022 -&device.id pci 0x700d -+device.name AMD-760 MP [IGD4-2P] AGP Bridge - - vendor.id pci 0x1022 -&device.id pci 0x700e -+device.name AMD-760 [IGD4-1P] System Controller - - vendor.id pci 0x1022 -&device.id pci 0x700f -+device.name AMD-760 [IGD4-1P] AGP Bridge - - vendor.id pci 0x1022 -&device.id pci 0x7400 -+device.name AMD-755 [Cobra] ISA - - vendor.id pci 0x1022 -&device.id pci 0x7401 -+device.name AMD-755 [Cobra] IDE - - vendor.id pci 0x1022 -&device.id pci 0x7403 -+device.name AMD-755 [Cobra] ACPI - - vendor.id pci 0x1022 -&device.id pci 0x7404 -+device.name AMD-755 [Cobra] USB - - vendor.id pci 0x1022 -&device.id pci 0x7408 -+device.name AMD-756 [Viper] ISA - - vendor.id pci 0x1022 -&device.id pci 0x7409 -+device.name AMD-756 [Viper] IDE - - vendor.id pci 0x1022 -&device.id pci 0x740b -+device.name AMD-756 [Viper] ACPI - - vendor.id pci 0x1022 -&device.id pci 0x740c -+device.name AMD-756 [Viper] USB - - vendor.id pci 0x1022 -&device.id pci 0x7410 -+device.name AMD-766 [ViperPlus] ISA - - vendor.id pci 0x1022 -&device.id pci 0x7411 -+device.name AMD-766 [ViperPlus] IDE - - vendor.id pci 0x1022 -&device.id pci 0x7413 -+device.name AMD-766 [ViperPlus] ACPI - - vendor.id pci 0x1022 -&device.id pci 0x7414 -+device.name AMD-766 [ViperPlus] USB - - vendor.id pci 0x1022 -&device.id pci 0x7440 -+device.name AMD-768 [Opus] ISA - - vendor.id pci 0x1022 -&device.id pci 0x7440 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8044 -+subdevice.name A7M-D Mainboard - - vendor.id pci 0x1022 -&device.id pci 0x7441 -+device.name AMD-768 [Opus] IDE - - vendor.id pci 0x1022 -&device.id pci 0x7443 -+device.name AMD-768 [Opus] ACPI - - vendor.id pci 0x1022 -&device.id pci 0x7443 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8044 -+subdevice.name A7M-D Mainboard - - vendor.id pci 0x1022 -&device.id pci 0x7445 -+device.name AMD-768 [Opus] Audio - - vendor.id pci 0x1022 -&device.id pci 0x7446 -+device.name AMD-768 [Opus] MC97 Modem (Smart Link HAMR5600 compatible) - - vendor.id pci 0x1022 -&device.id pci 0x7448 -+device.name AMD-768 [Opus] PCI - - vendor.id pci 0x1022 -&device.id pci 0x7449 -+device.name AMD-768 [Opus] USB - - vendor.id pci 0x1022 -&device.id pci 0x7450 -+device.name AMD-8131 PCI-X Bridge - - vendor.id pci 0x1022 -&device.id pci 0x7451 -+device.name AMD-8131 PCI-X APIC - - vendor.id pci 0x1022 -&device.id pci 0x7454 -+device.name AMD-8151 System Controller - - vendor.id pci 0x1022 -&device.id pci 0x7455 -+device.name AMD-8151 AGP Bridge - - vendor.id pci 0x1022 -&device.id pci 0x7460 -+device.name AMD-8111 PCI - - vendor.id pci 0x1022 -&device.id pci 0x7460 -&subvendor.id pci 0x161f -&subdevice.id pci 0x3017 -+subdevice.name HDAMB - - vendor.id pci 0x1022 -&device.id pci 0x7461 -+device.name AMD-8111 USB - - vendor.id pci 0x1022 -&device.id pci 0x7462 -+device.name AMD-8111 Ethernet - - vendor.id pci 0x1022 -&device.id pci 0x7464 -+device.name AMD-8111 USB - - vendor.id pci 0x1022 -&device.id pci 0x7464 -&subvendor.id pci 0x161f -&subdevice.id pci 0x3017 -+subdevice.name HDAMB - - vendor.id pci 0x1022 -&device.id pci 0x7468 -+device.name AMD-8111 LPC - - vendor.id pci 0x1022 -&device.id pci 0x7468 -&subvendor.id pci 0x161f -&subdevice.id pci 0x3017 -+subdevice.name HDAMB - - vendor.id pci 0x1022 -&device.id pci 0x7469 -+device.name AMD-8111 IDE - - vendor.id pci 0x1022 -&device.id pci 0x7469 -&subvendor.id pci 0x161f -&subdevice.id pci 0x3017 -+subdevice.name HDAMB - - vendor.id pci 0x1022 -&device.id pci 0x746a -+device.name AMD-8111 SMBus 2.0 - - vendor.id pci 0x1022 -&device.id pci 0x746b -+device.name AMD-8111 ACPI - - vendor.id pci 0x1022 -&device.id pci 0x746b -&subvendor.id pci 0x161f -&subdevice.id pci 0x3017 -+subdevice.name HDAMB - - vendor.id pci 0x1022 -&device.id pci 0x746d -+device.name AMD-8111 AC97 Audio - - vendor.id pci 0x1022 -&device.id pci 0x746d -&subvendor.id pci 0x161f -&subdevice.id pci 0x3017 -+subdevice.name HDAMB - - vendor.id pci 0x1022 -&device.id pci 0x746e -+device.name AMD-8111 MC97 Modem - - vendor.id pci 0x1022 -&device.id pci 0x756b -+device.name AMD-8111 ACPI - - vendor.id pci 0x1023 -+vendor.name Trident Microsystems - - vendor.id pci 0x1023 -&device.id pci 0x0194 -+device.name 82C194 - - vendor.id pci 0x1023 -&device.id pci 0x2000 -+device.name 4DWave DX - - vendor.id pci 0x1023 -&device.id pci 0x2001 -+device.name 4DWave NX - - vendor.id pci 0x1023 -&device.id pci 0x2001 -&subvendor.id pci 0x122d -&subdevice.id pci 0x1400 -+subdevice.name Trident PCI288-Q3DII (NX) - - vendor.id pci 0x1023 -&device.id pci 0x2100 -+device.name CyberBlade XP4m32 - - vendor.id pci 0x1023 -&device.id pci 0x8400 -+device.name CyberBlade/i7 - - vendor.id pci 0x1023 -&device.id pci 0x8400 -&subvendor.id pci 0x1023 -&subdevice.id pci 0x8400 -+subdevice.name CyberBlade i7 AGP - - vendor.id pci 0x1023 -&device.id pci 0x8420 -+device.name CyberBlade/i7d - - vendor.id pci 0x1023 -&device.id pci 0x8420 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb15a -+subdevice.name CyberBlade i7 AGP - - vendor.id pci 0x1023 -&device.id pci 0x8500 -+device.name CyberBlade/i1 - - vendor.id pci 0x1023 -&device.id pci 0x8520 -+device.name CyberBlade i1 - - vendor.id pci 0x1023 -&device.id pci 0x8520 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb16e -+subdevice.name CyberBlade i1 AGP - - vendor.id pci 0x1023 -&device.id pci 0x8520 -&subvendor.id pci 0x1023 -&subdevice.id pci 0x8520 -+subdevice.name CyberBlade i1 AGP - - vendor.id pci 0x1023 -&device.id pci 0x8620 -+device.name CyberBlade/i1 - - vendor.id pci 0x1023 -&device.id pci 0x8620 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0502 -+subdevice.name ThinkPad R30/T30 - - vendor.id pci 0x1023 -&device.id pci 0x8820 -+device.name CyberBlade XPAi1 - - vendor.id pci 0x1023 -&device.id pci 0x9320 -+device.name TGUI 9320 - - vendor.id pci 0x1023 -&device.id pci 0x9350 -+device.name GUI Accelerator - - vendor.id pci 0x1023 -&device.id pci 0x9360 -+device.name Flat panel GUI Accelerator - - vendor.id pci 0x1023 -&device.id pci 0x9382 -+device.name Cyber 9382 [Reference design] - - vendor.id pci 0x1023 -&device.id pci 0x9383 -+device.name Cyber 9383 [Reference design] - - vendor.id pci 0x1023 -&device.id pci 0x9385 -+device.name Cyber 9385 [Reference design] - - vendor.id pci 0x1023 -&device.id pci 0x9386 -+device.name Cyber 9386 - - vendor.id pci 0x1023 -&device.id pci 0x9388 -+device.name Cyber 9388 - - vendor.id pci 0x1023 -&device.id pci 0x9397 -+device.name Cyber 9397 - - vendor.id pci 0x1023 -&device.id pci 0x939a -+device.name Cyber 9397DVD - - vendor.id pci 0x1023 -&device.id pci 0x9420 -+device.name TGUI 9420 - - vendor.id pci 0x1023 -&device.id pci 0x9430 -+device.name TGUI 9430 - - vendor.id pci 0x1023 -&device.id pci 0x9440 -+device.name TGUI 9440 - - vendor.id pci 0x1023 -&device.id pci 0x9460 -+device.name TGUI 9460 - - vendor.id pci 0x1023 -&device.id pci 0x9470 -+device.name TGUI 9470 - - vendor.id pci 0x1023 -&device.id pci 0x9520 -+device.name Cyber 9520 - - vendor.id pci 0x1023 -&device.id pci 0x9525 -+device.name Cyber 9525 - - vendor.id pci 0x1023 -&device.id pci 0x9525 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1094 -+subdevice.name Lifebook C6155 - - vendor.id pci 0x1023 -&device.id pci 0x9540 -+device.name Cyber 9540 - - vendor.id pci 0x1023 -&device.id pci 0x9660 -+device.name TGUI 9660/938x/968x - - vendor.id pci 0x1023 -&device.id pci 0x9680 -+device.name TGUI 9680 - - vendor.id pci 0x1023 -&device.id pci 0x9682 -+device.name TGUI 9682 - - vendor.id pci 0x1023 -&device.id pci 0x9683 -+device.name TGUI 9683 - - vendor.id pci 0x1023 -&device.id pci 0x9685 -+device.name ProVIDIA 9685 - - vendor.id pci 0x1023 -&device.id pci 0x9750 -+device.name 3DImage 9750 - - vendor.id pci 0x1023 -&device.id pci 0x9750 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x9750 -+subdevice.name 3DImage 9750 - - vendor.id pci 0x1023 -&device.id pci 0x9750 -&subvendor.id pci 0x1023 -&subdevice.id pci 0x9750 -+subdevice.name 3DImage 9750 - - vendor.id pci 0x1023 -&device.id pci 0x9753 -+device.name TGUI 9753 - - vendor.id pci 0x1023 -&device.id pci 0x9754 -+device.name TGUI 9754 - - vendor.id pci 0x1023 -&device.id pci 0x9759 -+device.name TGUI 975 - - vendor.id pci 0x1023 -&device.id pci 0x9783 -+device.name TGUI 9783 - - vendor.id pci 0x1023 -&device.id pci 0x9785 -+device.name TGUI 9785 - - vendor.id pci 0x1023 -&device.id pci 0x9850 -+device.name 3DImage 9850 - - vendor.id pci 0x1023 -&device.id pci 0x9880 -+device.name Blade 3D PCI/AGP - - vendor.id pci 0x1023 -&device.id pci 0x9880 -&subvendor.id pci 0x1023 -&subdevice.id pci 0x9880 -+subdevice.name Blade 3D - - vendor.id pci 0x1023 -&device.id pci 0x9910 -+device.name CyberBlade/XP - - vendor.id pci 0x1023 -&device.id pci 0x9930 -+device.name CyberBlade/XPm - - vendor.id pci 0x1024 -+vendor.name Zenith Data Systems - - vendor.id pci 0x1025 -+vendor.name Acer Incorporated [ALI] - - vendor.id pci 0x1025 -&device.id pci 0x1435 -+device.name M1435 - - vendor.id pci 0x1025 -&device.id pci 0x1445 -+device.name M1445 - - vendor.id pci 0x1025 -&device.id pci 0x1449 -+device.name M1449 - - vendor.id pci 0x1025 -&device.id pci 0x1451 -+device.name M1451 - - vendor.id pci 0x1025 -&device.id pci 0x1461 -+device.name M1461 - - vendor.id pci 0x1025 -&device.id pci 0x1489 -+device.name M1489 - - vendor.id pci 0x1025 -&device.id pci 0x1511 -+device.name M1511 - - vendor.id pci 0x1025 -&device.id pci 0x1512 -+device.name ALI M1512 Aladdin - - vendor.id pci 0x1025 -&device.id pci 0x1513 -+device.name M1513 - - vendor.id pci 0x1025 -&device.id pci 0x1521 -+device.name ALI M1521 Aladdin III CPU Bridge - - vendor.id pci 0x1025 -&device.id pci 0x1521 -&subvendor.id pci 0x10b9 -&subdevice.id pci 0x1521 -+subdevice.name ALI M1521 Aladdin III CPU Bridge - - vendor.id pci 0x1025 -&device.id pci 0x1523 -+device.name ALI M1523 ISA Bridge - - vendor.id pci 0x1025 -&device.id pci 0x1523 -&subvendor.id pci 0x10b9 -&subdevice.id pci 0x1523 -+subdevice.name ALI M1523 ISA Bridge - - vendor.id pci 0x1025 -&device.id pci 0x1531 -+device.name M1531 Northbridge [Aladdin IV/IV+] - - vendor.id pci 0x1025 -&device.id pci 0x1533 -+device.name M1533 PCI-to-ISA Bridge - - vendor.id pci 0x1025 -&device.id pci 0x1533 -&subvendor.id pci 0x10b9 -&subdevice.id pci 0x1533 -+subdevice.name ALI M1533 Aladdin IV/V ISA South Bridge - - vendor.id pci 0x1025 -&device.id pci 0x1535 -+device.name M1535 PCI Bridge + Super I/O + FIR - - vendor.id pci 0x1025 -&device.id pci 0x1541 -+device.name M1541 Northbridge [Aladdin V] - - vendor.id pci 0x1025 -&device.id pci 0x1541 -&subvendor.id pci 0x10b9 -&subdevice.id pci 0x1541 -+subdevice.name ALI M1541 Aladdin V/V+ AGP+PCI North Bridge - - vendor.id pci 0x1025 -&device.id pci 0x1542 -+device.name M1542 Northbridge [Aladdin V] - - vendor.id pci 0x1025 -&device.id pci 0x1543 -+device.name M1543 PCI-to-ISA Bridge + Super I/O + FIR - - vendor.id pci 0x1025 -&device.id pci 0x1561 -+device.name M1561 Northbridge [Aladdin 7] - - vendor.id pci 0x1025 -&device.id pci 0x1621 -+device.name M1621 Northbridge [Aladdin-Pro II] - - vendor.id pci 0x1025 -&device.id pci 0x1631 -+device.name M1631 Northbridge+3D Graphics [Aladdin TNT2] - - vendor.id pci 0x1025 -&device.id pci 0x1641 -+device.name M1641 Northbridge [Aladdin-Pro IV] - - vendor.id pci 0x1025 -&device.id pci 0x1647 -+device.name M1647 [MaGiK1] PCI North Bridge - - vendor.id pci 0x1025 -&device.id pci 0x1671 -+device.name M1671 Northbridge [ALADDiN-P4] - - vendor.id pci 0x1025 -&device.id pci 0x1672 -+device.name Northbridge [CyberALADDiN-P4] - - vendor.id pci 0x1025 -&device.id pci 0x3141 -+device.name M3141 - - vendor.id pci 0x1025 -&device.id pci 0x3143 -+device.name M3143 - - vendor.id pci 0x1025 -&device.id pci 0x3145 -+device.name M3145 - - vendor.id pci 0x1025 -&device.id pci 0x3147 -+device.name M3147 - - vendor.id pci 0x1025 -&device.id pci 0x3149 -+device.name M3149 - - vendor.id pci 0x1025 -&device.id pci 0x3151 -+device.name M3151 - - vendor.id pci 0x1025 -&device.id pci 0x3307 -+device.name M3307 MPEG-I Video Controller - - vendor.id pci 0x1025 -&device.id pci 0x3309 -+device.name M3309 MPEG-II Video w/ Software Audio Decoder - - vendor.id pci 0x1025 -&device.id pci 0x3321 -+device.name M3321 MPEG-II Audio/Video Decoder - - vendor.id pci 0x1025 -&device.id pci 0x5212 -+device.name M4803 - - vendor.id pci 0x1025 -&device.id pci 0x5215 -+device.name ALI PCI EIDE Controller - - vendor.id pci 0x1025 -&device.id pci 0x5217 -+device.name M5217H - - vendor.id pci 0x1025 -&device.id pci 0x5219 -+device.name M5219 - - vendor.id pci 0x1025 -&device.id pci 0x5225 -+device.name M5225 - - vendor.id pci 0x1025 -&device.id pci 0x5229 -+device.name M5229 - - vendor.id pci 0x1025 -&device.id pci 0x5235 -+device.name M5235 - - vendor.id pci 0x1025 -&device.id pci 0x5237 -+device.name M5237 PCI USB Host Controller - - vendor.id pci 0x1025 -&device.id pci 0x5240 -+device.name EIDE Controller - - vendor.id pci 0x1025 -&device.id pci 0x5241 -+device.name PCMCIA Bridge - - vendor.id pci 0x1025 -&device.id pci 0x5242 -+device.name General Purpose Controller - - vendor.id pci 0x1025 -&device.id pci 0x5243 -+device.name PCI to PCI Bridge Controller - - vendor.id pci 0x1025 -&device.id pci 0x5244 -+device.name Floppy Disk Controller - - vendor.id pci 0x1025 -&device.id pci 0x5247 -+device.name M1541 PCI to PCI Bridge - - vendor.id pci 0x1025 -&device.id pci 0x5251 -+device.name M5251 P1394 Controller - - vendor.id pci 0x1025 -&device.id pci 0x5427 -+device.name PCI to AGP Bridge - - vendor.id pci 0x1025 -&device.id pci 0x5451 -+device.name M5451 PCI AC-Link Controller Audio Device - - vendor.id pci 0x1025 -&device.id pci 0x5453 -+device.name M5453 PCI AC-Link Controller Modem Device - - vendor.id pci 0x1025 -&device.id pci 0x7101 -+device.name M7101 PCI PMU Power Management Controller - - vendor.id pci 0x1025 -&device.id pci 0x7101 -&subvendor.id pci 0x10b9 -&subdevice.id pci 0x7101 -+subdevice.name M7101 PCI PMU Power Management Controller - - vendor.id pci 0x1028 -+vendor.name Dell - - vendor.id pci 0x1028 -&device.id pci 0x0001 -+device.name PowerEdge Expandable RAID Controller 2/Si - - vendor.id pci 0x1028 -&device.id pci 0x0001 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0001 -+subdevice.name PowerEdge 2400 - - vendor.id pci 0x1028 -&device.id pci 0x0002 -+device.name PowerEdge Expandable RAID Controller 3/Di - - vendor.id pci 0x1028 -&device.id pci 0x0002 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0002 -+subdevice.name PowerEdge 4400 - - vendor.id pci 0x1028 -&device.id pci 0x0003 -+device.name PowerEdge Expandable RAID Controller 3/Si - - vendor.id pci 0x1028 -&device.id pci 0x0003 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0003 -+subdevice.name PowerEdge 2450 - - vendor.id pci 0x1028 -&device.id pci 0x0006 -+device.name PowerEdge Expandable RAID Controller 3/Di - - vendor.id pci 0x1028 -&device.id pci 0x0007 -+device.name Remote Access Card III - - vendor.id pci 0x1028 -&device.id pci 0x0008 -+device.name Remote Access Card III - - vendor.id pci 0x1028 -&device.id pci 0x0009 -+device.name Remote Access Card III: BMC/SMIC device not present - - vendor.id pci 0x1028 -&device.id pci 0x000a -+device.name PowerEdge Expandable RAID Controller 3/Di - - vendor.id pci 0x1028 -&device.id pci 0x000c -+device.name Embedded Remote Access or ERA/O - - vendor.id pci 0x1028 -&device.id pci 0x000d -+device.name Embedded Remote Access: BMC/SMIC device - - vendor.id pci 0x1028 -&device.id pci 0x000e -+device.name PowerEdge Expandable RAID controller 4/Di - - vendor.id pci 0x1028 -&device.id pci 0x000f -+device.name PowerEdge Expandable RAID controller 4/Di - - vendor.id pci 0x1028 -&device.id pci 0x0010 -+device.name Remote Access Card 4 - - vendor.id pci 0x1028 -&device.id pci 0x0011 -+device.name Remote Access Card 4 Daughter Card - - vendor.id pci 0x1028 -&device.id pci 0x0012 -+device.name Remote Access Card 4 Daughter Card Virtual UART - - vendor.id pci 0x1028 -&device.id pci 0x0013 -+device.name PowerEdge Expandable RAID controller 4 - - vendor.id pci 0x1028 -&device.id pci 0x0013 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x016c -+subdevice.name PowerEdge Expandable RAID Controller 4e/Si - - vendor.id pci 0x1028 -&device.id pci 0x0013 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x016d -+subdevice.name PowerEdge Expandable RAID Controller 4e/Di - - vendor.id pci 0x1028 -&device.id pci 0x0013 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x016e -+subdevice.name PowerEdge Expandable RAID Controller 4e/Di - - vendor.id pci 0x1028 -&device.id pci 0x0013 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x016f -+subdevice.name PowerEdge Expandable RAID Controller 4e/Di - - vendor.id pci 0x1028 -&device.id pci 0x0013 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0170 -+subdevice.name PowerEdge Expandable RAID Controller 4e/Di - - vendor.id pci 0x1028 -&device.id pci 0x0014 -+device.name Remote Access Card 4 Daughter Card SMIC interface - - vendor.id pci 0x1029 -+vendor.name Siemens Nixdorf IS - - vendor.id pci 0x102a -+vendor.name LSI Logic - - vendor.id pci 0x102a -&device.id pci 0x0000 -+device.name HYDRA - - vendor.id pci 0x102a -&device.id pci 0x0010 -+device.name ASPEN - - vendor.id pci 0x102a -&device.id pci 0x001f -+device.name AHA-2940U2/U2W /7890/7891 SCSI Controllers - - vendor.id pci 0x102a -&device.id pci 0x001f -&subvendor.id pci 0x9005 -&subdevice.id pci 0x000f -+subdevice.name 2940U2W SCSI Controller - - vendor.id pci 0x102a -&device.id pci 0x001f -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0106 -+subdevice.name 2940U2W SCSI Controller - - vendor.id pci 0x102a -&device.id pci 0x001f -&subvendor.id pci 0x9005 -&subdevice.id pci 0xa180 -+subdevice.name 2940U2W SCSI Controller - - vendor.id pci 0x102a -&device.id pci 0x00c5 -+device.name AIC-7899 U160/m SCSI Controller - - vendor.id pci 0x102a -&device.id pci 0x00c5 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00c5 -+subdevice.name PowerEdge 2550/2650/4600 - - vendor.id pci 0x102a -&device.id pci 0x00cf -+device.name AIC-7899P U160/m - - vendor.id pci 0x102a -&device.id pci 0x00cf -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0106 -+subdevice.name PowerEdge 4600 - - vendor.id pci 0x102a -&device.id pci 0x00cf -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0121 -+subdevice.name PowerEdge 2650 - - vendor.id pci 0x102b -+vendor.name Matrox Graphics, Inc. - - vendor.id pci 0x102b -&device.id pci 0x0010 -+device.name MGA-I [Impression?] - - vendor.id pci 0x102b -&device.id pci 0x0100 -+device.name MGA 1064SG [Mystique] - - vendor.id pci 0x102b -&device.id pci 0x0518 -+device.name MGA-II [Athena] - - vendor.id pci 0x102b -&device.id pci 0x0519 -+device.name MGA 2064W [Millennium] - - vendor.id pci 0x102b -&device.id pci 0x051a -+device.name MGA 1064SG [Mystique] - - vendor.id pci 0x102b -&device.id pci 0x051a -&subvendor.id pci 0x102b -&subdevice.id pci 0x0100 -+subdevice.name MGA-1064SG Mystique - - vendor.id pci 0x102b -&device.id pci 0x051a -&subvendor.id pci 0x102b -&subdevice.id pci 0x1100 -+subdevice.name MGA-1084SG Mystique - - vendor.id pci 0x102b -&device.id pci 0x051a -&subvendor.id pci 0x102b -&subdevice.id pci 0x1200 -+subdevice.name MGA-1084SG Mystique - - vendor.id pci 0x102b -&device.id pci 0x051a -&subvendor.id pci 0x1100 -&subdevice.id pci 0x102b -+subdevice.name MGA-1084SG Mystique - - vendor.id pci 0x102b -&device.id pci 0x051a -&subvendor.id pci 0x110a -&subdevice.id pci 0x0018 -+subdevice.name Scenic Pro C5 (D1025) - - vendor.id pci 0x102b -&device.id pci 0x051b -+device.name MGA 2164W [Millennium II] - - vendor.id pci 0x102b -&device.id pci 0x051b -&subvendor.id pci 0x102b -&subdevice.id pci 0x051b -+subdevice.name MGA-2164W Millennium II - - vendor.id pci 0x102b -&device.id pci 0x051b -&subvendor.id pci 0x102b -&subdevice.id pci 0x1100 -+subdevice.name MGA-2164W Millennium II - - vendor.id pci 0x102b -&device.id pci 0x051b -&subvendor.id pci 0x102b -&subdevice.id pci 0x1200 -+subdevice.name MGA-2164W Millennium II - - vendor.id pci 0x102b -&device.id pci 0x051e -+device.name MGA 1064SG [Mystique] AGP - - vendor.id pci 0x102b -&device.id pci 0x051f -+device.name MGA 2164W [Millennium II] AGP - - vendor.id pci 0x102b -&device.id pci 0x0520 -+device.name MGA G200 - - vendor.id pci 0x102b -&device.id pci 0x0520 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbc2 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0520 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbc8 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0520 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbe2 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0520 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbe8 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0520 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff03 -+subdevice.name Millennium G200 SD - - vendor.id pci 0x102b -&device.id pci 0x0520 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff04 -+subdevice.name Marvel G200 - - vendor.id pci 0x102b -&device.id pci 0x0521 -+device.name MGA G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x1014 -&subdevice.id pci 0xff03 -+subdevice.name Millennium G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0x48e9 -+subdevice.name Mystique G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0x48f8 -+subdevice.name Millennium G200 SD AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0x4a60 -+subdevice.name Millennium G200 LE AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0x4a64 -+subdevice.name Millennium G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xc93c -+subdevice.name Millennium G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xc9b0 -+subdevice.name Millennium G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xc9bc -+subdevice.name Millennium G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xca60 -+subdevice.name Millennium G250 LE AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xca6c -+subdevice.name Millennium G250 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbbc -+subdevice.name Millennium G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbc2 -+subdevice.name Millennium G200 MMS (Dual G200) - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbc3 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbc8 -+subdevice.name Millennium G200 MMS (Dual G200) - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbd2 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbd3 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbd4 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbd5 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbd8 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbd9 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbe2 -+subdevice.name Millennium G200 MMS (Quad G200) - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbe3 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbe8 -+subdevice.name Millennium G200 MMS (Quad G200) - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbf2 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbf3 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbf4 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbf5 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbf8 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xdbf9 -+subdevice.name G200 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xf806 -+subdevice.name Mystique G200 Video AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff00 -+subdevice.name MGA-G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff02 -+subdevice.name Mystique G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff03 -+subdevice.name Millennium G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff04 -+subdevice.name Marvel G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0521 -&subvendor.id pci 0x110a -&subdevice.id pci 0x0032 -+subdevice.name MGA-G200 AGP - - vendor.id pci 0x102b -&device.id pci 0x0525 -+device.name MGA G400 AGP - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb16f -+subdevice.name MGA-G400 AGP - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0328 -+subdevice.name Millennium G400 16Mb SDRAM - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0338 -+subdevice.name Millennium G400 16Mb SDRAM - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0378 -+subdevice.name Millennium G400 32Mb SDRAM - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0541 -+subdevice.name Millennium G450 Dual Head - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0542 -+subdevice.name Millennium G450 Dual Head LX - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0543 -+subdevice.name Millennium G450 Single Head LX - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0641 -+subdevice.name Millennium G450 32Mb SDRAM Dual Head - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0642 -+subdevice.name Millennium G450 32Mb SDRAM Dual Head LX - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0643 -+subdevice.name Millennium G450 32Mb SDRAM Single Head LX - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x07c0 -+subdevice.name Millennium G450 Dual Head LE - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x07c1 -+subdevice.name Millennium G450 SDR Dual Head LE - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0d41 -+subdevice.name Millennium G450 Dual Head PCI - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0d42 -+subdevice.name Millennium G450 Dual Head LX PCI - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0d43 -+subdevice.name Millennium G450 32Mb Dual Head PCI - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0e00 -+subdevice.name Marvel G450 eTV - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0e01 -+subdevice.name Marvel G450 eTV - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0e02 -+subdevice.name Marvel G450 eTV - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0e03 -+subdevice.name Marvel G450 eTV - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0f80 -+subdevice.name Millennium G450 Low Profile - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0f81 -+subdevice.name Millennium G450 Low Profile - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0f82 -+subdevice.name Millennium G450 Low Profile DVI - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0f83 -+subdevice.name Millennium G450 Low Profile DVI - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x19d8 -+subdevice.name Millennium G400 16Mb SGRAM - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x19f8 -+subdevice.name Millennium G400 32Mb SGRAM - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x2159 -+subdevice.name Millennium G400 Dual Head 16Mb - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x2179 -+subdevice.name Millennium G400 MAX/Dual Head 32Mb - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x217d -+subdevice.name Millennium G400 Dual Head Max - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x23c0 -+subdevice.name Millennium G450 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x23c1 -+subdevice.name Millennium G450 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x23c2 -+subdevice.name Millennium G450 DVI - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x23c3 -+subdevice.name Millennium G450 DVI - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x2f58 -+subdevice.name Millennium G400 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x2f78 -+subdevice.name Millennium G400 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x3693 -+subdevice.name Marvel G400 AGP - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x5dd0 -+subdevice.name 4Sight II - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x5f50 -+subdevice.name 4Sight II - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x5f51 -+subdevice.name 4Sight II - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x5f52 -+subdevice.name 4Sight II - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x9010 -+subdevice.name Millennium G400 Dual Head - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x0400 -+subdevice.name GA-G400 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x1705 -&subdevice.id pci 0x0001 -+subdevice.name Millennium G450 32MB SGRAM - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x1705 -&subdevice.id pci 0x0002 -+subdevice.name Millennium G450 16MB SGRAM - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x1705 -&subdevice.id pci 0x0003 -+subdevice.name Millennium G450 32MB - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x1705 -&subdevice.id pci 0x0004 -+subdevice.name Millennium G450 16MB - - vendor.id pci 0x102b -&device.id pci 0x0527 -+device.name MGA Parhelia AGP - - vendor.id pci 0x102b -&device.id pci 0x0527 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0840 -+subdevice.name Parhelia 128Mb - - vendor.id pci 0x102b -&device.id pci 0x0d10 -+device.name MGA Ultima/Impression - - vendor.id pci 0x102b -&device.id pci 0x1000 -+device.name MGA G100 [Productiva] - - vendor.id pci 0x102b -&device.id pci 0x1000 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff01 -+subdevice.name Productiva G100 - - vendor.id pci 0x102b -&device.id pci 0x1000 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff05 -+subdevice.name Productiva G100 Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x1001 -+device.name MGA G100 [Productiva] AGP - - vendor.id pci 0x102b -&device.id pci 0x1001 -&subvendor.id pci 0x102b -&subdevice.id pci 0x1001 -+subdevice.name MGA-G100 AGP - - vendor.id pci 0x102b -&device.id pci 0x1001 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff00 -+subdevice.name MGA-G100 AGP - - vendor.id pci 0x102b -&device.id pci 0x1001 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff01 -+subdevice.name MGA-G100 Productiva AGP - - vendor.id pci 0x102b -&device.id pci 0x1001 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff03 -+subdevice.name Millennium G100 AGP - - vendor.id pci 0x102b -&device.id pci 0x1001 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff04 -+subdevice.name MGA-G100 AGP - - vendor.id pci 0x102b -&device.id pci 0x1001 -&subvendor.id pci 0x102b -&subdevice.id pci 0xff05 -+subdevice.name MGA-G100 Productiva AGP Multi-Monitor - - vendor.id pci 0x102b -&device.id pci 0x1001 -&subvendor.id pci 0x110a -&subdevice.id pci 0x001e -+subdevice.name MGA-G100 AGP - - vendor.id pci 0x102b -&device.id pci 0x2007 -+device.name MGA Mistral - - vendor.id pci 0x102b -&device.id pci 0x2527 -+device.name MGA G550 AGP - - vendor.id pci 0x102b -&device.id pci 0x2527 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0f83 -+subdevice.name Millennium G550 - - vendor.id pci 0x102b -&device.id pci 0x2527 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0f84 -+subdevice.name Millennium G550 Dual Head DDR 32Mb - - vendor.id pci 0x102b -&device.id pci 0x2527 -&subvendor.id pci 0x102b -&subdevice.id pci 0x1e41 -+subdevice.name Millennium G550 - - vendor.id pci 0x102b -&device.id pci 0x2537 -+device.name MGA G650 AGP - - vendor.id pci 0x102b -&device.id pci 0x4536 -+device.name VIA Framegrabber - - vendor.id pci 0x102b -&device.id pci 0x6573 -+device.name Shark 10/100 Multiport SwitchNIC - - vendor.id pci 0x102c -+vendor.name Chips and Technologies - - vendor.id pci 0x102c -&device.id pci 0x00b8 -+device.name F64310 - - vendor.id pci 0x102c -&device.id pci 0x00c0 -+device.name F69000 HiQVideo - - vendor.id pci 0x102c -&device.id pci 0x00c0 -&subvendor.id pci 0x102c -&subdevice.id pci 0x00c0 -+subdevice.name F69000 HiQVideo - - vendor.id pci 0x102c -&device.id pci 0x00c0 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1000 -+subdevice.name CC7/CR7/CP7/VC7/VP7/VR7 mainboard - - vendor.id pci 0x102c -&device.id pci 0x00c0 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1010 -+subdevice.name CP5/CR6 mainboard - - vendor.id pci 0x102c -&device.id pci 0x00c0 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1020 -+subdevice.name VR6 mainboard - - vendor.id pci 0x102c -&device.id pci 0x00c0 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1030 -+subdevice.name PC5 mainboard - - vendor.id pci 0x102c -&device.id pci 0x00c0 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1050 -+subdevice.name CT7 mainboard - - vendor.id pci 0x102c -&device.id pci 0x00c0 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1051 -+subdevice.name CE7 mainboard - - vendor.id pci 0x102c -&device.id pci 0x00d0 -+device.name F65545 - - vendor.id pci 0x102c -&device.id pci 0x00d8 -+device.name F65545 - - vendor.id pci 0x102c -&device.id pci 0x00dc -+device.name F65548 - - vendor.id pci 0x102c -&device.id pci 0x00e0 -+device.name F65550 - - vendor.id pci 0x102c -&device.id pci 0x00e4 -+device.name F65554 - - vendor.id pci 0x102c -&device.id pci 0x00e5 -+device.name F65555 HiQVPro - - vendor.id pci 0x102c -&device.id pci 0x00e5 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb049 -+subdevice.name Armada 1700 Laptop Display Controller - - vendor.id pci 0x102c -&device.id pci 0x00f0 -+device.name F68554 - - vendor.id pci 0x102c -&device.id pci 0x00f4 -+device.name F68554 HiQVision - - vendor.id pci 0x102c -&device.id pci 0x00f5 -+device.name F68555 - - vendor.id pci 0x102c -&device.id pci 0x0c30 -+device.name F69030 - - vendor.id pci 0x102c -&device.id pci 0x0c30 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1000 -+subdevice.name CC7/CR7/CP7/VC7/VP7/VR7 mainboard - - vendor.id pci 0x102c -&device.id pci 0x0c30 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1050 -+subdevice.name CT7 mainboard - - vendor.id pci 0x102c -&device.id pci 0x0c30 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1051 -+subdevice.name CE7 mainboard - - vendor.id pci 0x102c -&device.id pci 0x0c30 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1080 -+subdevice.name CT8 mainboard - - vendor.id pci 0x102d -+vendor.name Wyse Technology Inc. - - vendor.id pci 0x102d -&device.id pci 0x50dc -+device.name 3328 Audio - - vendor.id pci 0x102e -+vendor.name Olivetti Advanced Technology - - vendor.id pci 0x102f -+vendor.name Toshiba America - - vendor.id pci 0x102f -&device.id pci 0x0009 -+device.name r4x00 - - vendor.id pci 0x102f -&device.id pci 0x000a -+device.name TX3927 MIPS RISC PCI Controller - - vendor.id pci 0x102f -&device.id pci 0x0020 -+device.name ATM Meteor 155 - - vendor.id pci 0x102f -&device.id pci 0x0020 -&subvendor.id pci 0x102f -&subdevice.id pci 0x00f8 -+subdevice.name ATM Meteor 155 - - vendor.id pci 0x102f -&device.id pci 0x0030 -+device.name TC35815CF PCI 10/100 Mbit Ethernet Controller - - vendor.id pci 0x102f -&device.id pci 0x0031 -+device.name TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL - - vendor.id pci 0x102f -&device.id pci 0x0105 -+device.name TC86C001 [goku-s] IDE - - vendor.id pci 0x102f -&device.id pci 0x0106 -+device.name TC86C001 [goku-s] USB 1.1 Host - - vendor.id pci 0x102f -&device.id pci 0x0107 -+device.name TC86C001 [goku-s] USB Device Controller - - vendor.id pci 0x102f -&device.id pci 0x0108 -+device.name TC86C001 [goku-s] I2C/SIO/GPIO Controller - - vendor.id pci 0x102f -&device.id pci 0x0180 -+device.name TX4927/38 MIPS RISC PCI Controller - - vendor.id pci 0x102f -&device.id pci 0x0181 -+device.name TX4925 MIPS RISC PCI Controller - - vendor.id pci 0x102f -&device.id pci 0x0182 -+device.name TX4937 MIPS RISC PCI Controller - - vendor.id pci 0x1030 -+vendor.name TMC Research - - vendor.id pci 0x1031 -+vendor.name Miro Computer Products AG - - vendor.id pci 0x1031 -&device.id pci 0x5601 -+device.name DC20 ASIC - - vendor.id pci 0x1031 -&device.id pci 0x5607 -+device.name Video I/O & motion JPEG compressor - - vendor.id pci 0x1031 -&device.id pci 0x5631 -+device.name Media 3D - - vendor.id pci 0x1031 -&device.id pci 0x6057 -+device.name MiroVideo DC10/DC30+ - - vendor.id pci 0x1032 -+vendor.name Compaq - - vendor.id pci 0x1033 -+vendor.name NEC Corporation - - vendor.id pci 0x1033 -&device.id pci 0x0000 -+device.name Vr4181A USB Host or Function Control Unit - - vendor.id pci 0x1033 -&device.id pci 0x0001 -+device.name PCI to 486-like bus Bridge - - vendor.id pci 0x1033 -&device.id pci 0x0002 -+device.name PCI to VL98 Bridge - - vendor.id pci 0x1033 -&device.id pci 0x0003 -+device.name ATM Controller - - vendor.id pci 0x1033 -&device.id pci 0x0004 -+device.name R4000 PCI Bridge - - vendor.id pci 0x1033 -&device.id pci 0x0005 -+device.name PCI to 486-like bus Bridge - - vendor.id pci 0x1033 -&device.id pci 0x0006 -+device.name PC-9800 Graphic Accelerator - - vendor.id pci 0x1033 -&device.id pci 0x0007 -+device.name PCI to UX-Bus Bridge - - vendor.id pci 0x1033 -&device.id pci 0x0008 -+device.name PC-9800 Graphic Accelerator - - vendor.id pci 0x1033 -&device.id pci 0x0009 -+device.name PCI to PC9800 Core-Graph Bridge - - vendor.id pci 0x1033 -&device.id pci 0x0016 -+device.name PCI to VL Bridge - - vendor.id pci 0x1033 -&device.id pci 0x001a -+device.name [Nile II] - - vendor.id pci 0x1033 -&device.id pci 0x0021 -+device.name Vrc4373 [Nile I] - - vendor.id pci 0x1033 -&device.id pci 0x0029 -+device.name PowerVR PCX1 - - vendor.id pci 0x1033 -&device.id pci 0x002a -+device.name PowerVR 3D - - vendor.id pci 0x1033 -&device.id pci 0x002c -+device.name Star Alpha 2 - - vendor.id pci 0x1033 -&device.id pci 0x002d -+device.name PCI to C-bus Bridge - - vendor.id pci 0x1033 -&device.id pci 0x0035 -+device.name USB - - vendor.id pci 0x1033 -&device.id pci 0x0035 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name USB - - vendor.id pci 0x1033 -&device.id pci 0x0035 -&subvendor.id pci 0x12ee -&subdevice.id pci 0x7000 -+subdevice.name Root Hub - - vendor.id pci 0x1033 -&device.id pci 0x0035 -&subvendor.id pci 0x1799 -&subdevice.id pci 0x0001 -+subdevice.name Root Hub - - vendor.id pci 0x1033 -&device.id pci 0x0035 -&subvendor.id pci 0x807d -&subdevice.id pci 0x0035 -+subdevice.name PCI-USB2 (OHCI subsystem) - - vendor.id pci 0x1033 -&device.id pci 0x003b -+device.name PCI to C-bus Bridge - - vendor.id pci 0x1033 -&device.id pci 0x003e -+device.name NAPCCARD Cardbus Controller - - vendor.id pci 0x1033 -&device.id pci 0x0046 -+device.name PowerVR PCX2 [midas] - - vendor.id pci 0x1033 -&device.id pci 0x005a -+device.name Vrc5074 [Nile 4] - - vendor.id pci 0x1033 -&device.id pci 0x0063 -+device.name Firewarden - - vendor.id pci 0x1033 -&device.id pci 0x0067 -+device.name PowerVR Neon 250 Chipset - - vendor.id pci 0x1033 -&device.id pci 0x0067 -&subvendor.id pci 0x1010 -&subdevice.id pci 0x0020 -+subdevice.name PowerVR Neon 250 AGP 32Mb - - vendor.id pci 0x1033 -&device.id pci 0x0067 -&subvendor.id pci 0x1010 -&subdevice.id pci 0x0080 -+subdevice.name PowerVR Neon 250 AGP 16Mb - - vendor.id pci 0x1033 -&device.id pci 0x0067 -&subvendor.id pci 0x1010 -&subdevice.id pci 0x0088 -+subdevice.name PowerVR Neon 250 16Mb - - vendor.id pci 0x1033 -&device.id pci 0x0067 -&subvendor.id pci 0x1010 -&subdevice.id pci 0x0090 -+subdevice.name PowerVR Neon 250 AGP 16Mb - - vendor.id pci 0x1033 -&device.id pci 0x0067 -&subvendor.id pci 0x1010 -&subdevice.id pci 0x0098 -+subdevice.name PowerVR Neon 250 16Mb - - vendor.id pci 0x1033 -&device.id pci 0x0067 -&subvendor.id pci 0x1010 -&subdevice.id pci 0x00a0 -+subdevice.name PowerVR Neon 250 AGP 32Mb - - vendor.id pci 0x1033 -&device.id pci 0x0067 -&subvendor.id pci 0x1010 -&subdevice.id pci 0x00a8 -+subdevice.name PowerVR Neon 250 32Mb - - vendor.id pci 0x1033 -&device.id pci 0x0067 -&subvendor.id pci 0x1010 -&subdevice.id pci 0x0120 -+subdevice.name PowerVR Neon 250 AGP 32Mb - - vendor.id pci 0x1033 -&device.id pci 0x0074 -+device.name 56k Voice Modem - - vendor.id pci 0x1033 -&device.id pci 0x0074 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8014 -+subdevice.name RCV56ACF 56k Voice Modem - - vendor.id pci 0x1033 -&device.id pci 0x009b -+device.name Vrc5476 - - vendor.id pci 0x1033 -&device.id pci 0x00a5 -+device.name VRC4173 - - vendor.id pci 0x1033 -&device.id pci 0x00a6 -+device.name VRC5477 AC97 - - vendor.id pci 0x1033 -&device.id pci 0x00cd -+device.name IEEE 1394 [OrangeLink] Host Controller - - vendor.id pci 0x1033 -&device.id pci 0x00cd -&subvendor.id pci 0x12ee -&subdevice.id pci 0x8011 -+subdevice.name Root hub - - vendor.id pci 0x1033 -&device.id pci 0x00ce -+device.name IEEE 1394 Host Controller - - vendor.id pci 0x1033 -&device.id pci 0x00df -+device.name Vr4131 - - vendor.id pci 0x1033 -&device.id pci 0x00e0 -+device.name USB 2.0 - - vendor.id pci 0x1033 -&device.id pci 0x00e0 -&subvendor.id pci 0x0ee4 -&subdevice.id pci 0x3383 -+subdevice.name Sitecom IEEE 1394 / USB2.0 Combo Card - - vendor.id pci 0x1033 -&device.id pci 0x00e0 -&subvendor.id pci 0x12ee -&subdevice.id pci 0x7001 -+subdevice.name Root hub - - vendor.id pci 0x1033 -&device.id pci 0x00e0 -&subvendor.id pci 0x1799 -&subdevice.id pci 0x0002 -+subdevice.name Root Hub - - vendor.id pci 0x1033 -&device.id pci 0x00e0 -&subvendor.id pci 0x807d -&subdevice.id pci 0x1043 -+subdevice.name PCI-USB2 (EHCI subsystem) - - vendor.id pci 0x1033 -&device.id pci 0x00e7 -+device.name IEEE 1394 Host Controller - - vendor.id pci 0x1033 -&device.id pci 0x00f2 -+device.name uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr - - vendor.id pci 0x1033 -&device.id pci 0x00f3 -+device.name uPD6113x Multimedia Decoder/Processor [EMMA2] - - vendor.id pci 0x1033 -&device.id pci 0x010c -+device.name VR7701 - - vendor.id pci 0x1034 -+vendor.name Framatome Connectors USA Inc. - - vendor.id pci 0x1035 -+vendor.name Comp. & Comm. Research Lab - - vendor.id pci 0x1036 -+vendor.name Future Domain Corp. - - vendor.id pci 0x1036 -&device.id pci 0x0000 -+device.name TMC-18C30 [36C70] - - vendor.id pci 0x1037 -+vendor.name Hitachi Micro Systems - - vendor.id pci 0x1038 -+vendor.name AMP, Inc - - vendor.id pci 0x1039 -+vendor.name Silicon Integrated Systems [SiS] - - vendor.id pci 0x1039 -&device.id pci 0x0001 -+device.name Virtual PCI-to-PCI bridge (AGP) - - vendor.id pci 0x1039 -&device.id pci 0x0002 -+device.name SG86C202 - - vendor.id pci 0x1039 -&device.id pci 0x0006 -+device.name 85C501/2/3 - - vendor.id pci 0x1039 -&device.id pci 0x0008 -+device.name SiS85C503/5513 (LPC Bridge) - - vendor.id pci 0x1039 -&device.id pci 0x0009 -+device.name ACPI - - vendor.id pci 0x1039 -&device.id pci 0x0016 -+device.name SiS961/2 SMBus Controller - - vendor.id pci 0x1039 -&device.id pci 0x0018 -+device.name SiS85C503/5513 (LPC Bridge) - - vendor.id pci 0x1039 -&device.id pci 0x0180 -+device.name RAID bus controller 180 SATA/PATA [SiS] - - vendor.id pci 0x1039 -&device.id pci 0x0181 -+device.name SiS SATA - - vendor.id pci 0x1039 -&device.id pci 0x0200 -+device.name 5597/5598/6326 VGA - - vendor.id pci 0x1039 -&device.id pci 0x0200 -&subvendor.id pci 0x1039 -&subdevice.id pci 0x0000 -+subdevice.name SiS5597 SVGA (Shared RAM) - - vendor.id pci 0x1039 -&device.id pci 0x0204 -+device.name 82C204 - - vendor.id pci 0x1039 -&device.id pci 0x0205 -+device.name SG86C205 - - vendor.id pci 0x1039 -&device.id pci 0x0300 -+device.name 300/305 PCI/AGP VGA Display Adapter - - vendor.id pci 0x1039 -&device.id pci 0x0300 -&subvendor.id pci 0x107d -&subdevice.id pci 0x2720 -+subdevice.name Leadtek WinFast VR300 - - vendor.id pci 0x1039 -&device.id pci 0x0310 -+device.name 315H PCI/AGP VGA Display Adapter - - vendor.id pci 0x1039 -&device.id pci 0x0315 -+device.name 315 PCI/AGP VGA Display Adapter - - vendor.id pci 0x1039 -&device.id pci 0x0325 -+device.name 315PRO PCI/AGP VGA Display Adapter - - vendor.id pci 0x1039 -&device.id pci 0x0330 -+device.name 330 [Xabre] PCI/AGP VGA Display Adapter - - vendor.id pci 0x1039 -&device.id pci 0x0406 -+device.name 85C501/2 - - vendor.id pci 0x1039 -&device.id pci 0x0496 -+device.name 85C496 - - vendor.id pci 0x1039 -&device.id pci 0x0530 -+device.name 530 Host - - vendor.id pci 0x1039 -&device.id pci 0x0540 -+device.name 540 Host - - vendor.id pci 0x1039 -&device.id pci 0x0550 -+device.name 550 Host - - vendor.id pci 0x1039 -&device.id pci 0x0597 -+device.name 5513C - - vendor.id pci 0x1039 -&device.id pci 0x0601 -+device.name 85C601 - - vendor.id pci 0x1039 -&device.id pci 0x0620 -+device.name 620 Host - - vendor.id pci 0x1039 -&device.id pci 0x0630 -+device.name 630 Host - - vendor.id pci 0x1039 -&device.id pci 0x0633 -+device.name 633 Host - - vendor.id pci 0x1039 -&device.id pci 0x0635 -+device.name 635 Host - - vendor.id pci 0x1039 -&device.id pci 0x0645 -+device.name SiS645 Host & Memory & AGP Controller - - vendor.id pci 0x1039 -&device.id pci 0x0646 -+device.name SiS645DX Host & Memory & AGP Controller - - vendor.id pci 0x1039 -&device.id pci 0x0648 -+device.name SiS 645xx - - vendor.id pci 0x1039 -&device.id pci 0x0650 -+device.name 650/M650 Host - - vendor.id pci 0x1039 -&device.id pci 0x0651 -+device.name 651 Host - - vendor.id pci 0x1039 -&device.id pci 0x0655 -+device.name 655 Host - - vendor.id pci 0x1039 -&device.id pci 0x0660 -+device.name 660 Host - - vendor.id pci 0x1039 -&device.id pci 0x0661 -+device.name 661FX/M661FX/M661MX Host - - vendor.id pci 0x1039 -&device.id pci 0x0730 -+device.name 730 Host - - vendor.id pci 0x1039 -&device.id pci 0x0733 -+device.name 733 Host - - vendor.id pci 0x1039 -&device.id pci 0x0735 -+device.name 735 Host - - vendor.id pci 0x1039 -&device.id pci 0x0740 -+device.name 740 Host - - vendor.id pci 0x1039 -&device.id pci 0x0741 -+device.name 741/741GX/M741 Host - - vendor.id pci 0x1039 -&device.id pci 0x0745 -+device.name 745 Host - - vendor.id pci 0x1039 -&device.id pci 0x0746 -+device.name 746 Host - - vendor.id pci 0x1039 -&device.id pci 0x0755 -+device.name 755 Host - - vendor.id pci 0x1039 -&device.id pci 0x0760 -+device.name 760/M760 Host - - vendor.id pci 0x1039 -&device.id pci 0x0900 -+device.name SiS900 PCI Fast Ethernet - - vendor.id pci 0x1039 -&device.id pci 0x0900 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0a14 -+subdevice.name K7S5A motherboard - - vendor.id pci 0x1039 -&device.id pci 0x0900 -&subvendor.id pci 0x1039 -&subdevice.id pci 0x0900 -+subdevice.name SiS900 10/100 Ethernet Adapter - - vendor.id pci 0x1039 -&device.id pci 0x0900 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8035 -+subdevice.name CUSI-FX motherboard - - vendor.id pci 0x1039 -&device.id pci 0x0961 -+device.name SiS961 [MuTIOL Media IO] - - vendor.id pci 0x1039 -&device.id pci 0x0962 -+device.name SiS962 [MuTIOL Media IO] - - vendor.id pci 0x1039 -&device.id pci 0x0963 -+device.name SiS963 [MuTIOL Media IO] - - vendor.id pci 0x1039 -&device.id pci 0x0964 -+device.name SiS964 [MuTIOL Media IO] - - vendor.id pci 0x1039 -&device.id pci 0x0965 -+device.name SiS965 [MuTIOL Media IO] - - vendor.id pci 0x1039 -&device.id pci 0x3602 -+device.name 83C602 - - vendor.id pci 0x1039 -&device.id pci 0x5107 -+device.name 5107 - - vendor.id pci 0x1039 -&device.id pci 0x5300 -+device.name SiS540 PCI Display Adapter - - vendor.id pci 0x1039 -&device.id pci 0x5315 -+device.name 550 PCI/AGP VGA Display Adapter - - vendor.id pci 0x1039 -&device.id pci 0x5401 -+device.name 486 PCI Chipset - - vendor.id pci 0x1039 -&device.id pci 0x5511 -+device.name 5511/5512 - - vendor.id pci 0x1039 -&device.id pci 0x5513 -+device.name 5513 [IDE] - - vendor.id pci 0x1039 -&device.id pci 0x5513 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0970 -+subdevice.name P6STP-FL motherboard - - vendor.id pci 0x1039 -&device.id pci 0x5513 -&subvendor.id pci 0x1039 -&subdevice.id pci 0x5513 -+subdevice.name SiS5513 EIDE Controller (A,B step) - - vendor.id pci 0x1039 -&device.id pci 0x5513 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8035 -+subdevice.name CUSI-FX motherboard - - vendor.id pci 0x1039 -&device.id pci 0x5517 -+device.name 5517 - - vendor.id pci 0x1039 -&device.id pci 0x5571 -+device.name 5571 - - vendor.id pci 0x1039 -&device.id pci 0x5581 -+device.name 5581 Pentium Chipset - - vendor.id pci 0x1039 -&device.id pci 0x5582 -+device.name 5582 - - vendor.id pci 0x1039 -&device.id pci 0x5591 -+device.name 5591/5592 Host - - vendor.id pci 0x1039 -&device.id pci 0x5596 -+device.name 5596 Pentium Chipset - - vendor.id pci 0x1039 -&device.id pci 0x5597 -+device.name 5597 [SiS5582] - - vendor.id pci 0x1039 -&device.id pci 0x5600 -+device.name 5600 Host - - vendor.id pci 0x1039 -&device.id pci 0x6204 -+device.name Video decoder & MPEG interface - - vendor.id pci 0x1039 -&device.id pci 0x6205 -+device.name VGA Controller - - vendor.id pci 0x1039 -&device.id pci 0x6236 -+device.name 6236 3D-AGP - - vendor.id pci 0x1039 -&device.id pci 0x6300 -+device.name 630/730 PCI/AGP VGA Display Adapter - - vendor.id pci 0x1039 -&device.id pci 0x6300 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0970 -+subdevice.name P6STP-FL motherboard - - vendor.id pci 0x1039 -&device.id pci 0x6300 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8035 -+subdevice.name CUSI-FX motherboard - - vendor.id pci 0x1039 -&device.id pci 0x6306 -+device.name 530/620 PCI/AGP VGA Display Adapter - - vendor.id pci 0x1039 -&device.id pci 0x6306 -&subvendor.id pci 0x1039 -&subdevice.id pci 0x6306 -+subdevice.name SiS530,620 GUI Accelerator+3D - - vendor.id pci 0x1039 -&device.id pci 0x6325 -+device.name 65x/M650/740 PCI/AGP VGA Display Adapter - - vendor.id pci 0x1039 -&device.id pci 0x6326 -+device.name 86C326 5598/6326 - - vendor.id pci 0x1039 -&device.id pci 0x6326 -&subvendor.id pci 0x1039 -&subdevice.id pci 0x6326 -+subdevice.name SiS6326 GUI Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x6326 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0a50 -+subdevice.name SpeedStar A50 - - vendor.id pci 0x1039 -&device.id pci 0x6326 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0a70 -+subdevice.name SpeedStar A70 - - vendor.id pci 0x1039 -&device.id pci 0x6326 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4910 -+subdevice.name SpeedStar A70 - - vendor.id pci 0x1039 -&device.id pci 0x6326 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4920 -+subdevice.name SpeedStar A70 - - vendor.id pci 0x1039 -&device.id pci 0x6326 -&subvendor.id pci 0x1569 -&subdevice.id pci 0x6326 -+subdevice.name SiS6326 GUI Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x6330 -+device.name 661/741/760 PCI/AGP VGA Display Adapter - - vendor.id pci 0x1039 -&device.id pci 0x6330 -&subvendor.id pci 0x1039 -&subdevice.id pci 0x6330 -+subdevice.name [M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter - - vendor.id pci 0x1039 -&device.id pci 0x7001 -+device.name USB 1.0 Controller - - vendor.id pci 0x1039 -&device.id pci 0x7001 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0a14 -+subdevice.name K7S5A motherboard - - vendor.id pci 0x1039 -&device.id pci 0x7001 -&subvendor.id pci 0x1039 -&subdevice.id pci 0x7000 -+subdevice.name Onboard USB Controller - - vendor.id pci 0x1039 -&device.id pci 0x7002 -+device.name USB 2.0 Controller - - vendor.id pci 0x1039 -&device.id pci 0x7002 -&subvendor.id pci 0x1509 -&subdevice.id pci 0x7002 -+subdevice.name Onboard USB Controller - - vendor.id pci 0x1039 -&device.id pci 0x7007 -+device.name FireWire Controller - - vendor.id pci 0x1039 -&device.id pci 0x7012 -+device.name Sound Controller - - vendor.id pci 0x1039 -&device.id pci 0x7013 -+device.name AC'97 Modem Controller - - vendor.id pci 0x1039 -&device.id pci 0x7016 -+device.name SiS7016 PCI Fast Ethernet Adapter - - vendor.id pci 0x1039 -&device.id pci 0x7016 -&subvendor.id pci 0x1039 -&subdevice.id pci 0x7016 -+subdevice.name SiS7016 10/100 Ethernet Adapter - - vendor.id pci 0x1039 -&device.id pci 0x7018 -+device.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01b6 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01b7 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x7018 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x000e -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x0018 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1039 -&subdevice.id pci 0x7018 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x800b -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1054 -&subdevice.id pci 0x7018 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x107d -&subdevice.id pci 0x5330 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x107d -&subdevice.id pci 0x5350 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1170 -&subdevice.id pci 0x3209 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x400a -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x14a4 -&subdevice.id pci 0x2089 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x14cd -&subdevice.id pci 0x2194 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x14ff -&subdevice.id pci 0x1100 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x152d -&subdevice.id pci 0x8808 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1558 -&subdevice.id pci 0x1103 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1558 -&subdevice.id pci 0x2200 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x1563 -&subdevice.id pci 0x7018 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x15c5 -&subdevice.id pci 0x0111 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0x270f -&subdevice.id pci 0xa171 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7018 -&subvendor.id pci 0xa0a0 -&subdevice.id pci 0x0022 -+subdevice.name SiS PCI Audio Accelerator - - vendor.id pci 0x1039 -&device.id pci 0x7019 -+device.name SiS7019 Audio Accelerator - - vendor.id pci 0x103a -+vendor.name Seiko Epson Corporation - - vendor.id pci 0x103b -+vendor.name Tatung Co. of America - - vendor.id pci 0x103c -+vendor.name Hewlett-Packard Company - - vendor.id pci 0x103c -&device.id pci 0x1005 -+device.name A4977A Visualize EG - - vendor.id pci 0x103c -&device.id pci 0x1006 -+device.name Visualize FX6 - - vendor.id pci 0x103c -&device.id pci 0x1008 -+device.name Visualize FX4 - - vendor.id pci 0x103c -&device.id pci 0x100a -+device.name Visualize FX2 - - vendor.id pci 0x103c -&device.id pci 0x1028 -+device.name Tach TL Fibre Channel Host Adapter - - vendor.id pci 0x103c -&device.id pci 0x1029 -+device.name Tach XL2 Fibre Channel Host Adapter - - vendor.id pci 0x103c -&device.id pci 0x1029 -&subvendor.id pci 0x107e -&subdevice.id pci 0x000f -+subdevice.name Interphase 5560 Fibre Channel Adapter - - vendor.id pci 0x103c -&device.id pci 0x1029 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x9210 -+subdevice.name 1Gb/2Gb Family Fibre Channel Controller - - vendor.id pci 0x103c -&device.id pci 0x1029 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x9211 -+subdevice.name 1Gb/2Gb Family Fibre Channel Controller - - vendor.id pci 0x103c -&device.id pci 0x102a -+device.name Tach TS Fibre Channel Host Adapter - - vendor.id pci 0x103c -&device.id pci 0x102a -&subvendor.id pci 0x107e -&subdevice.id pci 0x000e -+subdevice.name Interphase 5540/5541 Fibre Channel Adapter - - vendor.id pci 0x103c -&device.id pci 0x102a -&subvendor.id pci 0x9004 -&subdevice.id pci 0x9110 -+subdevice.name 1Gb/2Gb Family Fibre Channel Controller - - vendor.id pci 0x103c -&device.id pci 0x102a -&subvendor.id pci 0x9004 -&subdevice.id pci 0x9111 -+subdevice.name 1Gb/2Gb Family Fibre Channel Controller - - vendor.id pci 0x103c -&device.id pci 0x1030 -+device.name J2585A DeskDirect 10/100VG NIC - - vendor.id pci 0x103c -&device.id pci 0x1031 -+device.name J2585B HP 10/100VG PCI LAN Adapter - - vendor.id pci 0x103c -&device.id pci 0x1031 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1040 -+subdevice.name J2973A DeskDirect 10BaseT NIC - - vendor.id pci 0x103c -&device.id pci 0x1031 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1041 -+subdevice.name J2585B DeskDirect 10/100VG NIC - - vendor.id pci 0x103c -&device.id pci 0x1031 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1042 -+subdevice.name J2970A DeskDirect 10BaseT/2 NIC - - vendor.id pci 0x103c -&device.id pci 0x1040 -+device.name J2973A DeskDirect 10BaseT NIC - - vendor.id pci 0x103c -&device.id pci 0x1041 -+device.name J2585B DeskDirect 10/100 NIC - - vendor.id pci 0x103c -&device.id pci 0x1042 -+device.name J2970A DeskDirect 10BaseT/2 NIC - - vendor.id pci 0x103c -&device.id pci 0x1048 -+device.name Diva Serial [GSP] Multiport UART - - vendor.id pci 0x103c -&device.id pci 0x1048 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1049 -+subdevice.name Tosca Console - - vendor.id pci 0x103c -&device.id pci 0x1048 -&subvendor.id pci 0x103c -&subdevice.id pci 0x104a -+subdevice.name Tosca Secondary - - vendor.id pci 0x103c -&device.id pci 0x1048 -&subvendor.id pci 0x103c -&subdevice.id pci 0x104b -+subdevice.name Maestro SP2 - - vendor.id pci 0x103c -&device.id pci 0x1048 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1223 -+subdevice.name Superdome Console - - vendor.id pci 0x103c -&device.id pci 0x1048 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1226 -+subdevice.name Keystone SP2 - - vendor.id pci 0x103c -&device.id pci 0x1048 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1227 -+subdevice.name Powerbar SP2 - - vendor.id pci 0x103c -&device.id pci 0x1048 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1282 -+subdevice.name Everest SP2 - - vendor.id pci 0x103c -&device.id pci 0x1054 -+device.name PCI Local Bus Adapter - - vendor.id pci 0x103c -&device.id pci 0x1064 -+device.name 79C970 PCnet Ethernet Controller - - vendor.id pci 0x103c -&device.id pci 0x108b -+device.name Visualize FXe - - vendor.id pci 0x103c -&device.id pci 0x10c1 -+device.name NetServer Smart IRQ Router - - vendor.id pci 0x103c -&device.id pci 0x10ed -+device.name TopTools Remote Control - - vendor.id pci 0x103c -&device.id pci 0x1200 -+device.name 82557B 10/100 NIC - - vendor.id pci 0x103c -&device.id pci 0x1219 -+device.name NetServer PCI Hot-Plug Controller - - vendor.id pci 0x103c -&device.id pci 0x121a -+device.name NetServer SMIC Controller - - vendor.id pci 0x103c -&device.id pci 0x121b -+device.name NetServer Legacy COM Port Decoder - - vendor.id pci 0x103c -&device.id pci 0x121c -+device.name NetServer PCI COM Port Decoder - - vendor.id pci 0x103c -&device.id pci 0x1229 -+device.name zx1 System Bus Adapter - - vendor.id pci 0x103c -&device.id pci 0x122a -+device.name zx1 I/O Controller - - vendor.id pci 0x103c -&device.id pci 0x122e -+device.name zx1 Local Bus Adapter - - vendor.id pci 0x103c -&device.id pci 0x127c -+device.name sx1000 I/O Controller - - vendor.id pci 0x103c -&device.id pci 0x1290 -+device.name Auxiliary Diva Serial Port - - vendor.id pci 0x103c -&device.id pci 0x1291 -+device.name Auxiliary Diva Serial Port - - vendor.id pci 0x103c -&device.id pci 0x2910 -+device.name E2910A PCIBus Exerciser - - vendor.id pci 0x103c -&device.id pci 0x2925 -+device.name E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer - - vendor.id pci 0x103e -+vendor.name Solliday Engineering - - vendor.id pci 0x103f -+vendor.name Synopsys/Logic Modeling Group - - vendor.id pci 0x1040 -+vendor.name Accelgraphics Inc. - - vendor.id pci 0x1041 -+vendor.name Computrend - - vendor.id pci 0x1042 -+vendor.name Micron - - vendor.id pci 0x1042 -&device.id pci 0x1000 -+device.name PC Tech RZ1000 - - vendor.id pci 0x1042 -&device.id pci 0x1001 -+device.name PC Tech RZ1001 - - vendor.id pci 0x1042 -&device.id pci 0x3000 -+device.name Samurai_0 - - vendor.id pci 0x1042 -&device.id pci 0x3010 -+device.name Samurai_1 - - vendor.id pci 0x1042 -&device.id pci 0x3020 -+device.name Samurai_IDE - - vendor.id pci 0x1043 -+vendor.name ASUSTeK Computer Inc. - - vendor.id pci 0x1043 -&device.id pci 0x0675 -+device.name ISDNLink P-IN100-ST-D - - vendor.id pci 0x1043 -&device.id pci 0x4015 -+device.name v7100 SDRAM [GeForce2 MX] - - vendor.id pci 0x1043 -&device.id pci 0x4021 -+device.name v7100 Combo Deluxe [GeForce2 MX + TV tuner] - - vendor.id pci 0x1043 -&device.id pci 0x4057 -+device.name v8200 GeForce 3 - - vendor.id pci 0x1043 -&device.id pci 0x8043 -+device.name v8240 PAL 128M [P4T] Motherboard - - vendor.id pci 0x1043 -&device.id pci 0x807b -+device.name v9280/TD [Geforce4 TI4200 8X With TV-Out and DVI] - - vendor.id pci 0x1043 -&device.id pci 0x80bb -+device.name v9180 Magic/T [GeForce4 MX440 AGP 8x 64MB TV-out] - - vendor.id pci 0x1044 -+vendor.name Adaptec (formerly DPT) - - vendor.id pci 0x1044 -&device.id pci 0x1012 -+device.name Domino RAID Engine - - vendor.id pci 0x1044 -&device.id pci 0xa400 -+device.name SmartCache/Raid I-IV Controller - - vendor.id pci 0x1044 -&device.id pci 0xa500 -+device.name PCI Bridge - - vendor.id pci 0x1044 -&device.id pci 0xa501 -+device.name SmartRAID V Controller - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc001 -+subdevice.name PM1554U2 Ultra2 Single Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc002 -+subdevice.name PM1654U2 Ultra2 Single Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc003 -+subdevice.name PM1564U3 Ultra3 Single Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc004 -+subdevice.name PM1564U3 Ultra3 Dual Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc005 -+subdevice.name PM1554U2 Ultra2 Single Channel (NON ACPI) - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc00a -+subdevice.name PM2554U2 Ultra2 Single Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc00b -+subdevice.name PM2654U2 Ultra2 Single Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc00c -+subdevice.name PM2664U3 Ultra3 Single Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc00d -+subdevice.name PM2664U3 Ultra3 Dual Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc00e -+subdevice.name PM2554U2 Ultra2 Single Channel (NON ACPI) - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc00f -+subdevice.name PM2654U2 Ultra2 Single Channel (NON ACPI) - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc014 -+subdevice.name PM3754U2 Ultra2 Single Channel (NON ACPI) - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc015 -+subdevice.name PM3755U2B Ultra2 Single Channel (NON ACPI) - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc016 -+subdevice.name PM3755F Fibre Channel (NON ACPI) - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc01e -+subdevice.name PM3757U2 Ultra2 Single Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc01f -+subdevice.name PM3757U2 Ultra2 Dual Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc020 -+subdevice.name PM3767U3 Ultra3 Dual Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc021 -+subdevice.name PM3767U3 Ultra3 Quad Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc028 -+subdevice.name PM2865U3 Ultra3 Single Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc029 -+subdevice.name PM2865U3 Ultra3 Dual Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc02a -+subdevice.name PM2865F Fibre Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc03c -+subdevice.name 2000S Ultra3 Single Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc03d -+subdevice.name 2000S Ultra3 Dual Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc03e -+subdevice.name 2000F Fibre Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc046 -+subdevice.name 3000S Ultra3 Single Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc047 -+subdevice.name 3000S Ultra3 Dual Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc048 -+subdevice.name 3000F Fibre Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc050 -+subdevice.name 5000S Ultra3 Single Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc051 -+subdevice.name 5000S Ultra3 Dual Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc052 -+subdevice.name 5000F Fibre Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc05a -+subdevice.name 2400A UDMA Four Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc05b -+subdevice.name 2400A UDMA Four Channel DAC - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc064 -+subdevice.name 3010S Ultra3 Dual Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc065 -+subdevice.name 3010S Ultra3 Four Channel - - vendor.id pci 0x1044 -&device.id pci 0xa501 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc066 -+subdevice.name 3010S Fibre Channel - - vendor.id pci 0x1044 -&device.id pci 0xa511 -+device.name SmartRAID V Controller - - vendor.id pci 0x1044 -&device.id pci 0xa511 -&subvendor.id pci 0x1044 -&subdevice.id pci 0xc032 -+subdevice.name ASR-2005S I2O Zero Channel - - vendor.id pci 0x1045 -+vendor.name OPTi Inc. - - vendor.id pci 0x1045 -&device.id pci 0xa0f8 -+device.name 82C750 [Vendetta] USB Controller - - vendor.id pci 0x1045 -&device.id pci 0xc101 -+device.name 92C264 - - vendor.id pci 0x1045 -&device.id pci 0xc178 -+device.name 92C178 - - vendor.id pci 0x1045 -&device.id pci 0xc556 -+device.name 82X556 [Viper] - - vendor.id pci 0x1045 -&device.id pci 0xc557 -+device.name 82C557 [Viper-M] - - vendor.id pci 0x1045 -&device.id pci 0xc558 -+device.name 82C558 [Viper-M ISA+IDE] - - vendor.id pci 0x1045 -&device.id pci 0xc567 -+device.name 82C750 [Vendetta], device 0 - - vendor.id pci 0x1045 -&device.id pci 0xc568 -+device.name 82C750 [Vendetta], device 1 - - vendor.id pci 0x1045 -&device.id pci 0xc569 -+device.name 82C579 [Viper XPress+ Chipset] - - vendor.id pci 0x1045 -&device.id pci 0xc621 -+device.name 82C621 [Viper-M/N+] - - vendor.id pci 0x1045 -&device.id pci 0xc700 -+device.name 82C700 [FireStar] - - vendor.id pci 0x1045 -&device.id pci 0xc701 -+device.name 82C701 [FireStar Plus] - - vendor.id pci 0x1045 -&device.id pci 0xc814 -+device.name 82C814 [Firebridge 1] - - vendor.id pci 0x1045 -&device.id pci 0xc822 -+device.name 82C822 - - vendor.id pci 0x1045 -&device.id pci 0xc824 -+device.name 82C824 - - vendor.id pci 0x1045 -&device.id pci 0xc825 -+device.name 82C825 [Firebridge 2] - - vendor.id pci 0x1045 -&device.id pci 0xc832 -+device.name 82C832 - - vendor.id pci 0x1045 -&device.id pci 0xc861 -+device.name 82C861 - - vendor.id pci 0x1045 -&device.id pci 0xc895 -+device.name 82C895 - - vendor.id pci 0x1045 -&device.id pci 0xc935 -+device.name EV1935 ECTIVA MachOne PCIAudio - - vendor.id pci 0x1045 -&device.id pci 0xd568 -+device.name 82C825 [Firebridge 2] - - vendor.id pci 0x1045 -&device.id pci 0xd721 -+device.name IDE [FireStar] - - vendor.id pci 0x1046 -+vendor.name IPC Corporation, Ltd. - - vendor.id pci 0x1047 -+vendor.name Genoa Systems Corp - - vendor.id pci 0x1048 -+vendor.name Elsa AG - - vendor.id pci 0x1048 -&device.id pci 0x0c60 -+device.name Gladiac MX - - vendor.id pci 0x1048 -&device.id pci 0x0d22 -+device.name Quadro4 900XGL [ELSA GLoria4 900XGL] - - vendor.id pci 0x1048 -&device.id pci 0x1000 -+device.name QuickStep 1000 - - vendor.id pci 0x1048 -&device.id pci 0x3000 -+device.name QuickStep 3000 - - vendor.id pci 0x1048 -&device.id pci 0x8901 -+device.name Gloria XL - - vendor.id pci 0x1049 -+vendor.name Fountain Technologies, Inc. - - vendor.id pci 0x104a -+vendor.name STMicroelectronics - - vendor.id pci 0x104a -&device.id pci 0x0008 -+device.name STG 2000X - - vendor.id pci 0x104a -&device.id pci 0x0009 -+device.name STG 1764X - - vendor.id pci 0x104a -&device.id pci 0x0010 -+device.name STG4000 [3D Prophet Kyro Series] - - vendor.id pci 0x104a -&device.id pci 0x0209 -+device.name STPC Consumer/Industrial North- and Southbridge - - vendor.id pci 0x104a -&device.id pci 0x020a -+device.name STPC Atlas/ConsumerS/Consumer IIA Northbridge - - vendor.id pci 0x104a -&device.id pci 0x0210 -+device.name STPC Atlas ISA Bridge - - vendor.id pci 0x104a -&device.id pci 0x021a -+device.name STPC Consumer S Southbridge - - vendor.id pci 0x104a -&device.id pci 0x021b -+device.name STPC Consumer IIA Southbridge - - vendor.id pci 0x104a -&device.id pci 0x0500 -+device.name ST70137 [Unicorn] ADSL DMT Transceiver - - vendor.id pci 0x104a -&device.id pci 0x0564 -+device.name STPC Client Northbridge - - vendor.id pci 0x104a -&device.id pci 0x0981 -+device.name 21x4x DEC-Tulip compatible 10/100 Ethernet - - vendor.id pci 0x104a -&device.id pci 0x1746 -+device.name STG 1764X - - vendor.id pci 0x104a -&device.id pci 0x2774 -+device.name 21x4x DEC-Tulip compatible 10/100 Ethernet - - vendor.id pci 0x104a -&device.id pci 0x3520 -+device.name MPEG-II decoder card - - vendor.id pci 0x104a -&device.id pci 0x55cc -+device.name STPC Client Southbridge - - vendor.id pci 0x104b -+vendor.name BusLogic - - vendor.id pci 0x104b -&device.id pci 0x0140 -+device.name BT-946C (old) [multimaster 01] - - vendor.id pci 0x104b -&device.id pci 0x1040 -+device.name BT-946C (BA80C30) [MultiMaster 10] - - vendor.id pci 0x104b -&device.id pci 0x8130 -+device.name Flashpoint LT - - vendor.id pci 0x104c -+vendor.name Texas Instruments - - vendor.id pci 0x104c -&device.id pci 0x0500 -+device.name 100 MBit LAN Controller - - vendor.id pci 0x104c -&device.id pci 0x0508 -+device.name TMS380C2X Compressor Interface - - vendor.id pci 0x104c -&device.id pci 0x1000 -+device.name Eagle i/f AS - - vendor.id pci 0x104c -&device.id pci 0x104c -+device.name PCI1510 PC card Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0x3d04 -+device.name TVP4010 [Permedia] - - vendor.id pci 0x104c -&device.id pci 0x3d07 -+device.name TVP4020 [Permedia 2] - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1011 -&subdevice.id pci 0x4d10 -+subdevice.name Comet - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1040 -&subdevice.id pci 0x000f -+subdevice.name AccelStar II - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1040 -&subdevice.id pci 0x0011 -+subdevice.name AccelStar II - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1048 -&subdevice.id pci 0x0a31 -+subdevice.name WINNER 2000 - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1048 -&subdevice.id pci 0x0a32 -+subdevice.name GLoria Synergy - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1048 -&subdevice.id pci 0x0a35 -+subdevice.name GLoria Synergy - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x107d -&subdevice.id pci 0x2633 -+subdevice.name WinFast 3D L2300 - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0127 -+subdevice.name FIRE GL 1000 PRO - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0136 -+subdevice.name FIRE GL 1000 PRO - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0141 -+subdevice.name FIRE GL 1000 PRO - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0146 -+subdevice.name FIRE GL 1000 PRO - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0148 -+subdevice.name FIRE GL 1000 PRO - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0149 -+subdevice.name FIRE GL 1000 PRO - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0152 -+subdevice.name FIRE GL 1000 PRO - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0154 -+subdevice.name FIRE GL 1000 PRO - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0155 -+subdevice.name FIRE GL 1000 PRO - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0156 -+subdevice.name FIRE GL 1000 PRO - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0157 -+subdevice.name FIRE GL 1000 PRO - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1097 -&subdevice.id pci 0x3d01 -+subdevice.name Jeronimo Pro - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x100f -+subdevice.name Graphics Blaster Extreme - - vendor.id pci 0x104c -&device.id pci 0x3d07 -&subvendor.id pci 0x3d3d -&subdevice.id pci 0x0100 -+subdevice.name Reference Permedia 2 3D - - vendor.id pci 0x104c -&device.id pci 0x8000 -+device.name PCILynx/PCILynx2 IEEE 1394 Link Layer Controller - - vendor.id pci 0x104c -&device.id pci 0x8000 -&subvendor.id pci 0xe4bf -&subdevice.id pci 0x1010 -+subdevice.name CF1-1-SNARE - - vendor.id pci 0x104c -&device.id pci 0x8000 -&subvendor.id pci 0xe4bf -&subdevice.id pci 0x1020 -+subdevice.name CF1-2-SNARE - - vendor.id pci 0x104c -&device.id pci 0x8009 -+device.name FireWire Controller - - vendor.id pci 0x104c -&device.id pci 0x8009 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8032 -+subdevice.name 8032 OHCI i.LINK (IEEE 1394) Controller - - vendor.id pci 0x104c -&device.id pci 0x8017 -+device.name PCI4410 FireWire Controller - - vendor.id pci 0x104c -&device.id pci 0x8019 -+device.name TSB12LV23 IEEE-1394 Controller - - vendor.id pci 0x104c -&device.id pci 0x8019 -&subvendor.id pci 0x11bd -&subdevice.id pci 0x000a -+subdevice.name Studio DV500-1394 - - vendor.id pci 0x104c -&device.id pci 0x8019 -&subvendor.id pci 0x11bd -&subdevice.id pci 0x000e -+subdevice.name Studio DV - - vendor.id pci 0x104c -&device.id pci 0x8019 -&subvendor.id pci 0xe4bf -&subdevice.id pci 0x1010 -+subdevice.name CF2-1-CYMBAL - - vendor.id pci 0x104c -&device.id pci 0x8020 -+device.name TSB12LV26 IEEE-1394 Controller (Link) - - vendor.id pci 0x104c -&device.id pci 0x8021 -+device.name TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated) - - vendor.id pci 0x104c -&device.id pci 0x8021 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80df -+subdevice.name Vaio PCG-FX403 - - vendor.id pci 0x104c -&device.id pci 0x8021 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80e7 -+subdevice.name VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - - vendor.id pci 0x104c -&device.id pci 0x8022 -+device.name TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link) - - vendor.id pci 0x104c -&device.id pci 0x8023 -+device.name TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link) - - vendor.id pci 0x104c -&device.id pci 0x8024 -+device.name TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) - - vendor.id pci 0x104c -&device.id pci 0x8025 -+device.name TSB82AA2 IEEE-1394b Link Layer Controller - - vendor.id pci 0x104c -&device.id pci 0x8025 -&subvendor.id pci 0x55aa -&subdevice.id pci 0x55aa -+subdevice.name FireWire 800 PCI Card - - vendor.id pci 0x104c -&device.id pci 0x8026 -+device.name TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) - - vendor.id pci 0x104c -&device.id pci 0x8027 -+device.name PCI4451 IEEE-1394 Controller - - vendor.id pci 0x104c -&device.id pci 0x8027 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00e6 -+subdevice.name PCI4451 IEEE-1394 Controller (Dell Inspiron 8100) - - vendor.id pci 0x104c -&device.id pci 0x8029 -+device.name PCI4510 IEEE-1394 Controller - - vendor.id pci 0x104c -&device.id pci 0x8029 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0163 -+subdevice.name Latitude D505 - - vendor.id pci 0x104c -&device.id pci 0x8029 -&subvendor.id pci 0x1071 -&subdevice.id pci 0x8160 -+subdevice.name MIM2900 - - vendor.id pci 0x104c -&device.id pci 0x802e -+device.name PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller - - vendor.id pci 0x104c -&device.id pci 0x8201 -+device.name PCI1620 Firmware Loading Function - - vendor.id pci 0x104c -&device.id pci 0x8400 -+device.name ACX 100 22Mbps Wireless Interface - - vendor.id pci 0x104c -&device.id pci 0x8400 -&subvendor.id pci 0x00fc -&subdevice.id pci 0x16ec -+subdevice.name U.S. Robotics 22 Mbps Wireless PC Card (model 2210) - - vendor.id pci 0x104c -&device.id pci 0x8400 -&subvendor.id pci 0x00fd -&subdevice.id pci 0x16ec -+subdevice.name U.S. Robotics 22Mbps Wireless PCI Adapter (model 2216) - - vendor.id pci 0x104c -&device.id pci 0x8400 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x3b00 -+subdevice.name DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus] - - vendor.id pci 0x104c -&device.id pci 0x8400 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x3b01 -+subdevice.name DWL-520+ 22Mbps PCI Wireless Adapter - - vendor.id pci 0x104c -&device.id pci 0x8401 -+device.name ACX 100 22Mbps Wireless Interface - - vendor.id pci 0x104c -&device.id pci 0x9000 -+device.name Wireless Interface (of unknown type) - - vendor.id pci 0x104c -&device.id pci 0x9066 -+device.name ACX 111 54Mbps Wireless Interface - - vendor.id pci 0x104c -&device.id pci 0xa001 -+device.name TDC1570 - - vendor.id pci 0x104c -&device.id pci 0xa100 -+device.name TDC1561 - - vendor.id pci 0x104c -&device.id pci 0xa102 -+device.name TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f - - vendor.id pci 0x104c -&device.id pci 0xa106 -+device.name TMS320C6205 Fixed Point DSP - - vendor.id pci 0x104c -&device.id pci 0xa106 -&subvendor.id pci 0x175c -&subdevice.id pci 0x5000 -+subdevice.name ASI50xx Audio Adapter - - vendor.id pci 0x104c -&device.id pci 0xa106 -&subvendor.id pci 0x175c -&subdevice.id pci 0x8700 -+subdevice.name ASI87xx Radio Tuner card - - vendor.id pci 0x104c -&device.id pci 0xac10 -+device.name PCI1050 - - vendor.id pci 0x104c -&device.id pci 0xac11 -+device.name PCI1053 - - vendor.id pci 0x104c -&device.id pci 0xac12 -+device.name PCI1130 - - vendor.id pci 0x104c -&device.id pci 0xac13 -+device.name PCI1031 - - vendor.id pci 0x104c -&device.id pci 0xac15 -+device.name PCI1131 - - vendor.id pci 0x104c -&device.id pci 0xac16 -+device.name PCI1250 - - vendor.id pci 0x104c -&device.id pci 0xac16 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0092 -+subdevice.name ThinkPad 600 - - vendor.id pci 0x104c -&device.id pci 0xac17 -+device.name PCI1220 - - vendor.id pci 0x104c -&device.id pci 0xac18 -+device.name PCI1260 - - vendor.id pci 0x104c -&device.id pci 0xac19 -+device.name PCI1221 - - vendor.id pci 0x104c -&device.id pci 0xac1a -+device.name PCI1210 - - vendor.id pci 0x104c -&device.id pci 0xac1b -+device.name PCI1450 - - vendor.id pci 0x104c -&device.id pci 0xac1b -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb113 -+subdevice.name Armada M700 - - vendor.id pci 0x104c -&device.id pci 0xac1c -+device.name PCI1225 - - vendor.id pci 0x104c -&device.id pci 0xac1c -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb121 -+subdevice.name Armada E500 - - vendor.id pci 0x104c -&device.id pci 0xac1c -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0088 -+subdevice.name Dell Computer Corporation Latitude CPi A400XT - - vendor.id pci 0x104c -&device.id pci 0xac1d -+device.name PCI1251A - - vendor.id pci 0x104c -&device.id pci 0xac1e -+device.name PCI1211 - - vendor.id pci 0x104c -&device.id pci 0xac1f -+device.name PCI1251B - - vendor.id pci 0x104c -&device.id pci 0xac20 -+device.name TI 2030 - - vendor.id pci 0x104c -&device.id pci 0xac21 -+device.name PCI2031 - - vendor.id pci 0x104c -&device.id pci 0xac22 -+device.name PCI2032 PCI Docking Bridge - - vendor.id pci 0x104c -&device.id pci 0xac23 -+device.name PCI2250 PCI-to-PCI Bridge - - vendor.id pci 0x104c -&device.id pci 0xac28 -+device.name PCI2050 PCI-to-PCI Bridge - - vendor.id pci 0x104c -&device.id pci 0xac30 -+device.name PCI1260 PC card Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0xac40 -+device.name PCI4450 PC card Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0xac41 -+device.name PCI4410 PC card Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0xac42 -+device.name PCI4451 PC card Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0xac42 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00e6 -+subdevice.name PCI4451 PC card CardBus Controller (Dell Inspiron 8100) - - vendor.id pci 0x104c -&device.id pci 0xac44 -+device.name PCI4510 PC card Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0xac44 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0163 -+subdevice.name Latitude D505 - - vendor.id pci 0x104c -&device.id pci 0xac44 -&subvendor.id pci 0x1071 -&subdevice.id pci 0x8160 -+subdevice.name MIM2000 - - vendor.id pci 0x104c -&device.id pci 0xac46 -+device.name PCI4520 PC card Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0xac50 -+device.name PCI1410 PC card Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0xac51 -+device.name PCI1420 - - vendor.id pci 0x104c -&device.id pci 0xac51 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x023b -+subdevice.name ThinkPad T23 (2647-4MG) - - vendor.id pci 0x104c -&device.id pci 0xac51 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00b1 -+subdevice.name Latitude C600 - - vendor.id pci 0x104c -&device.id pci 0xac51 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x012a -+subdevice.name Latitude C640 - - vendor.id pci 0x104c -&device.id pci 0xac51 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x80cd -+subdevice.name Versa Note VXi - - vendor.id pci 0x104c -&device.id pci 0xac51 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1095 -+subdevice.name Lifebook C6155 - - vendor.id pci 0x104c -&device.id pci 0xac51 -&subvendor.id pci 0xe4bf -&subdevice.id pci 0x1000 -+subdevice.name CP2-2-HIPHOP - - vendor.id pci 0x104c -&device.id pci 0xac52 -+device.name PCI1451 PC card Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0xac53 -+device.name PCI1421 PC card Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0xac54 -+device.name PCI1620 PC Card Controller - - vendor.id pci 0x104c -&device.id pci 0xac55 -+device.name PCI1520 PC card Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0xac55 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0512 -+subdevice.name ThinkPad T30/T40 - - vendor.id pci 0x104c -&device.id pci 0xac56 -+device.name PCI1510 PC card Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0xac56 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0528 -+subdevice.name ThinkPad R40e (2684-HVG) Cardbus Controller - - vendor.id pci 0x104c -&device.id pci 0xac60 -+device.name PCI2040 PCI to DSP Bridge Controller - - vendor.id pci 0x104c -&device.id pci 0xac60 -&subvendor.id pci 0x175c -&subdevice.id pci 0x5100 -+subdevice.name ASI51xx Audio Adapter - - vendor.id pci 0x104c -&device.id pci 0xac60 -&subvendor.id pci 0x175c -&subdevice.id pci 0x6100 -+subdevice.name ASI61xx Audio Adapter - - vendor.id pci 0x104c -&device.id pci 0xac60 -&subvendor.id pci 0x175c -&subdevice.id pci 0x6200 -+subdevice.name ASI62xx Audio Adapter - - vendor.id pci 0x104c -&device.id pci 0xac8d -+device.name PCI 7620 - - vendor.id pci 0x104c -&device.id pci 0xac8e -+device.name PCI7420 CardBus Controller - - vendor.id pci 0x104c -&device.id pci 0xac8f -+device.name PCI7420/PCI7620 Dual Socket CardBus and Smart Card Cont. w/ 1394a-2000 OHCI Two-Port PHY/Link-Layer Cont. and SD/MS-Pro Sockets - - vendor.id pci 0x104c -&device.id pci 0xfe00 -+device.name FireWire Host Controller - - vendor.id pci 0x104c -&device.id pci 0xfe03 -+device.name 12C01A FireWire Host Controller - - vendor.id pci 0x104d -+vendor.name Sony Corporation - - vendor.id pci 0x104d -&device.id pci 0x8009 -+device.name CXD1947Q i.LINK Controller - - vendor.id pci 0x104d -&device.id pci 0x8039 -+device.name CXD3222 i.LINK Controller - - vendor.id pci 0x104d -&device.id pci 0x8056 -+device.name Rockwell HCF 56K modem - - vendor.id pci 0x104d -&device.id pci 0x808a -+device.name Memory Stick Controller - - vendor.id pci 0x104e -+vendor.name Oak Technology, Inc - - vendor.id pci 0x104e -&device.id pci 0x0017 -+device.name OTI-64017 - - vendor.id pci 0x104e -&device.id pci 0x0107 -+device.name OTI-107 [Spitfire] - - vendor.id pci 0x104e -&device.id pci 0x0109 -+device.name Video Adapter - - vendor.id pci 0x104e -&device.id pci 0x0111 -+device.name OTI-64111 [Spitfire] - - vendor.id pci 0x104e -&device.id pci 0x0217 -+device.name OTI-64217 - - vendor.id pci 0x104e -&device.id pci 0x0317 -+device.name OTI-64317 - - vendor.id pci 0x104f -+vendor.name Co-time Computer Ltd - - vendor.id pci 0x1050 -+vendor.name Winbond Electronics Corp - - vendor.id pci 0x1050 -&device.id pci 0x0000 -+device.name NE2000 - - vendor.id pci 0x1050 -&device.id pci 0x0001 -+device.name W83769F - - vendor.id pci 0x1050 -&device.id pci 0x0105 -+device.name W82C105 - - vendor.id pci 0x1050 -&device.id pci 0x0840 -+device.name W89C840 - - vendor.id pci 0x1050 -&device.id pci 0x0840 -&subvendor.id pci 0x1050 -&subdevice.id pci 0x0001 -+subdevice.name W89C840 Ethernet Adapter - - vendor.id pci 0x1050 -&device.id pci 0x0840 -&subvendor.id pci 0x1050 -&subdevice.id pci 0x0840 -+subdevice.name W89C840 Ethernet Adapter - - vendor.id pci 0x1050 -&device.id pci 0x0940 -+device.name W89C940 - - vendor.id pci 0x1050 -&device.id pci 0x5a5a -+device.name W89C940F - - vendor.id pci 0x1050 -&device.id pci 0x6692 -+device.name W6692 - - vendor.id pci 0x1050 -&device.id pci 0x9921 -+device.name W99200F MPEG-1 Video Encoder - - vendor.id pci 0x1050 -&device.id pci 0x9922 -+device.name W99200F/W9922PF MPEG-1/2 Video Encoder - - vendor.id pci 0x1050 -&device.id pci 0x9970 -+device.name W9970CF - - vendor.id pci 0x1051 -+vendor.name Anigma, Inc. - - vendor.id pci 0x1052 -+vendor.name ?Young Micro Systems - - vendor.id pci 0x1053 -+vendor.name Young Micro Systems - - vendor.id pci 0x1054 -+vendor.name Hitachi, Ltd - - vendor.id pci 0x1055 -+vendor.name Efar Microsystems - - vendor.id pci 0x1055 -&device.id pci 0x9130 -+device.name SLC90E66 [Victory66] IDE - - vendor.id pci 0x1055 -&device.id pci 0x9460 -+device.name SLC90E66 [Victory66] ISA - - vendor.id pci 0x1055 -&device.id pci 0x9462 -+device.name SLC90E66 [Victory66] USB - - vendor.id pci 0x1055 -&device.id pci 0x9463 -+device.name SLC90E66 [Victory66] ACPI - - vendor.id pci 0x1056 -+vendor.name ICL - - vendor.id pci 0x1057 -+vendor.name Motorola - - vendor.id pci 0x1057 -&device.id pci 0x0001 -+device.name MPC105 [Eagle] - - vendor.id pci 0x1057 -&device.id pci 0x0002 -+device.name MPC106 [Grackle] - - vendor.id pci 0x1057 -&device.id pci 0x0003 -+device.name MPC8240 [Kahlua] - - vendor.id pci 0x1057 -&device.id pci 0x0004 -+device.name MPC107 - - vendor.id pci 0x1057 -&device.id pci 0x0006 -+device.name MPC8245 [Unity] - - vendor.id pci 0x1057 -&device.id pci 0x0008 -+device.name MPC8540 - - vendor.id pci 0x1057 -&device.id pci 0x0009 -+device.name MPC8560 - - vendor.id pci 0x1057 -&device.id pci 0x0100 -+device.name MC145575 [HFC-PCI] - - vendor.id pci 0x1057 -&device.id pci 0x0431 -+device.name KTI829c 100VG - - vendor.id pci 0x1057 -&device.id pci 0x1801 -+device.name DSP56301 Digital Signal Processor - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x14fb -&subdevice.id pci 0x0101 -+subdevice.name Transas Radar Imitator Board [RIM] - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x14fb -&subdevice.id pci 0x0102 -+subdevice.name Transas Radar Imitator Board [RIM-2] - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x14fb -&subdevice.id pci 0x0202 -+subdevice.name Transas Radar Integrator Board [RIB-2] - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x14fb -&subdevice.id pci 0x0611 -+subdevice.name 1 channel CAN bus Controller [CanPci-1] - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x14fb -&subdevice.id pci 0x0612 -+subdevice.name 2 channels CAN bus Controller [CanPci-2] - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x14fb -&subdevice.id pci 0x0613 -+subdevice.name 3 channels CAN bus Controller [CanPci-3] - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x14fb -&subdevice.id pci 0x0614 -+subdevice.name 4 channels CAN bus Controller [CanPci-4] - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x14fb -&subdevice.id pci 0x0621 -+subdevice.name 1 channel CAN bus Controller [CanPci2-1] - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x14fb -&subdevice.id pci 0x0622 -+subdevice.name 2 channels CAN bus Controller [CanPci2-2] - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x14fb -&subdevice.id pci 0x0810 -+subdevice.name Transas VTS Radar Integrator Board [RIB-4] - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x175c -&subdevice.id pci 0x4200 -+subdevice.name ASI4215 Audio Adapter - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x175c -&subdevice.id pci 0x4300 -+subdevice.name ASI43xx Audio Adapter - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0x175c -&subdevice.id pci 0x4400 -+subdevice.name ASI4401 Audio Adapter - - vendor.id pci 0x1057 -&device.id pci 0x1801 -&subvendor.id pci 0xecc0 -&subdevice.id pci 0x0030 -+subdevice.name Layla - - vendor.id pci 0x1057 -&device.id pci 0x18c0 -+device.name MPC8265A/MPC8266 - - vendor.id pci 0x1057 -&device.id pci 0x18c1 -+device.name MPC8271/MPC8272 - - vendor.id pci 0x1057 -&device.id pci 0x4801 -+device.name Raven - - vendor.id pci 0x1057 -&device.id pci 0x4802 -+device.name Falcon - - vendor.id pci 0x1057 -&device.id pci 0x4803 -+device.name Hawk - - vendor.id pci 0x1057 -&device.id pci 0x4806 -+device.name CPX8216 - - vendor.id pci 0x1057 -&device.id pci 0x4d68 -+device.name 20268 - - vendor.id pci 0x1057 -&device.id pci 0x5600 -+device.name SM56 PCI Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x1057 -&subdevice.id pci 0x0300 -+subdevice.name SM56 PCI Speakerphone Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x1057 -&subdevice.id pci 0x0301 -+subdevice.name SM56 PCI Voice Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x1057 -&subdevice.id pci 0x0302 -+subdevice.name SM56 PCI Fax Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x1057 -&subdevice.id pci 0x5600 -+subdevice.name SM56 PCI Voice modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x13d2 -&subdevice.id pci 0x0300 -+subdevice.name SM56 PCI Speakerphone Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x13d2 -&subdevice.id pci 0x0301 -+subdevice.name SM56 PCI Voice modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x13d2 -&subdevice.id pci 0x0302 -+subdevice.name SM56 PCI Fax Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x0300 -+subdevice.name SM56 PCI Speakerphone Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x0301 -+subdevice.name SM56 PCI Voice modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x0302 -+subdevice.name SM56 PCI Fax Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x144f -&subdevice.id pci 0x100c -+subdevice.name SM56 PCI Fax Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x1494 -&subdevice.id pci 0x0300 -+subdevice.name SM56 PCI Speakerphone Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x1494 -&subdevice.id pci 0x0301 -+subdevice.name SM56 PCI Voice modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x14c8 -&subdevice.id pci 0x0300 -+subdevice.name SM56 PCI Speakerphone Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x14c8 -&subdevice.id pci 0x0302 -+subdevice.name SM56 PCI Fax Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x1668 -&subdevice.id pci 0x0300 -+subdevice.name SM56 PCI Speakerphone Modem - - vendor.id pci 0x1057 -&device.id pci 0x5600 -&subvendor.id pci 0x1668 -&subdevice.id pci 0x0302 -+subdevice.name SM56 PCI Fax Modem - - vendor.id pci 0x1057 -&device.id pci 0x5803 -+device.name MPC5200 - - vendor.id pci 0x1057 -&device.id pci 0x6400 -+device.name MPC190 Security Processor (S1 family, encryption) - - vendor.id pci 0x1057 -&device.id pci 0x6405 -+device.name MPC184 Security Processor (S1 family) - - vendor.id pci 0x1058 -+vendor.name Electronics & Telecommunications RSH - - vendor.id pci 0x1059 -+vendor.name Teknor Industrial Computers Inc - - vendor.id pci 0x105a -+vendor.name Promise Technology, Inc. - - vendor.id pci 0x105a -&device.id pci 0x0d30 -+device.name PDC20265 (FastTrak100 Lite/Ultra100) - - vendor.id pci 0x105a -&device.id pci 0x0d30 -&subvendor.id pci 0x105a -&subdevice.id pci 0x4d33 -+subdevice.name Ultra100 - - vendor.id pci 0x105a -&device.id pci 0x0d38 -+device.name 20263 - - vendor.id pci 0x105a -&device.id pci 0x0d38 -&subvendor.id pci 0x105a -&subdevice.id pci 0x4d39 -+subdevice.name Fasttrak66 - - vendor.id pci 0x105a -&device.id pci 0x1275 -+device.name 20275 - - vendor.id pci 0x105a -&device.id pci 0x3318 -+device.name PDC20318 (SATA150 TX4) - - vendor.id pci 0x105a -&device.id pci 0x3319 -+device.name PDC20319 (FastTrak S150 TX4) - - vendor.id pci 0x105a -&device.id pci 0x3319 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3427 -+subdevice.name S875WP1-E mainboard - - vendor.id pci 0x105a -&device.id pci 0x3371 -+device.name PDC20371 (FastTrak S150 TX2plus) - - vendor.id pci 0x105a -&device.id pci 0x3373 -+device.name PDC20378 (FastTrak 378/SATA 378) - - vendor.id pci 0x105a -&device.id pci 0x3373 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80f5 -+subdevice.name PC-DL Deluxe motherboard - - vendor.id pci 0x105a -&device.id pci 0x3373 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x702e -+subdevice.name K8T NEO FIS2R motherboard - - vendor.id pci 0x105a -&device.id pci 0x3375 -+device.name PDC20375 (SATA150 TX2plus) - - vendor.id pci 0x105a -&device.id pci 0x3376 -+device.name PDC20376 (FastTrak 376) - - vendor.id pci 0x105a -&device.id pci 0x3376 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x809e -+subdevice.name A7V8X motherboard - - vendor.id pci 0x105a -&device.id pci 0x3574 -+device.name PDC20579 SATAII 150 IDE Controller - - vendor.id pci 0x105a -&device.id pci 0x3d18 -+device.name PDC20518 SATAII 150 IDE Controller - - vendor.id pci 0x105a -&device.id pci 0x4d30 -+device.name PDC20267 (FastTrak100/Ultra100) - - vendor.id pci 0x105a -&device.id pci 0x4d30 -&subvendor.id pci 0x105a -&subdevice.id pci 0x4d33 -+subdevice.name Ultra100 - - vendor.id pci 0x105a -&device.id pci 0x4d30 -&subvendor.id pci 0x105a -&subdevice.id pci 0x4d39 -+subdevice.name FastTrak100 - - vendor.id pci 0x105a -&device.id pci 0x4d33 -+device.name 20246 - - vendor.id pci 0x105a -&device.id pci 0x4d33 -&subvendor.id pci 0x105a -&subdevice.id pci 0x4d33 -+subdevice.name 20246 IDE Controller - - vendor.id pci 0x105a -&device.id pci 0x4d38 -+device.name PDC20262 (FastTrak66/Ultra66) - - vendor.id pci 0x105a -&device.id pci 0x4d38 -&subvendor.id pci 0x105a -&subdevice.id pci 0x4d30 -+subdevice.name Ultra Device on SuperTrak - - vendor.id pci 0x105a -&device.id pci 0x4d38 -&subvendor.id pci 0x105a -&subdevice.id pci 0x4d33 -+subdevice.name Ultra66 - - vendor.id pci 0x105a -&device.id pci 0x4d38 -&subvendor.id pci 0x105a -&subdevice.id pci 0x4d39 -+subdevice.name FastTrak66 - - vendor.id pci 0x105a -&device.id pci 0x4d68 -+device.name PDC20268 (Ultra100 TX2) - - vendor.id pci 0x105a -&device.id pci 0x4d68 -&subvendor.id pci 0x105a -&subdevice.id pci 0x4d68 -+subdevice.name Ultra100TX2 - - vendor.id pci 0x105a -&device.id pci 0x4d69 -+device.name 20269 - - vendor.id pci 0x105a -&device.id pci 0x4d69 -&subvendor.id pci 0x105a -&subdevice.id pci 0x4d68 -+subdevice.name Ultra133TX2 - - vendor.id pci 0x105a -&device.id pci 0x5275 -+device.name PDC20276 (MBFastTrak133 Lite) - - vendor.id pci 0x105a -&device.id pci 0x5275 -&subvendor.id pci 0x105a -&subdevice.id pci 0x0275 -+subdevice.name SuperTrak SX6000 IDE - - vendor.id pci 0x105a -&device.id pci 0x5275 -&subvendor.id pci 0x105a -&subdevice.id pci 0x1275 -+subdevice.name MBFastTrak133 Lite (tm) Controller (RAID mode) - - vendor.id pci 0x105a -&device.id pci 0x5275 -&subvendor.id pci 0x1458 -&subdevice.id pci 0xb001 -+subdevice.name MBUltra 133 - - vendor.id pci 0x105a -&device.id pci 0x5300 -+device.name DC5300 - - vendor.id pci 0x105a -&device.id pci 0x6268 -+device.name PDC20270 (FastTrak100 LP/TX2/TX4) - - vendor.id pci 0x105a -&device.id pci 0x6268 -&subvendor.id pci 0x105a -&subdevice.id pci 0x4d68 -+subdevice.name FastTrak100 TX2 - - vendor.id pci 0x105a -&device.id pci 0x6269 -+device.name PDC20271 (FastTrak TX2000) - - vendor.id pci 0x105a -&device.id pci 0x6269 -&subvendor.id pci 0x105a -&subdevice.id pci 0x6269 -+subdevice.name FastTrak TX2/TX2000 - - vendor.id pci 0x105a -&device.id pci 0x6621 -+device.name PDC20621 (FastTrak S150 SX4/FastTrak SX4000 lite) - - vendor.id pci 0x105a -&device.id pci 0x6622 -+device.name PDC20621 [SATA150 SX4] 4 Channel IDE RAID Controller - - vendor.id pci 0x105a -&device.id pci 0x6626 -+device.name PDC20618 (Ultra 618) - - vendor.id pci 0x105a -&device.id pci 0x6629 -+device.name PDC20619 (FastTrak TX4000) - - vendor.id pci 0x105a -&device.id pci 0x7275 -+device.name PDC20277 (SBFastTrak133 Lite) - - vendor.id pci 0x105b -+vendor.name Foxconn International, Inc. - - vendor.id pci 0x105c -+vendor.name Wipro Infotech Limited - - vendor.id pci 0x105d -+vendor.name Number 9 Computer Company - - vendor.id pci 0x105d -&device.id pci 0x2309 -+device.name Imagine 128 - - vendor.id pci 0x105d -&device.id pci 0x2339 -+device.name Imagine 128-II - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x105d -&subdevice.id pci 0x0000 -+subdevice.name Imagine 128 series 2 4Mb VRAM - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x105d -&subdevice.id pci 0x0001 -+subdevice.name Imagine 128 series 2 4Mb VRAM - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x105d -&subdevice.id pci 0x0002 -+subdevice.name Imagine 128 series 2 4Mb VRAM - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x105d -&subdevice.id pci 0x0003 -+subdevice.name Imagine 128 series 2 4Mb VRAM - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x105d -&subdevice.id pci 0x0004 -+subdevice.name Imagine 128 series 2 4Mb VRAM - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x105d -&subdevice.id pci 0x0005 -+subdevice.name Imagine 128 series 2 4Mb VRAM - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x105d -&subdevice.id pci 0x0006 -+subdevice.name Imagine 128 series 2 4Mb VRAM - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x105d -&subdevice.id pci 0x0007 -+subdevice.name Imagine 128 series 2 4Mb VRAM - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x105d -&subdevice.id pci 0x0008 -+subdevice.name Imagine 128 series 2e 4Mb DRAM - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x105d -&subdevice.id pci 0x0009 -+subdevice.name Imagine 128 series 2e 4Mb DRAM - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x105d -&subdevice.id pci 0x000a -+subdevice.name Imagine 128 series 2 8Mb VRAM - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x105d -&subdevice.id pci 0x000b -+subdevice.name Imagine 128 series 2 8Mb H-VRAM - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x11a4 -&subdevice.id pci 0x000a -+subdevice.name Barco Metheus 5 Megapixel - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x13cc -&subdevice.id pci 0x0000 -+subdevice.name Barco Metheus 5 Megapixel - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x13cc -&subdevice.id pci 0x0004 -+subdevice.name Barco Metheus 5 Megapixel - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x13cc -&subdevice.id pci 0x0005 -+subdevice.name Barco Metheus 5 Megapixel - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x13cc -&subdevice.id pci 0x0006 -+subdevice.name Barco Metheus 5 Megapixel - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x13cc -&subdevice.id pci 0x0008 -+subdevice.name Barco Metheus 5 Megapixel - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x13cc -&subdevice.id pci 0x0009 -+subdevice.name Barco Metheus 5 Megapixel - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x13cc -&subdevice.id pci 0x000a -+subdevice.name Barco Metheus 5 Megapixel - - vendor.id pci 0x105d -&device.id pci 0x2339 -&subvendor.id pci 0x13cc -&subdevice.id pci 0x000c -+subdevice.name Barco Metheus 5 Megapixel - - vendor.id pci 0x105d -&device.id pci 0x493d -+device.name Imagine 128 T2R [Ticket to Ride] - - vendor.id pci 0x105d -&device.id pci 0x493d -&subvendor.id pci 0x11a4 -&subdevice.id pci 0x000a -+subdevice.name Barco Metheus 5 Megapixel, Dual Head - - vendor.id pci 0x105d -&device.id pci 0x493d -&subvendor.id pci 0x11a4 -&subdevice.id pci 0x000b -+subdevice.name Barco Metheus 5 Megapixel, Dual Head - - vendor.id pci 0x105d -&device.id pci 0x493d -&subvendor.id pci 0x13cc -&subdevice.id pci 0x0002 -+subdevice.name Barco Metheus 4 Megapixel, Dual Head - - vendor.id pci 0x105d -&device.id pci 0x493d -&subvendor.id pci 0x13cc -&subdevice.id pci 0x0003 -+subdevice.name Barco Metheus 5 Megapixel, Dual Head - - vendor.id pci 0x105d -&device.id pci 0x493d -&subvendor.id pci 0x13cc -&subdevice.id pci 0x0007 -+subdevice.name Barco Metheus 5 Megapixel, Dual Head - - vendor.id pci 0x105d -&device.id pci 0x493d -&subvendor.id pci 0x13cc -&subdevice.id pci 0x0008 -+subdevice.name Barco Metheus 5 Megapixel, Dual Head - - vendor.id pci 0x105d -&device.id pci 0x493d -&subvendor.id pci 0x13cc -&subdevice.id pci 0x0009 -+subdevice.name Barco Metheus 5 Megapixel, Dual Head - - vendor.id pci 0x105d -&device.id pci 0x493d -&subvendor.id pci 0x13cc -&subdevice.id pci 0x000a -+subdevice.name Barco Metheus 5 Megapixel, Dual Head - - vendor.id pci 0x105d -&device.id pci 0x5348 -+device.name Revolution 4 - - vendor.id pci 0x105d -&device.id pci 0x5348 -&subvendor.id pci 0x105d -&subdevice.id pci 0x0037 -+subdevice.name Revolution IV-FP AGP (For SGI 1600SW) - - vendor.id pci 0x105e -+vendor.name Vtech Computers Ltd - - vendor.id pci 0x105f -+vendor.name Infotronic America Inc - - vendor.id pci 0x1060 -+vendor.name United Microelectronics [UMC] - - vendor.id pci 0x1060 -&device.id pci 0x0001 -+device.name UM82C881 - - vendor.id pci 0x1060 -&device.id pci 0x0002 -+device.name UM82C886 - - vendor.id pci 0x1060 -&device.id pci 0x0101 -+device.name UM8673F - - vendor.id pci 0x1060 -&device.id pci 0x0881 -+device.name UM8881 - - vendor.id pci 0x1060 -&device.id pci 0x0886 -+device.name UM8886F - - vendor.id pci 0x1060 -&device.id pci 0x0891 -+device.name UM8891A - - vendor.id pci 0x1060 -&device.id pci 0x1001 -+device.name UM886A - - vendor.id pci 0x1060 -&device.id pci 0x673a -+device.name UM8886BF - - vendor.id pci 0x1060 -&device.id pci 0x673b -+device.name EIDE Master/DMA - - vendor.id pci 0x1060 -&device.id pci 0x8710 -+device.name UM8710 - - vendor.id pci 0x1060 -&device.id pci 0x886a -+device.name UM8886A - - vendor.id pci 0x1060 -&device.id pci 0x8881 -+device.name UM8881F - - vendor.id pci 0x1060 -&device.id pci 0x8886 -+device.name UM8886F - - vendor.id pci 0x1060 -&device.id pci 0x888a -+device.name UM8886A - - vendor.id pci 0x1060 -&device.id pci 0x8891 -+device.name UM8891A - - vendor.id pci 0x1060 -&device.id pci 0x9017 -+device.name UM9017F - - vendor.id pci 0x1060 -&device.id pci 0x9018 -+device.name UM9018 - - vendor.id pci 0x1060 -&device.id pci 0x9026 -+device.name UM9026 - - vendor.id pci 0x1060 -&device.id pci 0xe881 -+device.name UM8881N - - vendor.id pci 0x1060 -&device.id pci 0xe886 -+device.name UM8886N - - vendor.id pci 0x1060 -&device.id pci 0xe88a -+device.name UM8886N - - vendor.id pci 0x1060 -&device.id pci 0xe891 -+device.name UM8891N - - vendor.id pci 0x1061 -+vendor.name I.I.T. - - vendor.id pci 0x1061 -&device.id pci 0x0001 -+device.name AGX016 - - vendor.id pci 0x1061 -&device.id pci 0x0002 -+device.name IIT3204/3501 - - vendor.id pci 0x1062 -+vendor.name Maspar Computer Corp - - vendor.id pci 0x1063 -+vendor.name Ocean Office Automation - - vendor.id pci 0x1064 -+vendor.name Alcatel - - vendor.id pci 0x1065 -+vendor.name Texas Microsystems - - vendor.id pci 0x1066 -+vendor.name PicoPower Technology - - vendor.id pci 0x1066 -&device.id pci 0x0000 -+device.name PT80C826 - - vendor.id pci 0x1066 -&device.id pci 0x0001 -+device.name PT86C521 [Vesuvius v1] Host Bridge - - vendor.id pci 0x1066 -&device.id pci 0x0002 -+device.name PT86C523 [Vesuvius v3] PCI-ISA Bridge Master - - vendor.id pci 0x1066 -&device.id pci 0x0003 -+device.name PT86C524 [Nile] PCI-to-PCI Bridge - - vendor.id pci 0x1066 -&device.id pci 0x0004 -+device.name PT86C525 [Nile-II] PCI-to-PCI Bridge - - vendor.id pci 0x1066 -&device.id pci 0x0005 -+device.name National PC87550 System Controller - - vendor.id pci 0x1066 -&device.id pci 0x8002 -+device.name PT86C523 [Vesuvius v3] PCI-ISA Bridge Slave - - vendor.id pci 0x1067 -+vendor.name Mitsubishi Electric - - vendor.id pci 0x1067 -&device.id pci 0x0301 -+device.name AccelGraphics AccelECLIPSE - - vendor.id pci 0x1067 -&device.id pci 0x0304 -+device.name AccelGALAXY A2100 [OEM Evans & Sutherland] - - vendor.id pci 0x1067 -&device.id pci 0x0308 -+device.name Tornado 3000 [OEM Evans & Sutherland] - - vendor.id pci 0x1067 -&device.id pci 0x1002 -+device.name VG500 [VolumePro Volume Rendering Accelerator] - - vendor.id pci 0x1068 -+vendor.name Diversified Technology - - vendor.id pci 0x1069 -+vendor.name Mylex Corporation - - vendor.id pci 0x1069 -&device.id pci 0x0001 -+device.name DAC960P - - vendor.id pci 0x1069 -&device.id pci 0x0002 -+device.name DAC960PD - - vendor.id pci 0x1069 -&device.id pci 0x0010 -+device.name DAC960PG - - vendor.id pci 0x1069 -&device.id pci 0x0020 -+device.name DAC960LA - - vendor.id pci 0x1069 -&device.id pci 0x0050 -+device.name AcceleRAID 352/170/160 support Device - - vendor.id pci 0x1069 -&device.id pci 0xb166 -+device.name Gemstone chipset SCSI controller - - vendor.id pci 0x1069 -&device.id pci 0xb166 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0242 -+subdevice.name iSeries 2872 DASD IOA - - vendor.id pci 0x1069 -&device.id pci 0xb166 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0266 -+subdevice.name Dual Channel PCI-X U320 SCSI Adapter - - vendor.id pci 0x1069 -&device.id pci 0xb166 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0278 -+subdevice.name Dual Channel PCI-X U320 SCSI RAID Adapter - - vendor.id pci 0x1069 -&device.id pci 0xba55 -+device.name eXtremeRAID 1100 support Device - - vendor.id pci 0x1069 -&device.id pci 0xba56 -+device.name eXtremeRAID 2000/3000 support Device - - vendor.id pci 0x106a -+vendor.name Aten Research Inc - - vendor.id pci 0x106b -+vendor.name Apple Computer Inc. - - vendor.id pci 0x106b -&device.id pci 0x0001 -+device.name Bandit PowerPC host bridge - - vendor.id pci 0x106b -&device.id pci 0x0002 -+device.name Grand Central I/O - - vendor.id pci 0x106b -&device.id pci 0x0003 -+device.name Control Video - - vendor.id pci 0x106b -&device.id pci 0x0004 -+device.name PlanB Video-In - - vendor.id pci 0x106b -&device.id pci 0x0007 -+device.name O'Hare I/O - - vendor.id pci 0x106b -&device.id pci 0x000e -+device.name Hydra Mac I/O - - vendor.id pci 0x106b -&device.id pci 0x0010 -+device.name Heathrow Mac I/O - - vendor.id pci 0x106b -&device.id pci 0x0017 -+device.name Paddington Mac I/O - - vendor.id pci 0x106b -&device.id pci 0x0018 -+device.name UniNorth FireWire - - vendor.id pci 0x106b -&device.id pci 0x0019 -+device.name KeyLargo USB - - vendor.id pci 0x106b -&device.id pci 0x001e -+device.name UniNorth Internal PCI - - vendor.id pci 0x106b -&device.id pci 0x001f -+device.name UniNorth PCI - - vendor.id pci 0x106b -&device.id pci 0x0020 -+device.name UniNorth AGP - - vendor.id pci 0x106b -&device.id pci 0x0021 -+device.name UniNorth GMAC (Sun GEM) - - vendor.id pci 0x106b -&device.id pci 0x0022 -+device.name KeyLargo Mac I/O - - vendor.id pci 0x106b -&device.id pci 0x0024 -+device.name UniNorth/Pangea GMAC (Sun GEM) - - vendor.id pci 0x106b -&device.id pci 0x0025 -+device.name KeyLargo/Pangea Mac I/O - - vendor.id pci 0x106b -&device.id pci 0x0026 -+device.name KeyLargo/Pangea USB - - vendor.id pci 0x106b -&device.id pci 0x0027 -+device.name UniNorth/Pangea AGP - - vendor.id pci 0x106b -&device.id pci 0x0028 -+device.name UniNorth/Pangea PCI - - vendor.id pci 0x106b -&device.id pci 0x0029 -+device.name UniNorth/Pangea Internal PCI - - vendor.id pci 0x106b -&device.id pci 0x002d -+device.name UniNorth 1.5 AGP - - vendor.id pci 0x106b -&device.id pci 0x002e -+device.name UniNorth 1.5 PCI - - vendor.id pci 0x106b -&device.id pci 0x002f -+device.name UniNorth 1.5 Internal PCI - - vendor.id pci 0x106b -&device.id pci 0x0030 -+device.name UniNorth/Pangea FireWire - - vendor.id pci 0x106b -&device.id pci 0x0031 -+device.name UniNorth 2 FireWire - - vendor.id pci 0x106b -&device.id pci 0x0032 -+device.name UniNorth 2 GMAC (Sun GEM) - - vendor.id pci 0x106b -&device.id pci 0x0033 -+device.name UniNorth 2 ATA/100 - - vendor.id pci 0x106b -&device.id pci 0x0034 -+device.name UniNorth 2 AGP - - vendor.id pci 0x106b -&device.id pci 0x0035 -+device.name UniNorth 2 PCI - - vendor.id pci 0x106b -&device.id pci 0x0036 -+device.name UniNorth 2 Internal PCI - - vendor.id pci 0x106b -&device.id pci 0x003b -+device.name UniNorth/Intrepid ATA/100 - - vendor.id pci 0x106b -&device.id pci 0x003e -+device.name KeyLargo/Intrepid Mac I/O - - vendor.id pci 0x106b -&device.id pci 0x003f -+device.name KeyLargo/Intrepid USB - - vendor.id pci 0x106b -&device.id pci 0x0040 -+device.name K2 KeyLargo USB - - vendor.id pci 0x106b -&device.id pci 0x0041 -+device.name K2 KeyLargo Mac/IO - - vendor.id pci 0x106b -&device.id pci 0x0042 -+device.name K2 FireWire - - vendor.id pci 0x106b -&device.id pci 0x0043 -+device.name K2 ATA/100 - - vendor.id pci 0x106b -&device.id pci 0x0045 -+device.name K2 HT-PCI Bridge - - vendor.id pci 0x106b -&device.id pci 0x0046 -+device.name K2 HT-PCI Bridge - - vendor.id pci 0x106b -&device.id pci 0x0047 -+device.name K2 HT-PCI Bridge - - vendor.id pci 0x106b -&device.id pci 0x0048 -+device.name K2 HT-PCI Bridge - - vendor.id pci 0x106b -&device.id pci 0x0049 -+device.name K2 HT-PCI Bridge - - vendor.id pci 0x106b -&device.id pci 0x004b -+device.name U3 AGP - - vendor.id pci 0x106b -&device.id pci 0x004c -+device.name K2 GMAC (Sun GEM) - - vendor.id pci 0x106b -&device.id pci 0x004f -+device.name Shasta Mac I/O - - vendor.id pci 0x106b -&device.id pci 0x0050 -+device.name Shasta IDE - - vendor.id pci 0x106b -&device.id pci 0x0051 -+device.name Shasta (Sun GEM) - - vendor.id pci 0x106b -&device.id pci 0x0052 -+device.name Shasta Firewire - - vendor.id pci 0x106b -&device.id pci 0x0053 -+device.name Shasta PCI Bridge - - vendor.id pci 0x106b -&device.id pci 0x0054 -+device.name Shasta PCI Bridge - - vendor.id pci 0x106b -&device.id pci 0x0055 -+device.name Shasta PCI Bridge - - vendor.id pci 0x106b -&device.id pci 0x0058 -+device.name U3L AGP Bridge - - vendor.id pci 0x106b -&device.id pci 0x1645 -+device.name Tigon3 Gigabit Ethernet NIC (BCM5701) - - vendor.id pci 0x106c -+vendor.name Hynix Semiconductor - - vendor.id pci 0x106c -&device.id pci 0x8801 -+device.name Dual Pentium ISA/PCI Motherboard - - vendor.id pci 0x106c -&device.id pci 0x8802 -+device.name PowerPC ISA/PCI Motherboard - - vendor.id pci 0x106c -&device.id pci 0x8803 -+device.name Dual Window Graphics Accelerator - - vendor.id pci 0x106c -&device.id pci 0x8804 -+device.name LAN Controller - - vendor.id pci 0x106c -&device.id pci 0x8805 -+device.name 100-BaseT LAN - - vendor.id pci 0x106d -+vendor.name Sequent Computer Systems - - vendor.id pci 0x106e -+vendor.name DFI, Inc - - vendor.id pci 0x106f -+vendor.name City Gate Development Ltd - - vendor.id pci 0x1070 -+vendor.name Daewoo Telecom Ltd - - vendor.id pci 0x1071 -+vendor.name Mitac - - vendor.id pci 0x1071 -&device.id pci 0x8160 -+device.name Mitac 8060B Mobile Platform - - vendor.id pci 0x1072 -+vendor.name GIT Co Ltd - - vendor.id pci 0x1073 -+vendor.name Yamaha Corporation - - vendor.id pci 0x1073 -&device.id pci 0x0001 -+device.name 3D GUI Accelerator - - vendor.id pci 0x1073 -&device.id pci 0x0002 -+device.name YGV615 [RPA3 3D-Graphics Controller] - - vendor.id pci 0x1073 -&device.id pci 0x0003 -+device.name YMF-740 - - vendor.id pci 0x1073 -&device.id pci 0x0004 -+device.name YMF-724 - - vendor.id pci 0x1073 -&device.id pci 0x0004 -&subvendor.id pci 0x1073 -&subdevice.id pci 0x0004 -+subdevice.name YMF724-Based PCI Audio Adapter - - vendor.id pci 0x1073 -&device.id pci 0x0005 -+device.name DS1 Audio - - vendor.id pci 0x1073 -&device.id pci 0x0005 -&subvendor.id pci 0x1073 -&subdevice.id pci 0x0005 -+subdevice.name DS-XG PCI Audio CODEC - - vendor.id pci 0x1073 -&device.id pci 0x0006 -+device.name DS1 Audio - - vendor.id pci 0x1073 -&device.id pci 0x0008 -+device.name DS1 Audio - - vendor.id pci 0x1073 -&device.id pci 0x0008 -&subvendor.id pci 0x1073 -&subdevice.id pci 0x0008 -+subdevice.name DS-XG PCI Audio CODEC - - vendor.id pci 0x1073 -&device.id pci 0x000a -+device.name DS1L Audio - - vendor.id pci 0x1073 -&device.id pci 0x000a -&subvendor.id pci 0x1073 -&subdevice.id pci 0x0004 -+subdevice.name DS-XG PCI Audio CODEC - - vendor.id pci 0x1073 -&device.id pci 0x000a -&subvendor.id pci 0x1073 -&subdevice.id pci 0x000a -+subdevice.name DS-XG PCI Audio CODEC - - vendor.id pci 0x1073 -&device.id pci 0x000c -+device.name YMF-740C [DS-1L Audio Controller] - - vendor.id pci 0x1073 -&device.id pci 0x000c -&subvendor.id pci 0x107a -&subdevice.id pci 0x000c -+subdevice.name DS-XG PCI Audio CODEC - - vendor.id pci 0x1073 -&device.id pci 0x000d -+device.name YMF-724F [DS-1 Audio Controller] - - vendor.id pci 0x1073 -&device.id pci 0x000d -&subvendor.id pci 0x1073 -&subdevice.id pci 0x000d -+subdevice.name DS-XG PCI Audio CODEC - - vendor.id pci 0x1073 -&device.id pci 0x0010 -+device.name YMF-744B [DS-1S Audio Controller] - - vendor.id pci 0x1073 -&device.id pci 0x0010 -&subvendor.id pci 0x1073 -&subdevice.id pci 0x0006 -+subdevice.name DS-XG PCI Audio CODEC - - vendor.id pci 0x1073 -&device.id pci 0x0010 -&subvendor.id pci 0x1073 -&subdevice.id pci 0x0010 -+subdevice.name DS-XG PCI Audio CODEC - - vendor.id pci 0x1073 -&device.id pci 0x0012 -+device.name YMF-754 [DS-1E Audio Controller] - - vendor.id pci 0x1073 -&device.id pci 0x0012 -&subvendor.id pci 0x1073 -&subdevice.id pci 0x0012 -+subdevice.name DS-XG PCI Audio Codec - - vendor.id pci 0x1073 -&device.id pci 0x0020 -+device.name DS-1 Audio - - vendor.id pci 0x1073 -&device.id pci 0x2000 -+device.name DS2416 Digital Mixing Card - - vendor.id pci 0x1073 -&device.id pci 0x2000 -&subvendor.id pci 0x1073 -&subdevice.id pci 0x2000 -+subdevice.name DS2416 Digital Mixing Card - - vendor.id pci 0x1074 -+vendor.name NexGen Microsystems - - vendor.id pci 0x1074 -&device.id pci 0x4e78 -+device.name 82c500/1 - - vendor.id pci 0x1075 -+vendor.name Advanced Integrations Research - - vendor.id pci 0x1076 -+vendor.name Chaintech Computer Co. Ltd - - vendor.id pci 0x1077 -+vendor.name QLogic Corp. - - vendor.id pci 0x1077 -&device.id pci 0x1016 -+device.name ISP10160 Single Channel Ultra3 SCSI Processor - - vendor.id pci 0x1077 -&device.id pci 0x1020 -+device.name ISP1020 Fast-wide SCSI - - vendor.id pci 0x1077 -&device.id pci 0x1022 -+device.name ISP1022 Fast-wide SCSI - - vendor.id pci 0x1077 -&device.id pci 0x1080 -+device.name ISP1080 SCSI Host Adapter - - vendor.id pci 0x1077 -&device.id pci 0x1216 -+device.name ISP12160 Dual Channel Ultra3 SCSI Processor - - vendor.id pci 0x1077 -&device.id pci 0x1216 -&subvendor.id pci 0x101e -&subdevice.id pci 0x8471 -+subdevice.name QLA12160 on AMI MegaRAID - - vendor.id pci 0x1077 -&device.id pci 0x1216 -&subvendor.id pci 0x101e -&subdevice.id pci 0x8493 -+subdevice.name QLA12160 on AMI MegaRAID - - vendor.id pci 0x1077 -&device.id pci 0x1240 -+device.name ISP1240 SCSI Host Adapter - - vendor.id pci 0x1077 -&device.id pci 0x1280 -+device.name ISP1280 SCSI Host Adapter - - vendor.id pci 0x1077 -&device.id pci 0x2020 -+device.name ISP2020A Fast!SCSI Basic Adapter - - vendor.id pci 0x1077 -&device.id pci 0x2100 -+device.name QLA2100 64-bit Fibre Channel Adapter - - vendor.id pci 0x1077 -&device.id pci 0x2100 -&subvendor.id pci 0x1077 -&subdevice.id pci 0x0001 -+subdevice.name QLA2100 64-bit Fibre Channel Adapter - - vendor.id pci 0x1077 -&device.id pci 0x2200 -+device.name QLA2200 64-bit Fibre Channel Adapter - - vendor.id pci 0x1077 -&device.id pci 0x2200 -&subvendor.id pci 0x1077 -&subdevice.id pci 0x0002 -+subdevice.name QLA2200 - - vendor.id pci 0x1077 -&device.id pci 0x2300 -+device.name QLA2300 64-bit Fibre Channel Adapter - - vendor.id pci 0x1077 -&device.id pci 0x2312 -+device.name QLA2312 Fibre Channel Adapter - - vendor.id pci 0x1078 -+vendor.name Cyrix Corporation - - vendor.id pci 0x1078 -&device.id pci 0x0000 -+device.name 5510 [Grappa] - - vendor.id pci 0x1078 -&device.id pci 0x0001 -+device.name PCI Master - - vendor.id pci 0x1078 -&device.id pci 0x0002 -+device.name 5520 [Cognac] - - vendor.id pci 0x1078 -&device.id pci 0x0100 -+device.name 5530 Legacy [Kahlua] - - vendor.id pci 0x1078 -&device.id pci 0x0101 -+device.name 5530 SMI [Kahlua] - - vendor.id pci 0x1078 -&device.id pci 0x0102 -+device.name 5530 IDE [Kahlua] - - vendor.id pci 0x1078 -&device.id pci 0x0103 -+device.name 5530 Audio [Kahlua] - - vendor.id pci 0x1078 -&device.id pci 0x0104 -+device.name 5530 Video [Kahlua] - - vendor.id pci 0x1078 -&device.id pci 0x0400 -+device.name ZFMicro PCI Bridge - - vendor.id pci 0x1078 -&device.id pci 0x0401 -+device.name ZFMicro Chipset SMI - - vendor.id pci 0x1078 -&device.id pci 0x0402 -+device.name ZFMicro Chipset IDE - - vendor.id pci 0x1078 -&device.id pci 0x0403 -+device.name ZFMicro Expansion Bus - - vendor.id pci 0x1079 -+vendor.name I-Bus - - vendor.id pci 0x107a -+vendor.name NetWorth - - vendor.id pci 0x107b -+vendor.name Gateway 2000 - - vendor.id pci 0x107c -+vendor.name LG Electronics [Lucky Goldstar Co. Ltd] - - vendor.id pci 0x107d -+vendor.name LeadTek Research Inc. - - vendor.id pci 0x107d -&device.id pci 0x0000 -+device.name P86C850 - - vendor.id pci 0x107d -&device.id pci 0x2134 -+device.name WinFast 3D S320 II - - vendor.id pci 0x107d -&device.id pci 0x2971 -+device.name [GeForce FX 5900] WinFast A350 TDH MyViVo - - vendor.id pci 0x107e -+vendor.name Interphase Corporation - - vendor.id pci 0x107e -&device.id pci 0x0001 -+device.name 5515 ATM Adapter [Flipper] - - vendor.id pci 0x107e -&device.id pci 0x0002 -+device.name 100 VG AnyLan Controller - - vendor.id pci 0x107e -&device.id pci 0x0004 -+device.name 5526 Fibre Channel Host Adapter - - vendor.id pci 0x107e -&device.id pci 0x0005 -+device.name x526 Fibre Channel Host Adapter - - vendor.id pci 0x107e -&device.id pci 0x0008 -+device.name 5525/5575 ATM Adapter (155 Mbit) [Atlantic] - - vendor.id pci 0x107e -&device.id pci 0x9003 -+device.name 5535-4P-BRI-ST - - vendor.id pci 0x107e -&device.id pci 0x9007 -+device.name 5535-4P-BRI-U - - vendor.id pci 0x107e -&device.id pci 0x9008 -+device.name 5535-1P-SR - - vendor.id pci 0x107e -&device.id pci 0x900c -+device.name 5535-1P-SR-ST - - vendor.id pci 0x107e -&device.id pci 0x900e -+device.name 5535-1P-SR-U - - vendor.id pci 0x107e -&device.id pci 0x9011 -+device.name 5535-1P-PRI - - vendor.id pci 0x107e -&device.id pci 0x9013 -+device.name 5535-2P-PRI - - vendor.id pci 0x107e -&device.id pci 0x9023 -+device.name 5536-4P-BRI-ST - - vendor.id pci 0x107e -&device.id pci 0x9027 -+device.name 5536-4P-BRI-U - - vendor.id pci 0x107e -&device.id pci 0x9031 -+device.name 5536-1P-PRI - - vendor.id pci 0x107e -&device.id pci 0x9033 -+device.name 5536-2P-PRI - - vendor.id pci 0x107f -+vendor.name Data Technology Corporation - - vendor.id pci 0x107f -&device.id pci 0x0802 -+device.name SL82C105 - - vendor.id pci 0x1080 -+vendor.name Contaq Microsystems - - vendor.id pci 0x1080 -&device.id pci 0x0600 -+device.name 82C599 - - vendor.id pci 0x1080 -&device.id pci 0xc691 -+device.name Cypress CY82C691 - - vendor.id pci 0x1080 -&device.id pci 0xc693 -+device.name 82c693 - - vendor.id pci 0x1081 -+vendor.name Supermac Technology - - vendor.id pci 0x1081 -&device.id pci 0x0d47 -+device.name Radius PCI to NuBUS Bridge - - vendor.id pci 0x1082 -+vendor.name EFA Corporation of America - - vendor.id pci 0x1083 -+vendor.name Forex Computer Corporation - - vendor.id pci 0x1083 -&device.id pci 0x0001 -+device.name FR710 - - vendor.id pci 0x1084 -+vendor.name Parador - - vendor.id pci 0x1085 -+vendor.name Tulip Computers Int.B.V. - - vendor.id pci 0x1086 -+vendor.name J. Bond Computer Systems - - vendor.id pci 0x1087 -+vendor.name Cache Computer - - vendor.id pci 0x1088 -+vendor.name Microcomputer Systems (M) Son - - vendor.id pci 0x1089 -+vendor.name Data General Corporation - - vendor.id pci 0x108a -+vendor.name SBS Technologies - - vendor.id pci 0x108a -&device.id pci 0x0001 -+device.name VME Bridge Model 617 - - vendor.id pci 0x108a -&device.id pci 0x0010 -+device.name VME Bridge Model 618 - - vendor.id pci 0x108a -&device.id pci 0x0040 -+device.name dataBLIZZARD - - vendor.id pci 0x108a -&device.id pci 0x3000 -+device.name VME Bridge Model 2706 - - vendor.id pci 0x108c -+vendor.name Oakleigh Systems Inc. - - vendor.id pci 0x108d -+vendor.name Olicom - - vendor.id pci 0x108d -&device.id pci 0x0001 -+device.name Token-Ring 16/4 PCI Adapter (3136/3137) - - vendor.id pci 0x108d -&device.id pci 0x0002 -+device.name 16/4 Token Ring - - vendor.id pci 0x108d -&device.id pci 0x0004 -+device.name RapidFire 3139 Token-Ring 16/4 PCI Adapter - - vendor.id pci 0x108d -&device.id pci 0x0004 -&subvendor.id pci 0x108d -&subdevice.id pci 0x0004 -+subdevice.name OC-3139/3140 RapidFire Token-Ring 16/4 Adapter - - vendor.id pci 0x108d -&device.id pci 0x0005 -+device.name GoCard 3250 Token-Ring 16/4 CardBus PC Card - - vendor.id pci 0x108d -&device.id pci 0x0006 -+device.name OC-3530 RapidFire Token-Ring 100 - - vendor.id pci 0x108d -&device.id pci 0x0007 -+device.name RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter - - vendor.id pci 0x108d -&device.id pci 0x0007 -&subvendor.id pci 0x108d -&subdevice.id pci 0x0007 -+subdevice.name OC-3141 RapidFire Token-Ring 16/4 Adapter - - vendor.id pci 0x108d -&device.id pci 0x0008 -+device.name RapidFire 3540 HSTR 100/16/4 PCI Adapter - - vendor.id pci 0x108d -&device.id pci 0x0008 -&subvendor.id pci 0x108d -&subdevice.id pci 0x0008 -+subdevice.name OC-3540 RapidFire HSTR 100/16/4 Adapter - - vendor.id pci 0x108d -&device.id pci 0x0011 -+device.name OC-2315 - - vendor.id pci 0x108d -&device.id pci 0x0012 -+device.name OC-2325 - - vendor.id pci 0x108d -&device.id pci 0x0013 -+device.name OC-2183/2185 - - vendor.id pci 0x108d -&device.id pci 0x0014 -+device.name OC-2326 - - vendor.id pci 0x108d -&device.id pci 0x0019 -+device.name OC-2327/2250 10/100 Ethernet Adapter - - vendor.id pci 0x108d -&device.id pci 0x0019 -&subvendor.id pci 0x108d -&subdevice.id pci 0x0016 -+subdevice.name OC-2327 Rapidfire 10/100 Ethernet Adapter - - vendor.id pci 0x108d -&device.id pci 0x0019 -&subvendor.id pci 0x108d -&subdevice.id pci 0x0017 -+subdevice.name OC-2250 GoCard 10/100 Ethernet Adapter - - vendor.id pci 0x108d -&device.id pci 0x0021 -+device.name OC-6151/6152 [RapidFire ATM 155] - - vendor.id pci 0x108d -&device.id pci 0x0022 -+device.name ATM Adapter - - vendor.id pci 0x108e -+vendor.name Sun Microsystems Computer Corp. - - vendor.id pci 0x108e -&device.id pci 0x0001 -+device.name EBUS - - vendor.id pci 0x108e -&device.id pci 0x1000 -+device.name EBUS - - vendor.id pci 0x108e -&device.id pci 0x1001 -+device.name Happy Meal - - vendor.id pci 0x108e -&device.id pci 0x1100 -+device.name RIO EBUS - - vendor.id pci 0x108e -&device.id pci 0x1101 -+device.name RIO GEM - - vendor.id pci 0x108e -&device.id pci 0x1102 -+device.name RIO 1394 - - vendor.id pci 0x108e -&device.id pci 0x1103 -+device.name RIO USB - - vendor.id pci 0x108e -&device.id pci 0x2bad -+device.name GEM - - vendor.id pci 0x108e -&device.id pci 0x5000 -+device.name Simba Advanced PCI Bridge - - vendor.id pci 0x108e -&device.id pci 0x5043 -+device.name SunPCI Co-processor - - vendor.id pci 0x108e -&device.id pci 0x8000 -+device.name Psycho PCI Bus Module - - vendor.id pci 0x108e -&device.id pci 0x8001 -+device.name Schizo PCI Bus Module - - vendor.id pci 0x108e -&device.id pci 0xa000 -+device.name Ultra IIi - - vendor.id pci 0x108e -&device.id pci 0xa001 -+device.name Ultra IIe - - vendor.id pci 0x108e -&device.id pci 0xa801 -+device.name Tomatillo PCI Bus Module - - vendor.id pci 0x108e -&device.id pci 0xabba -+device.name Cassini 10/100/1000 - - vendor.id pci 0x108f -+vendor.name Systemsoft - - vendor.id pci 0x1090 -+vendor.name Encore Computer Corporation - - vendor.id pci 0x1091 -+vendor.name Intergraph Corporation - - vendor.id pci 0x1091 -&device.id pci 0x0020 -+device.name 3D graphics processor - - vendor.id pci 0x1091 -&device.id pci 0x0021 -+device.name 3D graphics processor w/Texturing - - vendor.id pci 0x1091 -&device.id pci 0x0040 -+device.name 3D graphics frame buffer - - vendor.id pci 0x1091 -&device.id pci 0x0041 -+device.name 3D graphics frame buffer - - vendor.id pci 0x1091 -&device.id pci 0x0060 -+device.name Proprietary bus bridge - - vendor.id pci 0x1091 -&device.id pci 0x00e4 -+device.name Powerstorm 4D50T - - vendor.id pci 0x1091 -&device.id pci 0x0720 -+device.name Motion JPEG codec - - vendor.id pci 0x1091 -&device.id pci 0x07a0 -+device.name Sun Expert3D-Lite Graphics Accelerator - - vendor.id pci 0x1091 -&device.id pci 0x1091 -+device.name Sun Expert3D Graphics Accelerator - - vendor.id pci 0x1092 -+vendor.name Diamond Multimedia Systems - - vendor.id pci 0x1092 -&device.id pci 0x00a0 -+device.name Speedstar Pro SE - - vendor.id pci 0x1092 -&device.id pci 0x00a8 -+device.name Speedstar 64 - - vendor.id pci 0x1092 -&device.id pci 0x0550 -+device.name Viper V550 - - vendor.id pci 0x1092 -&device.id pci 0x08d4 -+device.name Supra 2260 Modem - - vendor.id pci 0x1092 -&device.id pci 0x094c -+device.name SupraExpress 56i Pro - - vendor.id pci 0x1092 -&device.id pci 0x1092 -+device.name Viper V330 - - vendor.id pci 0x1092 -&device.id pci 0x6120 -+device.name Maximum DVD - - vendor.id pci 0x1092 -&device.id pci 0x8810 -+device.name Stealth SE - - vendor.id pci 0x1092 -&device.id pci 0x8811 -+device.name Stealth 64/SE - - vendor.id pci 0x1092 -&device.id pci 0x8880 -+device.name Stealth - - vendor.id pci 0x1092 -&device.id pci 0x8881 -+device.name Stealth - - vendor.id pci 0x1092 -&device.id pci 0x88b0 -+device.name Stealth 64 - - vendor.id pci 0x1092 -&device.id pci 0x88b1 -+device.name Stealth 64 - - vendor.id pci 0x1092 -&device.id pci 0x88c0 -+device.name Stealth 64 - - vendor.id pci 0x1092 -&device.id pci 0x88c1 -+device.name Stealth 64 - - vendor.id pci 0x1092 -&device.id pci 0x88d0 -+device.name Stealth 64 - - vendor.id pci 0x1092 -&device.id pci 0x88d1 -+device.name Stealth 64 - - vendor.id pci 0x1092 -&device.id pci 0x88f0 -+device.name Stealth 64 - - vendor.id pci 0x1092 -&device.id pci 0x88f1 -+device.name Stealth 64 - - vendor.id pci 0x1092 -&device.id pci 0x9999 -+device.name DMD-I0928-1 "Monster sound" sound chip - - vendor.id pci 0x1093 -+vendor.name National Instruments - - vendor.id pci 0x1093 -&device.id pci 0x0160 -+device.name PCI-DIO-96 - - vendor.id pci 0x1093 -&device.id pci 0x0162 -+device.name PCI-MIO-16XE-50 - - vendor.id pci 0x1093 -&device.id pci 0x1170 -+device.name PCI-MIO-16XE-10 - - vendor.id pci 0x1093 -&device.id pci 0x1180 -+device.name PCI-MIO-16E-1 - - vendor.id pci 0x1093 -&device.id pci 0x1190 -+device.name PCI-MIO-16E-4 - - vendor.id pci 0x1093 -&device.id pci 0x1330 -+device.name PCI-6031E - - vendor.id pci 0x1093 -&device.id pci 0x1350 -+device.name PCI-6071E - - vendor.id pci 0x1093 -&device.id pci 0x14e0 -+device.name PCI-6110 - - vendor.id pci 0x1093 -&device.id pci 0x14f0 -+device.name PCI-6111 - - vendor.id pci 0x1093 -&device.id pci 0x17d0 -+device.name PCI-6503 - - vendor.id pci 0x1093 -&device.id pci 0x1870 -+device.name PCI-6713 - - vendor.id pci 0x1093 -&device.id pci 0x1880 -+device.name PCI-6711 - - vendor.id pci 0x1093 -&device.id pci 0x18b0 -+device.name PCI-6052E - - vendor.id pci 0x1093 -&device.id pci 0x2410 -+device.name PCI-6733 - - vendor.id pci 0x1093 -&device.id pci 0x2890 -+device.name PCI-6036E - - vendor.id pci 0x1093 -&device.id pci 0x2a60 -+device.name PCI-6023E - - vendor.id pci 0x1093 -&device.id pci 0x2a70 -+device.name PCI-6024E - - vendor.id pci 0x1093 -&device.id pci 0x2a80 -+device.name PCI-6025E - - vendor.id pci 0x1093 -&device.id pci 0x2c80 -+device.name PCI-6035E - - vendor.id pci 0x1093 -&device.id pci 0x2ca0 -+device.name PCI-6034E - - vendor.id pci 0x1093 -&device.id pci 0xb001 -+device.name IMAQ-PCI-1408 - - vendor.id pci 0x1093 -&device.id pci 0xb011 -+device.name IMAQ-PXI-1408 - - vendor.id pci 0x1093 -&device.id pci 0xb021 -+device.name IMAQ-PCI-1424 - - vendor.id pci 0x1093 -&device.id pci 0xb031 -+device.name IMAQ-PCI-1413 - - vendor.id pci 0x1093 -&device.id pci 0xb041 -+device.name IMAQ-PCI-1407 - - vendor.id pci 0x1093 -&device.id pci 0xb051 -+device.name IMAQ-PXI-1407 - - vendor.id pci 0x1093 -&device.id pci 0xb061 -+device.name IMAQ-PCI-1411 - - vendor.id pci 0x1093 -&device.id pci 0xb071 -+device.name IMAQ-PCI-1422 - - vendor.id pci 0x1093 -&device.id pci 0xb081 -+device.name IMAQ-PXI-1422 - - vendor.id pci 0x1093 -&device.id pci 0xb091 -+device.name IMAQ-PXI-1411 - - vendor.id pci 0x1093 -&device.id pci 0xc801 -+device.name PCI-GPIB - - vendor.id pci 0x1093 -&device.id pci 0xc831 -+device.name PCI-GPIB bridge - - vendor.id pci 0x1094 -+vendor.name First International Computers [FIC] - - vendor.id pci 0x1095 -+vendor.name Silicon Image, Inc. (formerly CMD Technology Inc) - - vendor.id pci 0x1095 -&device.id pci 0x0240 -+device.name Adaptec AAR-1210SA SATA HostRAID Controller - - vendor.id pci 0x1095 -&device.id pci 0x0640 -+device.name PCI0640 - - vendor.id pci 0x1095 -&device.id pci 0x0643 -+device.name PCI0643 - - vendor.id pci 0x1095 -&device.id pci 0x0646 -+device.name PCI0646 - - vendor.id pci 0x1095 -&device.id pci 0x0647 -+device.name PCI0647 - - vendor.id pci 0x1095 -&device.id pci 0x0648 -+device.name PCI0648 - - vendor.id pci 0x1095 -&device.id pci 0x0649 -+device.name SiI 0649 Ultra ATA/100 PCI to ATA Host Controller - - vendor.id pci 0x1095 -&device.id pci 0x0649 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x005d -+subdevice.name Integrated Ultra ATA-100 Dual Channel Controller - - vendor.id pci 0x1095 -&device.id pci 0x0649 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x007e -+subdevice.name Integrated Ultra ATA-100 IDE RAID Controller - - vendor.id pci 0x1095 -&device.id pci 0x0649 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0649 -+subdevice.name AMI MegaRAID IDE 100 Controller - - vendor.id pci 0x1095 -&device.id pci 0x0650 -+device.name PBC0650A - - vendor.id pci 0x1095 -&device.id pci 0x0670 -+device.name USB0670 - - vendor.id pci 0x1095 -&device.id pci 0x0670 -&subvendor.id pci 0x1095 -&subdevice.id pci 0x0670 -+subdevice.name USB0670 - - vendor.id pci 0x1095 -&device.id pci 0x0673 -+device.name USB0673 - - vendor.id pci 0x1095 -&device.id pci 0x0680 -+device.name PCI0680 Ultra ATA-133 Host Controller - - vendor.id pci 0x1095 -&device.id pci 0x0680 -&subvendor.id pci 0x1095 -&subdevice.id pci 0x3680 -+subdevice.name Winic W-680 (Silicon Image 680 based) - - vendor.id pci 0x1095 -&device.id pci 0x3112 -+device.name SiI 3112 [SATALink/SATARaid] Serial ATA Controller - - vendor.id pci 0x1095 -&device.id pci 0x3112 -&subvendor.id pci 0x1095 -&subdevice.id pci 0x3112 -+subdevice.name SiI 3112 SATALink Controller - - vendor.id pci 0x1095 -&device.id pci 0x3112 -&subvendor.id pci 0x1095 -&subdevice.id pci 0x6112 -+subdevice.name SiI 3112 SATARaid Controller - - vendor.id pci 0x1095 -&device.id pci 0x3114 -+device.name SiI 3114 [SATALink/SATARaid] Serial ATA Controller - - vendor.id pci 0x1095 -&device.id pci 0x3114 -&subvendor.id pci 0x1095 -&subdevice.id pci 0x3114 -+subdevice.name SiI 3114 SATALink Controller - - vendor.id pci 0x1095 -&device.id pci 0x3114 -&subvendor.id pci 0x1095 -&subdevice.id pci 0x6114 -+subdevice.name SiI 3114 SATARaid Controller - - vendor.id pci 0x1095 -&device.id pci 0x3124 -+device.name SiI 3124 PCI-X Serial ATA Controller - - vendor.id pci 0x1095 -&device.id pci 0x3124 -&subvendor.id pci 0x1095 -&subdevice.id pci 0x3124 -+subdevice.name SiI 3124 PCI-X Serial ATA Controller - - vendor.id pci 0x1095 -&device.id pci 0x3512 -+device.name SiI 3512 [SATALink/SATARaid] Serial ATA Controller - - vendor.id pci 0x1095 -&device.id pci 0x3512 -&subvendor.id pci 0x1095 -&subdevice.id pci 0x3512 -+subdevice.name SiI 3512 SATALink Controller - - vendor.id pci 0x1095 -&device.id pci 0x3512 -&subvendor.id pci 0x1095 -&subdevice.id pci 0x6512 -+subdevice.name SiI 3512 SATARaid Controller - - vendor.id pci 0x1096 -+vendor.name Alacron - - vendor.id pci 0x1097 -+vendor.name Appian Technology - - vendor.id pci 0x1098 -+vendor.name Quantum Designs (H.K.) Ltd - - vendor.id pci 0x1098 -&device.id pci 0x0001 -+device.name QD-8500 - - vendor.id pci 0x1098 -&device.id pci 0x0002 -+device.name QD-8580 - - vendor.id pci 0x1099 -+vendor.name Samsung Electronics Co., Ltd - - vendor.id pci 0x109a -+vendor.name Packard Bell - - vendor.id pci 0x109b -+vendor.name Gemlight Computer Ltd. - - vendor.id pci 0x109c -+vendor.name Megachips Corporation - - vendor.id pci 0x109d -+vendor.name Zida Technologies Ltd. - - vendor.id pci 0x109e -+vendor.name Brooktree Corporation - - vendor.id pci 0x109e -&device.id pci 0x0350 -+device.name Bt848 Video Capture - - vendor.id pci 0x109e -&device.id pci 0x0351 -+device.name Bt849A Video capture - - vendor.id pci 0x109e -&device.id pci 0x0369 -+device.name Bt878 Video Capture - - vendor.id pci 0x109e -&device.id pci 0x0369 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0001 -+subdevice.name TV-Wonder - - vendor.id pci 0x109e -&device.id pci 0x0369 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0003 -+subdevice.name TV-Wonder/VE - - vendor.id pci 0x109e -&device.id pci 0x036c -+device.name Bt879(??) Video Capture - - vendor.id pci 0x109e -&device.id pci 0x036c -&subvendor.id pci 0x13e9 -&subdevice.id pci 0x0070 -+subdevice.name Win/TV (Video Section) - - vendor.id pci 0x109e -&device.id pci 0x036e -+device.name Bt878 Video Capture - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x0070 -&subdevice.id pci 0x13eb -+subdevice.name WinTV Series - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x0070 -&subdevice.id pci 0xff01 -+subdevice.name Viewcast Osprey 200 - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x0071 -&subdevice.id pci 0x0101 -+subdevice.name DigiTV PCI - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x107d -&subdevice.id pci 0x6606 -+subdevice.name WinFast TV 2000 - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x11bd -&subdevice.id pci 0x0012 -+subdevice.name PCTV pro (TV + FM stereo receiver) - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x11bd -&subdevice.id pci 0x001c -+subdevice.name PCTV Sat (DBC receiver) - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x127a -&subdevice.id pci 0x0001 -+subdevice.name Bt878 Mediastream Controller NTSC - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x127a -&subdevice.id pci 0x0002 -+subdevice.name Bt878 Mediastream Controller PAL BG - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x127a -&subdevice.id pci 0x0003 -+subdevice.name Bt878a Mediastream Controller PAL BG - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x127a -&subdevice.id pci 0x0048 -+subdevice.name Bt878/832 Mediastream Controller - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x144f -&subdevice.id pci 0x3000 -+subdevice.name MagicTView CPH060 - Video - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0002 -+subdevice.name TV98 Series (TV/No FM/Remote) - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0004 -+subdevice.name AVerTV WDM Video Capture - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0761 -+subdevice.name AverTV DVB-T - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0001 -+subdevice.name Bt878 Mediastream Controller NTSC - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0002 -+subdevice.name Bt878 Mediastream Controller PAL BG - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0003 -+subdevice.name Bt878a Mediastream Controller PAL BG - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0048 -+subdevice.name Bt878/832 Mediastream Controller - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x1822 -&subdevice.id pci 0x0001 -+subdevice.name VisionPlus DVB card - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x1851 -&subdevice.id pci 0x1850 -+subdevice.name FlyVideo'98 - Video - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x1851 -&subdevice.id pci 0x1851 -+subdevice.name FlyVideo II - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x1852 -&subdevice.id pci 0x1852 -+subdevice.name FlyVideo'98 - Video (with FM Tuner) - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x270f -&subdevice.id pci 0xfc00 -+subdevice.name Digitop DTT-1000 - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0xbd11 -&subdevice.id pci 0x1200 -+subdevice.name PCTV pro (TV + FM stereo receiver) - - vendor.id pci 0x109e -&device.id pci 0x036f -+device.name Bt879 Video Capture - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x0044 -+subdevice.name Bt879 Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x0122 -+subdevice.name Bt879 Video Capture PAL I - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x0144 -+subdevice.name Bt879 Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x0222 -+subdevice.name Bt879 Video Capture PAL BG - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x0244 -+subdevice.name Bt879a Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x0322 -+subdevice.name Bt879 Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x0422 -+subdevice.name Bt879 Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x1122 -+subdevice.name Bt879 Video Capture PAL I - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x1222 -+subdevice.name Bt879 Video Capture PAL BG - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x1322 -+subdevice.name Bt879 Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x1522 -+subdevice.name Bt879a Video Capture PAL I - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x1622 -+subdevice.name Bt879a Video Capture PAL BG - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x127a -&subdevice.id pci 0x1722 -+subdevice.name Bt879a Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0044 -+subdevice.name Bt879 Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0122 -+subdevice.name Bt879 Video Capture PAL I - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0144 -+subdevice.name Bt879 Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0222 -+subdevice.name Bt879 Video Capture PAL BG - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0244 -+subdevice.name Bt879a Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0322 -+subdevice.name Bt879 Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0422 -+subdevice.name Bt879 Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x1122 -+subdevice.name Bt879 Video Capture PAL I - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x1222 -+subdevice.name Bt879 Video Capture PAL BG - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x1322 -+subdevice.name Bt879 Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x1522 -+subdevice.name Bt879a Video Capture PAL I - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x1622 -+subdevice.name Bt879a Video Capture PAL BG - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x1722 -+subdevice.name Bt879a Video Capture NTSC - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x1851 -&subdevice.id pci 0x1850 -+subdevice.name FlyVideo'98 - Video - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x1851 -&subdevice.id pci 0x1851 -+subdevice.name FlyVideo II - - vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x1852 -&subdevice.id pci 0x1852 -+subdevice.name FlyVideo'98 - Video (with FM Tuner) - - vendor.id pci 0x109e -&device.id pci 0x0370 -+device.name Bt880 Video Capture - - vendor.id pci 0x109e -&device.id pci 0x0370 -&subvendor.id pci 0x1851 -&subdevice.id pci 0x1850 -+subdevice.name FlyVideo'98 - - vendor.id pci 0x109e -&device.id pci 0x0370 -&subvendor.id pci 0x1851 -&subdevice.id pci 0x1851 -+subdevice.name FlyVideo'98 EZ - video - - vendor.id pci 0x109e -&device.id pci 0x0370 -&subvendor.id pci 0x1852 -&subdevice.id pci 0x1852 -+subdevice.name FlyVideo'98 (with FM Tuner) - - vendor.id pci 0x109e -&device.id pci 0x0878 -+device.name Bt878 Audio Capture - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x0070 -&subdevice.id pci 0x13eb -+subdevice.name WinTV Series - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x0070 -&subdevice.id pci 0xff01 -+subdevice.name Viewcast Osprey 200 - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x0071 -&subdevice.id pci 0x0101 -+subdevice.name DigiTV PCI - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0001 -+subdevice.name TV-Wonder - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0003 -+subdevice.name TV-Wonder/VE - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x11bd -&subdevice.id pci 0x0012 -+subdevice.name PCTV pro (TV + FM stereo receiver, audio section) - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x11bd -&subdevice.id pci 0x001c -+subdevice.name PCTV Sat (DBC receiver) - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x127a -&subdevice.id pci 0x0001 -+subdevice.name Bt878 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x127a -&subdevice.id pci 0x0002 -+subdevice.name Bt878 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x127a -&subdevice.id pci 0x0003 -+subdevice.name Bt878 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x127a -&subdevice.id pci 0x0048 -+subdevice.name Bt878 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x13e9 -&subdevice.id pci 0x0070 -+subdevice.name Win/TV (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x144f -&subdevice.id pci 0x3000 -+subdevice.name MagicTView CPH060 - Audio - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0004 -+subdevice.name AVerTV WDM Audio Capture - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0761 -+subdevice.name AVerTV DVB-T - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0001 -+subdevice.name Bt878 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0002 -+subdevice.name Bt878 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0003 -+subdevice.name Bt878 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0048 -+subdevice.name Bt878 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x1822 -&subdevice.id pci 0x0001 -+subdevice.name VisionPlus DVB Card - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0x270f -&subdevice.id pci 0xfc00 -+subdevice.name Digitop DTT-1000 - - vendor.id pci 0x109e -&device.id pci 0x0878 -&subvendor.id pci 0xbd11 -&subdevice.id pci 0x1200 -+subdevice.name PCTV pro (TV + FM stereo receiver, audio section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -+device.name Bt879 Audio Capture - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x0044 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x0122 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x0144 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x0222 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x0244 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x0322 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x0422 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x1122 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x1222 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x1322 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x1522 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x1622 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x127a -&subdevice.id pci 0x1722 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0044 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0122 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0144 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0222 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0244 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0322 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x0422 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x1122 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x1222 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x1322 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x1522 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x1622 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0879 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x1722 -+subdevice.name Bt879 Video Capture (Audio Section) - - vendor.id pci 0x109e -&device.id pci 0x0880 -+device.name Bt880 Audio Capture - - vendor.id pci 0x109e -&device.id pci 0x2115 -+device.name BtV 2115 Mediastream controller - - vendor.id pci 0x109e -&device.id pci 0x2125 -+device.name BtV 2125 Mediastream controller - - vendor.id pci 0x109e -&device.id pci 0x2164 -+device.name BtV 2164 - - vendor.id pci 0x109e -&device.id pci 0x2165 -+device.name BtV 2165 - - vendor.id pci 0x109e -&device.id pci 0x8230 -+device.name Bt8230 ATM Segment/Reassembly Ctrlr (SRC) - - vendor.id pci 0x109e -&device.id pci 0x8472 -+device.name Bt8472 - - vendor.id pci 0x109e -&device.id pci 0x8474 -+device.name Bt8474 - - vendor.id pci 0x109f -+vendor.name Trigem Computer Inc. - - vendor.id pci 0x10a0 -+vendor.name Meidensha Corporation - - vendor.id pci 0x10a1 -+vendor.name Juko Electronics Ind. Co. Ltd - - vendor.id pci 0x10a2 -+vendor.name Quantum Corporation - - vendor.id pci 0x10a3 -+vendor.name Everex Systems Inc - - vendor.id pci 0x10a4 -+vendor.name Globe Manufacturing Sales - - vendor.id pci 0x10a5 -+vendor.name Smart Link Ltd. - - vendor.id pci 0x10a5 -&device.id pci 0x3052 -+device.name SmartPCI562 56K Modem - - vendor.id pci 0x10a5 -&device.id pci 0x5449 -+device.name SmartPCI561 modem - - vendor.id pci 0x10a6 -+vendor.name Informtech Industrial Ltd. - - vendor.id pci 0x10a7 -+vendor.name Benchmarq Microelectronics - - vendor.id pci 0x10a8 -+vendor.name Sierra Semiconductor - - vendor.id pci 0x10a8 -&device.id pci 0x0000 -+device.name STB Horizon 64 - - vendor.id pci 0x10a9 -+vendor.name Silicon Graphics, Inc. - - vendor.id pci 0x10a9 -&device.id pci 0x0001 -+device.name Crosstalk to PCI Bridge - - vendor.id pci 0x10a9 -&device.id pci 0x0002 -+device.name Linc I/O controller - - vendor.id pci 0x10a9 -&device.id pci 0x0003 -+device.name IOC3 I/O controller - - vendor.id pci 0x10a9 -&device.id pci 0x0004 -+device.name O2 MACE - - vendor.id pci 0x10a9 -&device.id pci 0x0005 -+device.name RAD Audio - - vendor.id pci 0x10a9 -&device.id pci 0x0006 -+device.name HPCEX - - vendor.id pci 0x10a9 -&device.id pci 0x0007 -+device.name RPCEX - - vendor.id pci 0x10a9 -&device.id pci 0x0008 -+device.name DiVO VIP - - vendor.id pci 0x10a9 -&device.id pci 0x0009 -+device.name AceNIC Gigabit Ethernet - - vendor.id pci 0x10a9 -&device.id pci 0x0009 -&subvendor.id pci 0x10a9 -&subdevice.id pci 0x8002 -+subdevice.name AceNIC Gigabit Ethernet - - vendor.id pci 0x10a9 -&device.id pci 0x0010 -+device.name AMP Video I/O - - vendor.id pci 0x10a9 -&device.id pci 0x0011 -+device.name GRIP - - vendor.id pci 0x10a9 -&device.id pci 0x0012 -+device.name SGH PSHAC GSN - - vendor.id pci 0x10a9 -&device.id pci 0x1001 -+device.name Magic Carpet - - vendor.id pci 0x10a9 -&device.id pci 0x1002 -+device.name Lithium - - vendor.id pci 0x10a9 -&device.id pci 0x1003 -+device.name Dual JPEG 1 - - vendor.id pci 0x10a9 -&device.id pci 0x1004 -+device.name Dual JPEG 2 - - vendor.id pci 0x10a9 -&device.id pci 0x1005 -+device.name Dual JPEG 3 - - vendor.id pci 0x10a9 -&device.id pci 0x1006 -+device.name Dual JPEG 4 - - vendor.id pci 0x10a9 -&device.id pci 0x1007 -+device.name Dual JPEG 5 - - vendor.id pci 0x10a9 -&device.id pci 0x1008 -+device.name Cesium - - vendor.id pci 0x10a9 -&device.id pci 0x100a -+device.name IOC4 I/O controller - - vendor.id pci 0x10a9 -&device.id pci 0x2001 -+device.name Fibre Channel - - vendor.id pci 0x10a9 -&device.id pci 0x2002 -+device.name ASDE - - vendor.id pci 0x10a9 -&device.id pci 0x8001 -+device.name O2 1394 - - vendor.id pci 0x10a9 -&device.id pci 0x8002 -+device.name G-net NT - - vendor.id pci 0x10aa -+vendor.name ACC Microelectronics - - vendor.id pci 0x10aa -&device.id pci 0x0000 -+device.name ACCM 2188 - - vendor.id pci 0x10ab -+vendor.name Digicom - - vendor.id pci 0x10ac -+vendor.name Honeywell IAC - - vendor.id pci 0x10ad -+vendor.name Symphony Labs - - vendor.id pci 0x10ad -&device.id pci 0x0001 -+device.name W83769F - - vendor.id pci 0x10ad -&device.id pci 0x0003 -+device.name SL82C103 - - vendor.id pci 0x10ad -&device.id pci 0x0005 -+device.name SL82C105 - - vendor.id pci 0x10ad -&device.id pci 0x0103 -+device.name SL82c103 - - vendor.id pci 0x10ad -&device.id pci 0x0105 -+device.name SL82c105 - - vendor.id pci 0x10ad -&device.id pci 0x0565 -+device.name W83C553 - - vendor.id pci 0x10ae -+vendor.name Cornerstone Technology - - vendor.id pci 0x10af -+vendor.name Micro Computer Systems Inc - - vendor.id pci 0x10b0 -+vendor.name CardExpert Technology - - vendor.id pci 0x10b1 -+vendor.name Cabletron Systems Inc - - vendor.id pci 0x10b2 -+vendor.name Raytheon Company - - vendor.id pci 0x10b3 -+vendor.name Databook Inc - - vendor.id pci 0x10b3 -&device.id pci 0x3106 -+device.name DB87144 - - vendor.id pci 0x10b3 -&device.id pci 0xb106 -+device.name DB87144 - - vendor.id pci 0x10b4 -+vendor.name STB Systems Inc - - vendor.id pci 0x10b4 -&device.id pci 0x1b1d -+device.name Velocity 128 3D - - vendor.id pci 0x10b4 -&device.id pci 0x1b1d -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x237e -+subdevice.name Velocity 4400 - - vendor.id pci 0x10b5 -+vendor.name PLX Technology, Inc. - - vendor.id pci 0x10b5 -&device.id pci 0x0001 -+device.name i960 PCI bus interface - - vendor.id pci 0x10b5 -&device.id pci 0x1076 -+device.name VScom 800 8 port serial adaptor - - vendor.id pci 0x10b5 -&device.id pci 0x1077 -+device.name VScom 400 4 port serial adaptor - - vendor.id pci 0x10b5 -&device.id pci 0x1078 -+device.name VScom 210 2 port serial and 1 port parallel adaptor - - vendor.id pci 0x10b5 -&device.id pci 0x1103 -+device.name VScom 200 2 port serial adaptor - - vendor.id pci 0x10b5 -&device.id pci 0x1146 -+device.name VScom 010 1 port parallel adaptor - - vendor.id pci 0x10b5 -&device.id pci 0x1147 -+device.name VScom 020 2 port parallel adaptor - - vendor.id pci 0x10b5 -&device.id pci 0x2724 -+device.name Thales PCSM Security Card - - vendor.id pci 0x10b5 -&device.id pci 0x9030 -+device.name PCI <-> IOBus Bridge Hot Swap - - vendor.id pci 0x10b5 -&device.id pci 0x9030 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2862 -+subdevice.name Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board - - vendor.id pci 0x10b5 -&device.id pci 0x9030 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2906 -+subdevice.name Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board - - vendor.id pci 0x10b5 -&device.id pci 0x9030 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2940 -+subdevice.name Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board - - vendor.id pci 0x10b5 -&device.id pci 0x9030 -&subvendor.id pci 0x15ed -&subdevice.id pci 0x1002 -+subdevice.name MCCS 8-port Serial Hot Swap - - vendor.id pci 0x10b5 -&device.id pci 0x9030 -&subvendor.id pci 0x15ed -&subdevice.id pci 0x1003 -+subdevice.name MCCS 16-port Serial Hot Swap - - vendor.id pci 0x10b5 -&device.id pci 0x9036 -+device.name 9036 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -+device.name PCI <-> IOBus Bridge - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x1067 -+subdevice.name IXXAT CAN i165 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x1172 -+subdevice.name IK220 (Heidenhain) - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2036 -+subdevice.name SatPak GPS - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2221 -+subdevice.name Alpermann+Velte PCL PCI LV: Timecode Reader Board - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2273 -+subdevice.name SH-ARC SoHard ARCnet card - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2431 -+subdevice.name Alpermann+Velte PCL PCI D: Timecode Reader Board - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2905 -+subdevice.name Alpermann+Velte PCI TS: Time Synchronisation Board - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x9050 -+subdevice.name MP9050 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x1498 -&subdevice.id pci 0x0362 -+subdevice.name TPMC866 8 Channel Serial Card - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0001 -+subdevice.name RockForce 4 Port V.90 Data/Fax/Voice Modem - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0002 -+subdevice.name RockForce 2 Port V.90 Data/Fax/Voice Modem - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0003 -+subdevice.name RockForce 6 Port V.90 Data/Fax/Voice Modem - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0004 -+subdevice.name RockForce 8 Port V.90 Data/Fax/Voice Modem - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0010 -+subdevice.name RockForce2000 4 Port V.90 Data/Fax/Voice Modem - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0020 -+subdevice.name RockForce2000 2 Port V.90 Data/Fax/Voice Modem - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x15ed -&subdevice.id pci 0x1000 -+subdevice.name Macrolink MCCS 8-port Serial - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x15ed -&subdevice.id pci 0x1001 -+subdevice.name Macrolink MCCS 16-port Serial - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x15ed -&subdevice.id pci 0x1002 -+subdevice.name Macrolink MCCS 8-port Serial Hot Swap - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x15ed -&subdevice.id pci 0x1003 -+subdevice.name Macrolink MCCS 16-port Serial Hot Swap - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x5654 -&subdevice.id pci 0x2036 -+subdevice.name OpenSwitch 6 Telephony card - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x5654 -&subdevice.id pci 0x3132 -+subdevice.name OpenSwitch 12 Telephony card - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0x5654 -&subdevice.id pci 0x5634 -+subdevice.name OpenLine4 Telephony Card - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd531 -&subdevice.id pci 0xc002 -+subdevice.name PCIntelliCAN 2xSJA1000 CAN bus - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4006 -+subdevice.name EX-4006 1P - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4008 -+subdevice.name EX-4008 1P EPP/ECP - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4014 -+subdevice.name EX-4014 2P - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4018 -+subdevice.name EX-4018 3P EPP/ECP - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4025 -+subdevice.name EX-4025 1S(16C550) RS-232 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4027 -+subdevice.name EX-4027 1S(16C650) RS-232 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4028 -+subdevice.name EX-4028 1S(16C850) RS-232 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4036 -+subdevice.name EX-4036 2S(16C650) RS-232 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4037 -+subdevice.name EX-4037 2S(16C650) RS-232 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4038 -+subdevice.name EX-4038 2S(16C850) RS-232 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4052 -+subdevice.name EX-4052 1S(16C550) RS-422/485 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4053 -+subdevice.name EX-4053 2S(16C550) RS-422/485 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4055 -+subdevice.name EX-4055 4S(16C550) RS-232 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4058 -+subdevice.name EX-4055 4S(16C650) RS-232 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4065 -+subdevice.name EX-4065 8S(16C550) RS-232 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4068 -+subdevice.name EX-4068 8S(16C650) RS-232 - - vendor.id pci 0x10b5 -&device.id pci 0x9050 -&subvendor.id pci 0xd84d -&subdevice.id pci 0x4078 -+subdevice.name EX-4078 2S(16C552) RS-232+1P - - vendor.id pci 0x10b5 -&device.id pci 0x9054 -+device.name PCI <-> IOBus Bridge - - vendor.id pci 0x10b5 -&device.id pci 0x9054 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2455 -+subdevice.name Wessex Techology PHIL-PCI - - vendor.id pci 0x10b5 -&device.id pci 0x9054 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2696 -+subdevice.name Innes Corp AM Radcap card - - vendor.id pci 0x10b5 -&device.id pci 0x9054 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2717 -+subdevice.name Innes Corp Auricon card - - vendor.id pci 0x10b5 -&device.id pci 0x9054 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2844 -+subdevice.name Innes Corp TVS Encoder card - - vendor.id pci 0x10b5 -&device.id pci 0x9054 -&subvendor.id pci 0x12d9 -&subdevice.id pci 0x0002 -+subdevice.name PCI Prosody Card rev 1.5 - - vendor.id pci 0x10b5 -&device.id pci 0x9054 -&subvendor.id pci 0x16df -&subdevice.id pci 0x0011 -+subdevice.name PIKA PrimeNet MM PCI - - vendor.id pci 0x10b5 -&device.id pci 0x9054 -&subvendor.id pci 0x16df -&subdevice.id pci 0x0012 -+subdevice.name PIKA PrimeNet MM cPCI 8 - - vendor.id pci 0x10b5 -&device.id pci 0x9054 -&subvendor.id pci 0x16df -&subdevice.id pci 0x0013 -+subdevice.name PIKA PrimeNet MM cPCI 8 (without CAS Signaling Option) - - vendor.id pci 0x10b5 -&device.id pci 0x9054 -&subvendor.id pci 0x16df -&subdevice.id pci 0x0014 -+subdevice.name PIKA PrimeNet MM cPCI 4 - - vendor.id pci 0x10b5 -&device.id pci 0x9054 -&subvendor.id pci 0x16df -&subdevice.id pci 0x0015 -+subdevice.name PIKA Daytona MM - - vendor.id pci 0x10b5 -&device.id pci 0x9054 -&subvendor.id pci 0x16df -&subdevice.id pci 0x0016 -+subdevice.name PIKA InLine MM - - vendor.id pci 0x10b5 -&device.id pci 0x9056 -+device.name Francois - - vendor.id pci 0x10b5 -&device.id pci 0x9056 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x2979 -+subdevice.name CellinkBlade 11 - CPCI board VoATM AAL1 - - vendor.id pci 0x10b5 -&device.id pci 0x9060 -+device.name 9060 - - vendor.id pci 0x10b5 -&device.id pci 0x906d -+device.name 9060SD - - vendor.id pci 0x10b5 -&device.id pci 0x906d -&subvendor.id pci 0x125c -&subdevice.id pci 0x0640 -+subdevice.name Aries 16000P - - vendor.id pci 0x10b5 -&device.id pci 0x906e -+device.name 9060ES - - vendor.id pci 0x10b5 -&device.id pci 0x9080 -+device.name 9080 - - vendor.id pci 0x10b5 -&device.id pci 0x9080 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10eb -+subdevice.name (Agilent) E2777B 83K Series PCI based Optical Communication Interface - - vendor.id pci 0x10b5 -&device.id pci 0x9080 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10ec -+subdevice.name (Agilent) E6978-66442 PCI CIC - - vendor.id pci 0x10b5 -&device.id pci 0x9080 -&subvendor.id pci 0x10b5 -&subdevice.id pci 0x9080 -+subdevice.name 9080 [real subsystem ID not set] - - vendor.id pci 0x10b5 -&device.id pci 0x9080 -&subvendor.id pci 0x129d -&subdevice.id pci 0x0002 -+subdevice.name Aculab PCI Prosidy card - - vendor.id pci 0x10b5 -&device.id pci 0x9080 -&subvendor.id pci 0x12d9 -&subdevice.id pci 0x0002 -+subdevice.name PCI Prosody Card - - vendor.id pci 0x10b5 -&device.id pci 0x9080 -&subvendor.id pci 0x12df -&subdevice.id pci 0x4422 -+subdevice.name 4422PCI ["Do-All" Telemetry Data Aquisition System] - - vendor.id pci 0x10b5 -&device.id pci 0xbb04 -+device.name B&B 3PCIOSD1A Isolated PCI Serial - - vendor.id pci 0x10b6 -+vendor.name Madge Networks - - vendor.id pci 0x10b6 -&device.id pci 0x0001 -+device.name Smart 16/4 PCI Ringnode - - vendor.id pci 0x10b6 -&device.id pci 0x0002 -+device.name Smart 16/4 PCI Ringnode Mk2 - - vendor.id pci 0x10b6 -&device.id pci 0x0002 -&subvendor.id pci 0x10b6 -&subdevice.id pci 0x0002 -+subdevice.name Smart 16/4 PCI Ringnode Mk2 - - vendor.id pci 0x10b6 -&device.id pci 0x0002 -&subvendor.id pci 0x10b6 -&subdevice.id pci 0x0006 -+subdevice.name 16/4 CardBus Adapter - - vendor.id pci 0x10b6 -&device.id pci 0x0003 -+device.name Smart 16/4 PCI Ringnode Mk3 - - vendor.id pci 0x10b6 -&device.id pci 0x0003 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0fd -+subdevice.name Compaq NC4621 PCI, 4/16, WOL - - vendor.id pci 0x10b6 -&device.id pci 0x0003 -&subvendor.id pci 0x10b6 -&subdevice.id pci 0x0003 -+subdevice.name Smart 16/4 PCI Ringnode Mk3 - - vendor.id pci 0x10b6 -&device.id pci 0x0003 -&subvendor.id pci 0x10b6 -&subdevice.id pci 0x0007 -+subdevice.name Presto PCI Plus Adapter - - vendor.id pci 0x10b6 -&device.id pci 0x0004 -+device.name Smart 16/4 PCI Ringnode Mk1 - - vendor.id pci 0x10b6 -&device.id pci 0x0006 -+device.name 16/4 Cardbus Adapter - - vendor.id pci 0x10b6 -&device.id pci 0x0006 -&subvendor.id pci 0x10b6 -&subdevice.id pci 0x0006 -+subdevice.name 16/4 CardBus Adapter - - vendor.id pci 0x10b6 -&device.id pci 0x0007 -+device.name Presto PCI Adapter - - vendor.id pci 0x10b6 -&device.id pci 0x0007 -&subvendor.id pci 0x10b6 -&subdevice.id pci 0x0007 -+subdevice.name Presto PCI - - vendor.id pci 0x10b6 -&device.id pci 0x0009 -+device.name Smart 100/16/4 PCI-HS Ringnode - - vendor.id pci 0x10b6 -&device.id pci 0x0009 -&subvendor.id pci 0x10b6 -&subdevice.id pci 0x0009 -+subdevice.name Smart 100/16/4 PCI-HS Ringnode - - vendor.id pci 0x10b6 -&device.id pci 0x000a -+device.name Smart 100/16/4 PCI Ringnode - - vendor.id pci 0x10b6 -&device.id pci 0x000a -&subvendor.id pci 0x10b6 -&subdevice.id pci 0x000a -+subdevice.name Smart 100/16/4 PCI Ringnode - - vendor.id pci 0x10b6 -&device.id pci 0x000b -+device.name 16/4 CardBus Adapter Mk2 - - vendor.id pci 0x10b6 -&device.id pci 0x000b -&subvendor.id pci 0x10b6 -&subdevice.id pci 0x0008 -+subdevice.name 16/4 CardBus Adapter Mk2 - - vendor.id pci 0x10b6 -&device.id pci 0x000b -&subvendor.id pci 0x10b6 -&subdevice.id pci 0x000b -+subdevice.name 16/4 Cardbus Adapter Mk2 - - vendor.id pci 0x10b6 -&device.id pci 0x000c -+device.name RapidFire 3140V2 16/4 TR Adapter - - vendor.id pci 0x10b6 -&device.id pci 0x000c -&subvendor.id pci 0x10b6 -&subdevice.id pci 0x000c -+subdevice.name RapidFire 3140V2 16/4 TR Adapter - - vendor.id pci 0x10b6 -&device.id pci 0x1000 -+device.name Collage 25/155 ATM Client Adapter - - vendor.id pci 0x10b6 -&device.id pci 0x1001 -+device.name Collage 155 ATM Server Adapter - - vendor.id pci 0x10b7 -+vendor.name 3Com Corporation - - vendor.id pci 0x10b7 -&device.id pci 0x0001 -+device.name 3c985 1000BaseSX (SX/TX) - - vendor.id pci 0x10b7 -&device.id pci 0x0013 -+device.name AR5212 802.11abg NIC (3CRDAG675) - - vendor.id pci 0x10b7 -&device.id pci 0x0013 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x2031 -+subdevice.name 3CRDAG675 11a/b/g Wireless PCI Adapter - - vendor.id pci 0x10b7 -&device.id pci 0x0910 -+device.name 3C910-A01 - - vendor.id pci 0x10b7 -&device.id pci 0x1006 -+device.name MINI PCI type 3B Data Fax Modem - - vendor.id pci 0x10b7 -&device.id pci 0x1007 -+device.name Mini PCI 56k Winmodem - - vendor.id pci 0x10b7 -&device.id pci 0x1007 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x615c -+subdevice.name Mini PCI 56K Modem - - vendor.id pci 0x10b7 -&device.id pci 0x1201 -+device.name 3c982-TXM 10/100baseTX Dual Port A [Hydra] - - vendor.id pci 0x10b7 -&device.id pci 0x1202 -+device.name 3c982-TXM 10/100baseTX Dual Port B [Hydra] - - vendor.id pci 0x10b7 -&device.id pci 0x1700 -+device.name 3c940 10/100/1000Base-T [Marvell] - - vendor.id pci 0x10b7 -&device.id pci 0x1700 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80eb -+subdevice.name P4P800 Mainboard - - vendor.id pci 0x10b7 -&device.id pci 0x1700 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x0010 -+subdevice.name 3C940 Gigabit LOM Ethernet Adapter - - vendor.id pci 0x10b7 -&device.id pci 0x1700 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x0020 -+subdevice.name 3C941 Gigabit LOM Ethernet Adapter - - vendor.id pci 0x10b7 -&device.id pci 0x1700 -&subvendor.id pci 0x147b -&subdevice.id pci 0x1407 -+subdevice.name KV8-MAX3 motherboard - - vendor.id pci 0x10b7 -&device.id pci 0x3390 -+device.name 3c339 TokenLink Velocity - - vendor.id pci 0x10b7 -&device.id pci 0x3590 -+device.name 3c359 TokenLink Velocity XL - - vendor.id pci 0x10b7 -&device.id pci 0x3590 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x3590 -+subdevice.name TokenLink Velocity XL Adapter (3C359/359B) - - vendor.id pci 0x10b7 -&device.id pci 0x4500 -+device.name 3c450 HomePNA [Tornado] - - vendor.id pci 0x10b7 -&device.id pci 0x5055 -+device.name 3c555 Laptop Hurricane - - vendor.id pci 0x10b7 -&device.id pci 0x5057 -+device.name 3c575 Megahertz 10/100 LAN CardBus [Boomerang] - - vendor.id pci 0x10b7 -&device.id pci 0x5057 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x5a57 -+subdevice.name 3C575 Megahertz 10/100 LAN Cardbus PC Card - - vendor.id pci 0x10b7 -&device.id pci 0x5157 -+device.name 3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x5157 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x5b57 -+subdevice.name 3C575 Megahertz 10/100 LAN Cardbus PC Card - - vendor.id pci 0x10b7 -&device.id pci 0x5257 -+device.name 3cCFE575CT CardBus [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x5257 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x5c57 -+subdevice.name FE575C-3Com 10/100 LAN CardBus-Fast Ethernet - - vendor.id pci 0x10b7 -&device.id pci 0x5900 -+device.name 3c590 10BaseT [Vortex] - - vendor.id pci 0x10b7 -&device.id pci 0x5920 -+device.name 3c592 EISA 10mbps Demon/Vortex - - vendor.id pci 0x10b7 -&device.id pci 0x5950 -+device.name 3c595 100BaseTX [Vortex] - - vendor.id pci 0x10b7 -&device.id pci 0x5951 -+device.name 3c595 100BaseT4 [Vortex] - - vendor.id pci 0x10b7 -&device.id pci 0x5952 -+device.name 3c595 100Base-MII [Vortex] - - vendor.id pci 0x10b7 -&device.id pci 0x5970 -+device.name 3c597 EISA Fast Demon/Vortex - - vendor.id pci 0x10b7 -&device.id pci 0x5b57 -+device.name 3c595 Megahertz 10/100 LAN CardBus [Boomerang] - - vendor.id pci 0x10b7 -&device.id pci 0x5b57 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x5b57 -+subdevice.name 3C575 Megahertz 10/100 LAN Cardbus PC Card - - vendor.id pci 0x10b7 -&device.id pci 0x6000 -+device.name 3CRSHPW796 [OfficeConnect Wireless CardBus] - - vendor.id pci 0x10b7 -&device.id pci 0x6001 -+device.name 3com 3CRWE154G72 [Office Connect Wireless LAN Adapter] - - vendor.id pci 0x10b7 -&device.id pci 0x6055 -+device.name 3c556 Hurricane CardBus [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x6056 -+device.name 3c556B CardBus [Tornado] - - vendor.id pci 0x10b7 -&device.id pci 0x6056 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x6556 -+subdevice.name 10/100 Mini PCI Ethernet Adapter - - vendor.id pci 0x10b7 -&device.id pci 0x6560 -+device.name 3cCFE656 CardBus [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x6560 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x656a -+subdevice.name 3CCFEM656 10/100 LAN+56K Modem CardBus - - vendor.id pci 0x10b7 -&device.id pci 0x6561 -+device.name 3cCFEM656 10/100 LAN+56K Modem CardBus - - vendor.id pci 0x10b7 -&device.id pci 0x6561 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x656b -+subdevice.name 3CCFEM656 10/100 LAN+56K Modem CardBus - - vendor.id pci 0x10b7 -&device.id pci 0x6562 -+device.name 3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x6562 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x656b -+subdevice.name 3CCFEM656B 10/100 LAN+56K Modem CardBus - - vendor.id pci 0x10b7 -&device.id pci 0x6563 -+device.name 3cCFEM656B 10/100 LAN+56K Modem CardBus - - vendor.id pci 0x10b7 -&device.id pci 0x6563 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x656b -+subdevice.name 3CCFEM656 10/100 LAN+56K Modem CardBus - - vendor.id pci 0x10b7 -&device.id pci 0x6564 -+device.name 3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado] - - vendor.id pci 0x10b7 -&device.id pci 0x7646 -+device.name 3cSOHO100-TX Hurricane - - vendor.id pci 0x10b7 -&device.id pci 0x7770 -+device.name 3CRWE777 PCI(PLX) Wireless Adaptor [Airconnect] - - vendor.id pci 0x10b7 -&device.id pci 0x7940 -+device.name 3c803 FDDILink UTP Controller - - vendor.id pci 0x10b7 -&device.id pci 0x7980 -+device.name 3c804 FDDILink SAS Controller - - vendor.id pci 0x10b7 -&device.id pci 0x7990 -+device.name 3c805 FDDILink DAS Controller - - vendor.id pci 0x10b7 -&device.id pci 0x80eb -+device.name 3c940B 10/100/1000Base-T - - vendor.id pci 0x10b7 -&device.id pci 0x8811 -+device.name Token ring - - vendor.id pci 0x10b7 -&device.id pci 0x9000 -+device.name 3c900 10BaseT [Boomerang] - - vendor.id pci 0x10b7 -&device.id pci 0x9001 -+device.name 3c900 10Mbps Combo [Boomerang] - - vendor.id pci 0x10b7 -&device.id pci 0x9004 -+device.name 3c900B-TPO Etherlink XL [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x9004 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x9004 -+subdevice.name 3C900B-TPO Etherlink XL TPO 10Mb - - vendor.id pci 0x10b7 -&device.id pci 0x9005 -+device.name 3c900B-Combo Etherlink XL [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x9005 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x9005 -+subdevice.name 3C900B-Combo Etherlink XL Combo - - vendor.id pci 0x10b7 -&device.id pci 0x9006 -+device.name 3c900B-TPC Etherlink XL [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x900a -+device.name 3c900B-FL 10base-FL [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x9050 -+device.name 3c905 100BaseTX [Boomerang] - - vendor.id pci 0x10b7 -&device.id pci 0x9051 -+device.name 3c905 100BaseT4 [Boomerang] - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -+device.name 3c905B 100BaseTX [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0080 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0081 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0082 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0083 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0084 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0085 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0086 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0087 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0088 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0089 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0090 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0091 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0092 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0093 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0094 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0095 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0096 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0097 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0098 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0099 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9055 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x9055 -+subdevice.name 3C905B Fast Etherlink XL 10/100 - - vendor.id pci 0x10b7 -&device.id pci 0x9056 -+device.name 3c905B-T4 Fast EtherLink XL [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x9058 -+device.name 3c905B Deluxe Etherlink 10/100/BNC [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x905a -+device.name 3c905B-FX Fast Etherlink XL FX 100baseFx [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x9200 -+device.name 3c905C-TX/TX-M [Tornado] - - vendor.id pci 0x10b7 -&device.id pci 0x9200 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0095 -+subdevice.name 3C920 Integrated Fast Ethernet Controller - - vendor.id pci 0x10b7 -&device.id pci 0x9200 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0097 -+subdevice.name 3C920 Integrated Fast Ethernet Controller - - vendor.id pci 0x10b7 -&device.id pci 0x9200 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00fe -+subdevice.name Optiplex GX240 - - vendor.id pci 0x10b7 -&device.id pci 0x9200 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x012a -+subdevice.name 3C920 Integrated Fast Ethernet Controller [Latitude C640] - - vendor.id pci 0x10b7 -&device.id pci 0x9200 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1000 -+subdevice.name 3C905C-TX Fast Etherlink for PC Management NIC - - vendor.id pci 0x10b7 -&device.id pci 0x9200 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x7000 -+subdevice.name 10/100 Mini PCI Ethernet Adapter - - vendor.id pci 0x10b7 -&device.id pci 0x9200 -&subvendor.id pci 0x10f1 -&subdevice.id pci 0x2466 -+subdevice.name Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller) - - vendor.id pci 0x10b7 -&device.id pci 0x9201 -+device.name 3C920B-EMB Integrated Fast Ethernet Controller [Tornado] - - vendor.id pci 0x10b7 -&device.id pci 0x9201 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80ab -+subdevice.name A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller - - vendor.id pci 0x10b7 -&device.id pci 0x9202 -+device.name 3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller - - vendor.id pci 0x10b7 -&device.id pci 0x9210 -+device.name 3C920B-EMB-WNM Integrated Fast Ethernet Controller - - vendor.id pci 0x10b7 -&device.id pci 0x9300 -+device.name 3CSOHO100B-TX 910-A01 [tulip] - - vendor.id pci 0x10b7 -&device.id pci 0x9800 -+device.name 3c980-TX Fast Etherlink XL Server Adapter [Cyclone] - - vendor.id pci 0x10b7 -&device.id pci 0x9800 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x9800 -+subdevice.name 3c980-TX Fast Etherlink XL Server Adapter - - vendor.id pci 0x10b7 -&device.id pci 0x9805 -+device.name 3c980-C 10/100baseTX NIC [Python-T] - - vendor.id pci 0x10b7 -&device.id pci 0x9805 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1201 -+subdevice.name EtherLink Server 10/100 Dual Port A - - vendor.id pci 0x10b7 -&device.id pci 0x9805 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1202 -+subdevice.name EtherLink Server 10/100 Dual Port B - - vendor.id pci 0x10b7 -&device.id pci 0x9805 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x9805 -+subdevice.name 3c980 10/100baseTX NIC [Python-T] - - vendor.id pci 0x10b7 -&device.id pci 0x9805 -&subvendor.id pci 0x10f1 -&subdevice.id pci 0x2462 -+subdevice.name Thunder K7 S2462 - - vendor.id pci 0x10b7 -&device.id pci 0x9900 -+device.name 3C990-TX [Typhoon] - - vendor.id pci 0x10b7 -&device.id pci 0x9902 -+device.name 3CR990-TX-95 [Typhoon 56-bit] - - vendor.id pci 0x10b7 -&device.id pci 0x9903 -+device.name 3CR990-TX-97 [Typhoon 168-bit] - - vendor.id pci 0x10b7 -&device.id pci 0x9904 -+device.name 3C990B-TX-M/3C990BSVR [Typhoon2] - - vendor.id pci 0x10b7 -&device.id pci 0x9904 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1000 -+subdevice.name 3CR990B-TX-M [Typhoon2] - - vendor.id pci 0x10b7 -&device.id pci 0x9904 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x2000 -+subdevice.name 3CR990BSVR [Typhoon2 Server] - - vendor.id pci 0x10b7 -&device.id pci 0x9905 -+device.name 3CR990-FX-95/97/95 [Typhon Fiber] - - vendor.id pci 0x10b7 -&device.id pci 0x9905 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1101 -+subdevice.name 3CR990-FX-95 [Typhoon Fiber 56-bit] - - vendor.id pci 0x10b7 -&device.id pci 0x9905 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1102 -+subdevice.name 3CR990-FX-97 [Typhoon Fiber 168-bit] - - vendor.id pci 0x10b7 -&device.id pci 0x9905 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x2101 -+subdevice.name 3CR990-FX-95 Server [Typhoon Fiber 56-bit] - - vendor.id pci 0x10b7 -&device.id pci 0x9905 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x2102 -+subdevice.name 3CR990-FX-97 Server [Typhoon Fiber 168-bit] - - vendor.id pci 0x10b7 -&device.id pci 0x9908 -+device.name 3CR990SVR95 [Typhoon Server 56-bit] - - vendor.id pci 0x10b7 -&device.id pci 0x9909 -+device.name 3CR990SVR97 [Typhoon Server 168-bit] - - vendor.id pci 0x10b7 -&device.id pci 0x990a -+device.name 3C990SVR [Typhoon Server] - - vendor.id pci 0x10b7 -&device.id pci 0x990b -+device.name 3C990SVR [Typhoon Server] - - vendor.id pci 0x10b8 -+vendor.name Standard Microsystems Corp [SMC] - - vendor.id pci 0x10b8 -&device.id pci 0x0005 -+device.name 83c170 EPIC/100 Fast Ethernet Adapter - - vendor.id pci 0x10b8 -&device.id pci 0x0005 -&subvendor.id pci 0x1055 -&subdevice.id pci 0xe000 -+subdevice.name LANEPIC 10/100 [EVB171Q-PCI] - - vendor.id pci 0x10b8 -&device.id pci 0x0005 -&subvendor.id pci 0x1055 -&subdevice.id pci 0xe002 -+subdevice.name LANEPIC 10/100 [EVB171G-PCI] - - vendor.id pci 0x10b8 -&device.id pci 0x0005 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0xa011 -+subdevice.name EtherPower II 10/100 - - vendor.id pci 0x10b8 -&device.id pci 0x0005 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0xa014 -+subdevice.name EtherPower II 10/100 - - vendor.id pci 0x10b8 -&device.id pci 0x0005 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0xa015 -+subdevice.name EtherPower II 10/100 - - vendor.id pci 0x10b8 -&device.id pci 0x0005 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0xa016 -+subdevice.name EtherPower II 10/100 - - vendor.id pci 0x10b8 -&device.id pci 0x0005 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0xa017 -+subdevice.name EtherPower II 10/100 - - vendor.id pci 0x10b8 -&device.id pci 0x0006 -+device.name 83c175 EPIC/100 Fast Ethernet Adapter - - vendor.id pci 0x10b8 -&device.id pci 0x0006 -&subvendor.id pci 0x1055 -&subdevice.id pci 0xe100 -+subdevice.name LANEPIC Cardbus Fast Ethernet Adapter - - vendor.id pci 0x10b8 -&device.id pci 0x0006 -&subvendor.id pci 0x1055 -&subdevice.id pci 0xe102 -+subdevice.name LANEPIC Cardbus Fast Ethernet Adapter - - vendor.id pci 0x10b8 -&device.id pci 0x0006 -&subvendor.id pci 0x1055 -&subdevice.id pci 0xe300 -+subdevice.name LANEPIC Cardbus Fast Ethernet Adapter - - vendor.id pci 0x10b8 -&device.id pci 0x0006 -&subvendor.id pci 0x1055 -&subdevice.id pci 0xe302 -+subdevice.name LANEPIC Cardbus Fast Ethernet Adapter - - vendor.id pci 0x10b8 -&device.id pci 0x0006 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0xa012 -+subdevice.name LANEPIC Cardbus Fast Ethernet Adapter - - vendor.id pci 0x10b8 -&device.id pci 0x0006 -&subvendor.id pci 0x13a2 -&subdevice.id pci 0x8002 -+subdevice.name LANEPIC Cardbus Fast Ethernet Adapter - - vendor.id pci 0x10b8 -&device.id pci 0x0006 -&subvendor.id pci 0x13a2 -&subdevice.id pci 0x8006 -+subdevice.name LANEPIC Cardbus Fast Ethernet Adapter - - vendor.id pci 0x10b8 -&device.id pci 0x1000 -+device.name FDC 37c665 - - vendor.id pci 0x10b8 -&device.id pci 0x1001 -+device.name FDC 37C922 - - vendor.id pci 0x10b8 -&device.id pci 0x2802 -+device.name SMC2802W [EZ Connect g] - - vendor.id pci 0x10b8 -&device.id pci 0xa011 -+device.name 83C170QF - - vendor.id pci 0x10b8 -&device.id pci 0xb106 -+device.name SMC34C90 - - vendor.id pci 0x10b9 -+vendor.name ALi Corporation - - vendor.id pci 0x10b9 -&device.id pci 0x0101 -+device.name CMI8338/C3DX PCI Audio Device - - vendor.id pci 0x10b9 -&device.id pci 0x0111 -+device.name C-Media CMI8738/C3DX Audio Device (OEM) - - vendor.id pci 0x10b9 -&device.id pci 0x0111 -&subvendor.id pci 0x10b9 -&subdevice.id pci 0x0111 -+subdevice.name C-Media CMI8738/C3DX Audio Device (OEM) - - vendor.id pci 0x10b9 -&device.id pci 0x0780 -+device.name Multi-IO Card - - vendor.id pci 0x10b9 -&device.id pci 0x0782 -+device.name Multi-IO Card - - vendor.id pci 0x10b9 -&device.id pci 0x1435 -+device.name M1435 - - vendor.id pci 0x10b9 -&device.id pci 0x1445 -+device.name M1445 - - vendor.id pci 0x10b9 -&device.id pci 0x1449 -+device.name M1449 - - vendor.id pci 0x10b9 -&device.id pci 0x1451 -+device.name M1451 - - vendor.id pci 0x10b9 -&device.id pci 0x1461 -+device.name M1461 - - vendor.id pci 0x10b9 -&device.id pci 0x1489 -+device.name M1489 - - vendor.id pci 0x10b9 -&device.id pci 0x1511 -+device.name M1511 [Aladdin] - - vendor.id pci 0x10b9 -&device.id pci 0x1512 -+device.name M1512 [Aladdin] - - vendor.id pci 0x10b9 -&device.id pci 0x1513 -+device.name M1513 [Aladdin] - - vendor.id pci 0x10b9 -&device.id pci 0x1521 -+device.name M1521 [Aladdin III] - - vendor.id pci 0x10b9 -&device.id pci 0x1521 -&subvendor.id pci 0x10b9 -&subdevice.id pci 0x1521 -+subdevice.name ALI M1521 Aladdin III CPU Bridge - - vendor.id pci 0x10b9 -&device.id pci 0x1523 -+device.name M1523 - - vendor.id pci 0x10b9 -&device.id pci 0x1523 -&subvendor.id pci 0x10b9 -&subdevice.id pci 0x1523 -+subdevice.name ALI M1523 ISA Bridge - - vendor.id pci 0x10b9 -&device.id pci 0x1531 -+device.name M1531 [Aladdin IV] - - vendor.id pci 0x10b9 -&device.id pci 0x1533 -+device.name M1533 PCI to ISA Bridge [Aladdin IV] - - vendor.id pci 0x10b9 -&device.id pci 0x1533 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x053b -+subdevice.name ThinkPad R40e (2684-HVG) PCI to ISA Bridge - - vendor.id pci 0x10b9 -&device.id pci 0x1533 -&subvendor.id pci 0x10b9 -&subdevice.id pci 0x1533 -+subdevice.name ALI M1533 Aladdin IV ISA Bridge - - vendor.id pci 0x10b9 -&device.id pci 0x1541 -+device.name M1541 - - vendor.id pci 0x10b9 -&device.id pci 0x1541 -&subvendor.id pci 0x10b9 -&subdevice.id pci 0x1541 -+subdevice.name ALI M1541 Aladdin V/V+ AGP System Controller - - vendor.id pci 0x10b9 -&device.id pci 0x1543 -+device.name M1543 - - vendor.id pci 0x10b9 -&device.id pci 0x1563 -+device.name M1563 HyperTransport South Bridge - - vendor.id pci 0x10b9 -&device.id pci 0x1621 -+device.name M1621 - - vendor.id pci 0x10b9 -&device.id pci 0x1631 -+device.name ALI M1631 PCI North Bridge Aladdin Pro III - - vendor.id pci 0x10b9 -&device.id pci 0x1632 -+device.name M1632M Northbridge+Trident - - vendor.id pci 0x10b9 -&device.id pci 0x1641 -+device.name ALI M1641 PCI North Bridge Aladdin Pro IV - - vendor.id pci 0x10b9 -&device.id pci 0x1644 -+device.name M1644/M1644T Northbridge+Trident - - vendor.id pci 0x10b9 -&device.id pci 0x1646 -+device.name M1646 Northbridge+Trident - - vendor.id pci 0x10b9 -&device.id pci 0x1647 -+device.name M1647 Northbridge [MAGiK 1 / MobileMAGiK 1] - - vendor.id pci 0x10b9 -&device.id pci 0x1651 -+device.name M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM] - - vendor.id pci 0x10b9 -&device.id pci 0x1671 -+device.name M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR] - - vendor.id pci 0x10b9 -&device.id pci 0x1672 -+device.name M1672 Northbridge [CyberALADDiN-P4] - - vendor.id pci 0x10b9 -&device.id pci 0x1681 -+device.name M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR] - - vendor.id pci 0x10b9 -&device.id pci 0x1687 -+device.name M1687 K8 Northbridge [AGP8X and HyperTransport] - - vendor.id pci 0x10b9 -&device.id pci 0x1689 -+device.name M1689 K8 Northbridge [Super K8 Single Chip] - - vendor.id pci 0x10b9 -&device.id pci 0x3141 -+device.name M3141 - - vendor.id pci 0x10b9 -&device.id pci 0x3143 -+device.name M3143 - - vendor.id pci 0x10b9 -&device.id pci 0x3145 -+device.name M3145 - - vendor.id pci 0x10b9 -&device.id pci 0x3147 -+device.name M3147 - - vendor.id pci 0x10b9 -&device.id pci 0x3149 -+device.name M3149 - - vendor.id pci 0x10b9 -&device.id pci 0x3151 -+device.name M3151 - - vendor.id pci 0x10b9 -&device.id pci 0x3307 -+device.name M3307 - - vendor.id pci 0x10b9 -&device.id pci 0x3309 -+device.name M3309 - - vendor.id pci 0x10b9 -&device.id pci 0x3323 -+device.name M3325 Video/Audio Decoder - - vendor.id pci 0x10b9 -&device.id pci 0x5212 -+device.name M4803 - - vendor.id pci 0x10b9 -&device.id pci 0x5215 -+device.name MS4803 - - vendor.id pci 0x10b9 -&device.id pci 0x5217 -+device.name M5217H - - vendor.id pci 0x10b9 -&device.id pci 0x5219 -+device.name M5219 - - vendor.id pci 0x10b9 -&device.id pci 0x5225 -+device.name M5225 - - vendor.id pci 0x10b9 -&device.id pci 0x5229 -+device.name M5229 IDE - - vendor.id pci 0x10b9 -&device.id pci 0x5229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x050f -+subdevice.name ThinkPad R30 - - vendor.id pci 0x10b9 -&device.id pci 0x5229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x053d -+subdevice.name ThinkPad R40e (2684-HVG) builtin IDE - - vendor.id pci 0x10b9 -&device.id pci 0x5229 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0024 -+subdevice.name Pavilion ze4400 builtin IDE - - vendor.id pci 0x10b9 -&device.id pci 0x5229 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8053 -+subdevice.name A7A266 Motherboard IDE - - vendor.id pci 0x10b9 -&device.id pci 0x5235 -+device.name M5225 - - vendor.id pci 0x10b9 -&device.id pci 0x5237 -+device.name USB 1.1 Controller - - vendor.id pci 0x10b9 -&device.id pci 0x5237 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0540 -+subdevice.name ThinkPad R40e (2684-HVG) builtin USB - - vendor.id pci 0x10b9 -&device.id pci 0x5237 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0024 -+subdevice.name Pavilion ze4400 builtin USB - - vendor.id pci 0x10b9 -&device.id pci 0x5239 -+device.name USB 2.0 Controller - - vendor.id pci 0x10b9 -&device.id pci 0x5243 -+device.name M1541 PCI to AGP Controller - - vendor.id pci 0x10b9 -&device.id pci 0x5246 -+device.name AGP8X Controller - - vendor.id pci 0x10b9 -&device.id pci 0x5247 -+device.name PCI to AGP Controller - - vendor.id pci 0x10b9 -&device.id pci 0x5249 -+device.name M5249 HTT to PCI Bridge - - vendor.id pci 0x10b9 -&device.id pci 0x5251 -+device.name M5251 P1394 OHCI 1.0 Controller - - vendor.id pci 0x10b9 -&device.id pci 0x5253 -+device.name M5253 P1394 OHCI 1.1 Controller - - vendor.id pci 0x10b9 -&device.id pci 0x5261 -+device.name M5261 Ethernet Controller - - vendor.id pci 0x10b9 -&device.id pci 0x5263 -+device.name M5263 Ethernet Controller - - vendor.id pci 0x10b9 -&device.id pci 0x5281 -+device.name ALi M5281 Serial ATA / RAID Host Controller - - vendor.id pci 0x10b9 -&device.id pci 0x5450 -+device.name Lucent Technologies Soft Modem AMR - - vendor.id pci 0x10b9 -&device.id pci 0x5451 -+device.name M5451 PCI AC-Link Controller Audio Device - - vendor.id pci 0x10b9 -&device.id pci 0x5451 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0506 -+subdevice.name ThinkPad R30 - - vendor.id pci 0x10b9 -&device.id pci 0x5451 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x053e -+subdevice.name ThinkPad R40e (2684-HVG) builtin Audio - - vendor.id pci 0x10b9 -&device.id pci 0x5451 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0024 -+subdevice.name Pavilion ze4400 builtin Audio - - vendor.id pci 0x10b9 -&device.id pci 0x5451 -&subvendor.id pci 0x10b9 -&subdevice.id pci 0x5451 -+subdevice.name HP Compaq nc4010 (DY885AA#ABN) - - vendor.id pci 0x10b9 -&device.id pci 0x5453 -+device.name M5453 PCI AC-Link Controller Modem Device - - vendor.id pci 0x10b9 -&device.id pci 0x5455 -+device.name M5455 PCI AC-Link Controller Audio Device - - vendor.id pci 0x10b9 -&device.id pci 0x5457 -+device.name M5457 AC'97 Modem Controller - - vendor.id pci 0x10b9 -&device.id pci 0x5457 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0535 -+subdevice.name ThinkPad R40e (2684-HVG) builtin modem - - vendor.id pci 0x10b9 -&device.id pci 0x5457 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0024 -+subdevice.name Pavilion ze4400 builtin Modem Device - - vendor.id pci 0x10b9 -&device.id pci 0x5459 -+device.name SmartLink SmartPCI561 56K Modem - - vendor.id pci 0x10b9 -&device.id pci 0x545a -+device.name SmartLink SmartPCI563 56K Modem - - vendor.id pci 0x10b9 -&device.id pci 0x5471 -+device.name M5471 Memory Stick Controller - - vendor.id pci 0x10b9 -&device.id pci 0x5473 -+device.name M5473 SD-MMC Controller - - vendor.id pci 0x10b9 -&device.id pci 0x7101 -+device.name M7101 Power Management Controller [PMU] - - vendor.id pci 0x10b9 -&device.id pci 0x7101 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0510 -+subdevice.name ThinkPad R30 - - vendor.id pci 0x10b9 -&device.id pci 0x7101 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x053c -+subdevice.name ThinkPad R40e (2684-HVG) Power Management Controller - - vendor.id pci 0x10b9 -&device.id pci 0x7101 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0024 -+subdevice.name Pavilion ze4400 - - vendor.id pci 0x10ba -+vendor.name Mitsubishi Electric Corp. - - vendor.id pci 0x10ba -&device.id pci 0x0301 -+device.name AccelGraphics AccelECLIPSE - - vendor.id pci 0x10ba -&device.id pci 0x0304 -+device.name AccelGALAXY A2100 [OEM Evans & Sutherland] - - vendor.id pci 0x10ba -&device.id pci 0x0308 -+device.name Tornado 3000 [OEM Evans & Sutherland] - - vendor.id pci 0x10ba -&device.id pci 0x1002 -+device.name VG500 [VolumePro Volume Rendering Accelerator] - - vendor.id pci 0x10bb -+vendor.name Dapha Electronics Corporation - - vendor.id pci 0x10bc -+vendor.name Advanced Logic Research - - vendor.id pci 0x10bd -+vendor.name Surecom Technology - - vendor.id pci 0x10bd -&device.id pci 0x0e34 -+device.name NE-34 - - vendor.id pci 0x10be -+vendor.name Tseng Labs International Co. - - vendor.id pci 0x10bf -+vendor.name Most Inc - - vendor.id pci 0x10c0 -+vendor.name Boca Research Inc. - - vendor.id pci 0x10c1 -+vendor.name ICM Co., Ltd. - - vendor.id pci 0x10c2 -+vendor.name Auspex Systems Inc. - - vendor.id pci 0x10c3 -+vendor.name Samsung Semiconductors, Inc. - - vendor.id pci 0x10c3 -&device.id pci 0x1100 -+device.name Smartether100 SC1100 LAN Adapter (i82557B) - - vendor.id pci 0x10c4 -+vendor.name Award Software International Inc. - - vendor.id pci 0x10c5 -+vendor.name Xerox Corporation - - vendor.id pci 0x10c6 -+vendor.name Rambus Inc. - - vendor.id pci 0x10c7 -+vendor.name Media Vision - - vendor.id pci 0x10c8 -+vendor.name Neomagic Corporation - - vendor.id pci 0x10c8 -&device.id pci 0x0001 -+device.name NM2070 [MagicGraph 128] - - vendor.id pci 0x10c8 -&device.id pci 0x0002 -+device.name NM2090 [MagicGraph 128V] - - vendor.id pci 0x10c8 -&device.id pci 0x0003 -+device.name NM2093 [MagicGraph 128ZV] - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -+device.name NM2160 [MagicGraph 128XD] - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x00ba -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x1007 -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0074 -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0075 -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x007d -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x007e -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x802f -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x104d -&subdevice.id pci 0x801b -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x104d -&subdevice.id pci 0x802f -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x104d -&subdevice.id pci 0x830b -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x10ba -&subdevice.id pci 0x0e00 -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x10c8 -&subdevice.id pci 0x0004 -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1029 -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x10f7 -&subdevice.id pci 0x8308 -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x10f7 -&subdevice.id pci 0x8309 -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x10f7 -&subdevice.id pci 0x830b -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x10f7 -&subdevice.id pci 0x830d -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -&subvendor.id pci 0x10f7 -&subdevice.id pci 0x8312 -+subdevice.name MagicGraph 128XD - - vendor.id pci 0x10c8 -&device.id pci 0x0005 -+device.name NM2200 [MagicGraph 256AV] - - vendor.id pci 0x10c8 -&device.id pci 0x0005 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x00dd -+subdevice.name ThinkPad 570 - - vendor.id pci 0x10c8 -&device.id pci 0x0005 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0088 -+subdevice.name Latitude CPi A - - vendor.id pci 0x10c8 -&device.id pci 0x0006 -+device.name NM2360 [MagicMedia 256ZX] - - vendor.id pci 0x10c8 -&device.id pci 0x0016 -+device.name NM2380 [MagicMedia 256XL+] - - vendor.id pci 0x10c8 -&device.id pci 0x0016 -&subvendor.id pci 0x10c8 -&subdevice.id pci 0x0016 -+subdevice.name MagicMedia 256XL+ - - vendor.id pci 0x10c8 -&device.id pci 0x0025 -+device.name NM2230 [MagicGraph 256AV+] - - vendor.id pci 0x10c8 -&device.id pci 0x0083 -+device.name NM2093 [MagicGraph 128ZV+] - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -+device.name NM2200 [MagicMedia 256AV Audio] - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0d1 -+subdevice.name MagicMedia 256AV Audio Device on Discovery - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb126 -+subdevice.name MagicMedia 256AV Audio Device on Durango - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x00dd -+subdevice.name MagicMedia 256AV Audio Device on BlackTip Thinkpad - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x1003 -+subdevice.name MagicMedia 256AV Audio Device on TravelMate 720 - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0088 -+subdevice.name Latitude CPi A - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x008f -+subdevice.name MagicMedia 256AV Audio Device on Colorado Inspiron - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0007 -+subdevice.name MagicMedia 256AV Audio Device on Voyager II - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0008 -+subdevice.name MagicMedia 256AV Audio Device on Voyager III - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x103c -&subdevice.id pci 0x000d -+subdevice.name MagicMedia 256AV Audio Device on Omnibook 900 - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x10c8 -&subdevice.id pci 0x8005 -+subdevice.name MagicMedia 256AV Audio Device on FireAnt - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x110a -&subdevice.id pci 0x8005 -+subdevice.name MagicMedia 256AV Audio Device - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x14c0 -&subdevice.id pci 0x0004 -+subdevice.name MagicMedia 256AV Audio Device - - vendor.id pci 0x10c8 -&device.id pci 0x8006 -+device.name NM2360 [MagicMedia 256ZX Audio] - - vendor.id pci 0x10c8 -&device.id pci 0x8016 -+device.name NM2380 [MagicMedia 256XL+ Audio] - - vendor.id pci 0x10c9 -+vendor.name Dataexpert Corporation - - vendor.id pci 0x10ca -+vendor.name Fujitsu Microelectr., Inc. - - vendor.id pci 0x10cb -+vendor.name Omron Corporation - - vendor.id pci 0x10cc -+vendor.name Mai Logic Incorporated - - vendor.id pci 0x10cc -&device.id pci 0x0660 -+device.name Articia S Host Bridge - - vendor.id pci 0x10cc -&device.id pci 0x0661 -+device.name Articia S PCI Bridge - - vendor.id pci 0x10cd -+vendor.name Advanced System Products, Inc - - vendor.id pci 0x10cd -&device.id pci 0x1100 -+device.name ASC1100 - - vendor.id pci 0x10cd -&device.id pci 0x1200 -+device.name ASC1200 [(abp940) Fast SCSI-II] - - vendor.id pci 0x10cd -&device.id pci 0x1300 -+device.name ABP940-U / ABP960-U - - vendor.id pci 0x10cd -&device.id pci 0x1300 -&subvendor.id pci 0x10cd -&subdevice.id pci 0x1310 -+subdevice.name ASC1300 SCSI Adapter - - vendor.id pci 0x10cd -&device.id pci 0x2300 -+device.name ABP940-UW - - vendor.id pci 0x10cd -&device.id pci 0x2500 -+device.name ABP940-U2W - - vendor.id pci 0x10ce -+vendor.name Radius - - vendor.id pci 0x10cf -+vendor.name Fujitsu Limited. - - vendor.id pci 0x10cf -&device.id pci 0x2001 -+device.name mb86605 - - vendor.id pci 0x10d1 -+vendor.name FuturePlus Systems Corp. - - vendor.id pci 0x10d2 -+vendor.name Molex Incorporated - - vendor.id pci 0x10d3 -+vendor.name Jabil Circuit Inc - - vendor.id pci 0x10d4 -+vendor.name Hualon Microelectronics - - vendor.id pci 0x10d5 -+vendor.name Autologic Inc. - - vendor.id pci 0x10d6 -+vendor.name Cetia - - vendor.id pci 0x10d7 -+vendor.name BCM Advanced Research - - vendor.id pci 0x10d8 -+vendor.name Advanced Peripherals Labs - - vendor.id pci 0x10d9 -+vendor.name Macronix, Inc. [MXIC] - - vendor.id pci 0x10d9 -&device.id pci 0x0512 -+device.name MX98713 - - vendor.id pci 0x10d9 -&device.id pci 0x0531 -+device.name MX987x5 - - vendor.id pci 0x10d9 -&device.id pci 0x0531 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1200 -+subdevice.name DFE-540TX ProFAST 10/100 Adapter - - vendor.id pci 0x10d9 -&device.id pci 0x8625 -+device.name MX86250 - - vendor.id pci 0x10d9 -&device.id pci 0x8888 -+device.name MX86200 - - vendor.id pci 0x10da -+vendor.name Compaq IPG-Austin - - vendor.id pci 0x10da -&device.id pci 0x0508 -+device.name TC4048 Token Ring 4/16 - - vendor.id pci 0x10da -&device.id pci 0x3390 -+device.name Tl3c3x9 - - vendor.id pci 0x10db -+vendor.name Rohm LSI Systems, Inc. - - vendor.id pci 0x10dc -+vendor.name CERN/ECP/EDU - - vendor.id pci 0x10dc -&device.id pci 0x0001 -+device.name STAR/RD24 SCI-PCI (PMC) - - vendor.id pci 0x10dc -&device.id pci 0x0002 -+device.name TAR/RD24 SCI-PCI (PMC) - - vendor.id pci 0x10dc -&device.id pci 0x0021 -+device.name HIPPI destination - - vendor.id pci 0x10dc -&device.id pci 0x0022 -+device.name HIPPI source - - vendor.id pci 0x10dc -&device.id pci 0x10dc -+device.name ATT2C15-3 FPGA - - vendor.id pci 0x10dd -+vendor.name Evans & Sutherland - - vendor.id pci 0x10de -+vendor.name nVidia Corporation - - vendor.id pci 0x10de -&device.id pci 0x0008 -+device.name NV1 [EDGE 3D] - - vendor.id pci 0x10de -&device.id pci 0x0009 -+device.name NV1 [EDGE 3D] - - vendor.id pci 0x10de -&device.id pci 0x0010 -+device.name NV2 [Mutara V08] - - vendor.id pci 0x10de -&device.id pci 0x0020 -+device.name NV4 [RIVA TNT] - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0200 -+subdevice.name V3400 TNT - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1048 -&subdevice.id pci 0x0c18 -+subdevice.name Erazor II SGRAM - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1048 -&subdevice.id pci 0x0c1b -+subdevice.name Erazor II - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0550 -+subdevice.name Viper V550 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0552 -+subdevice.name Viper V550 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4804 -+subdevice.name Viper V550 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4808 -+subdevice.name Viper V550 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4810 -+subdevice.name Viper V550 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4812 -+subdevice.name Viper V550 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4815 -+subdevice.name Viper V550 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4820 -+subdevice.name Viper V550 with TV out - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4822 -+subdevice.name Viper V550 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4904 -+subdevice.name Viper V550 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4914 -+subdevice.name Viper V550 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x8225 -+subdevice.name Viper V550 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x273d -+subdevice.name Velocity 4400 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x273e -+subdevice.name Velocity 4400 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x2740 -+subdevice.name Velocity 4400 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0020 -+subdevice.name Riva TNT - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1015 -+subdevice.name Graphics Blaster CT6710 - - vendor.id pci 0x10de -&device.id pci 0x0020 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1016 -+subdevice.name Graphics Blaster RIVA TNT - - vendor.id pci 0x10de -&device.id pci 0x0028 -+device.name NV5 [RIVA TNT2/TNT2 Pro] - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0200 -+subdevice.name AGP-V3800 SGRAM - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0201 -+subdevice.name AGP-V3800 SDRAM - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0205 -+subdevice.name PCI-V3800 - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x4000 -+subdevice.name AGP-V3800PRO - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1048 -&subdevice.id pci 0x0c21 -+subdevice.name Synergy II - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1048 -&subdevice.id pci 0x0c31 -+subdevice.name Erazor III - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x107d -&subdevice.id pci 0x2134 -+subdevice.name WinFast 3D S320 II + TV-Out - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4804 -+subdevice.name Viper V770 - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4a00 -+subdevice.name Viper V770 - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4a02 -+subdevice.name Viper V770 Ultra - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x5a00 -+subdevice.name RIVA TNT2/TNT2 Pro - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x6a02 -+subdevice.name Viper V770 Ultra - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x7a02 -+subdevice.name Viper V770 Ultra - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0005 -+subdevice.name RIVA TNT2 Pro - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x10de -&subdevice.id pci 0x000f -+subdevice.name Compaq NVIDIA TNT2 Pro - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1020 -+subdevice.name 3D Blaster RIVA TNT2 - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1026 -+subdevice.name 3D Blaster RIVA TNT2 Digital - - vendor.id pci 0x10de -&device.id pci 0x0028 -&subvendor.id pci 0x14af -&subdevice.id pci 0x5810 -+subdevice.name Maxi Gamer Xentor - - vendor.id pci 0x10de -&device.id pci 0x0029 -+device.name NV5 [RIVA TNT2 Ultra] - - vendor.id pci 0x10de -&device.id pci 0x0029 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0200 -+subdevice.name AGP-V3800 Deluxe - - vendor.id pci 0x10de -&device.id pci 0x0029 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0201 -+subdevice.name AGP-V3800 Ultra SDRAM - - vendor.id pci 0x10de -&device.id pci 0x0029 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0205 -+subdevice.name PCI-V3800 Ultra - - vendor.id pci 0x10de -&device.id pci 0x0029 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1021 -+subdevice.name 3D Blaster RIVA TNT2 Ultra - - vendor.id pci 0x10de -&device.id pci 0x0029 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1029 -+subdevice.name 3D Blaster RIVA TNT2 Ultra - - vendor.id pci 0x10de -&device.id pci 0x0029 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x102f -+subdevice.name 3D Blaster RIVA TNT2 Ultra - - vendor.id pci 0x10de -&device.id pci 0x0029 -&subvendor.id pci 0x14af -&subdevice.id pci 0x5820 -+subdevice.name Maxi Gamer Xentor 32 - - vendor.id pci 0x10de -&device.id pci 0x002a -+device.name NV5 [Riva TnT2] - - vendor.id pci 0x10de -&device.id pci 0x002b -+device.name NV5 [Riva TnT2] - - vendor.id pci 0x10de -&device.id pci 0x002c -+device.name NV6 [Vanta/Vanta LT] - - vendor.id pci 0x10de -&device.id pci 0x002c -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0200 -+subdevice.name AGP-V3800 Combat SDRAM - - vendor.id pci 0x10de -&device.id pci 0x002c -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0201 -+subdevice.name AGP-V3800 Combat - - vendor.id pci 0x10de -&device.id pci 0x002c -&subvendor.id pci 0x1092 -&subdevice.id pci 0x6820 -+subdevice.name Viper V730 - - vendor.id pci 0x10de -&device.id pci 0x002c -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1031 -+subdevice.name CT6938 VANTA 8MB - - vendor.id pci 0x10de -&device.id pci 0x002c -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1034 -+subdevice.name CT6894 VANTA 16MB - - vendor.id pci 0x10de -&device.id pci 0x002c -&subvendor.id pci 0x14af -&subdevice.id pci 0x5008 -+subdevice.name Maxi Gamer Phoenix 2 - - vendor.id pci 0x10de -&device.id pci 0x002d -+device.name NV5M64 [RIVA TNT2 Model 64/Model 64 Pro] - - vendor.id pci 0x10de -&device.id pci 0x002d -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0200 -+subdevice.name AGP-V3800M - - vendor.id pci 0x10de -&device.id pci 0x002d -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0201 -+subdevice.name AGP-V3800M - - vendor.id pci 0x10de -&device.id pci 0x002d -&subvendor.id pci 0x1048 -&subdevice.id pci 0x0c3a -+subdevice.name Erazor III LT - - vendor.id pci 0x10de -&device.id pci 0x002d -&subvendor.id pci 0x10de -&subdevice.id pci 0x001e -+subdevice.name M64 AGP4x - - vendor.id pci 0x10de -&device.id pci 0x002d -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1023 -+subdevice.name CT6892 RIVA TNT2 Value - - vendor.id pci 0x10de -&device.id pci 0x002d -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1024 -+subdevice.name CT6932 RIVA TNT2 Value 32Mb - - vendor.id pci 0x10de -&device.id pci 0x002d -&subvendor.id pci 0x1102 -&subdevice.id pci 0x102c -+subdevice.name CT6931 RIVA TNT2 Value [Jumper] - - vendor.id pci 0x10de -&device.id pci 0x002d -&subvendor.id pci 0x1462 -&subdevice.id pci 0x8808 -+subdevice.name MSI-8808 - - vendor.id pci 0x10de -&device.id pci 0x002d -&subvendor.id pci 0x1554 -&subdevice.id pci 0x1041 -+subdevice.name Pixelview RIVA TNT2 M64 - - vendor.id pci 0x10de -&device.id pci 0x002e -+device.name NV6 [Vanta] - - vendor.id pci 0x10de -&device.id pci 0x002f -+device.name NV6 [Vanta] - - vendor.id pci 0x10de -&device.id pci 0x0034 -+device.name MCP04 SMBus - - vendor.id pci 0x10de -&device.id pci 0x0035 -+device.name MCP04 IDE - - vendor.id pci 0x10de -&device.id pci 0x0036 -+device.name MCP04 Serial ATA Controller - - vendor.id pci 0x10de -&device.id pci 0x0037 -+device.name MCP04 Ethernet Controller - - vendor.id pci 0x10de -&device.id pci 0x0038 -+device.name MCP04 Ethernet Controller - - vendor.id pci 0x10de -&device.id pci 0x003a -+device.name MCP04 AC'97 Audio Controller - - vendor.id pci 0x10de -&device.id pci 0x003b -+device.name MCP04 USB Controller - - vendor.id pci 0x10de -&device.id pci 0x003c -+device.name MCP04 USB Controller - - vendor.id pci 0x10de -&device.id pci 0x003d -+device.name MCP04 PCI Bridge - - vendor.id pci 0x10de -&device.id pci 0x003e -+device.name MCP04 Serial ATA Controller - - vendor.id pci 0x10de -&device.id pci 0x0040 -+device.name nv40 [GeForce 6800 Ultra] - - vendor.id pci 0x10de -&device.id pci 0x0041 -+device.name NV40 [GeForce 6800] - - vendor.id pci 0x10de -&device.id pci 0x0042 -+device.name NV40.2 - - vendor.id pci 0x10de -&device.id pci 0x0043 -+device.name NV40.3 - - vendor.id pci 0x10de -&device.id pci 0x0045 -+device.name NV40 [GeForce 6800 GT] - - vendor.id pci 0x10de -&device.id pci 0x0049 -+device.name NV40GL - - vendor.id pci 0x10de -&device.id pci 0x004e -+device.name NV40GL [Quadro FX 4000] - - vendor.id pci 0x10de -&device.id pci 0x0052 -+device.name CK804 SMBus - - vendor.id pci 0x10de -&device.id pci 0x0053 -+device.name CK804 IDE - - vendor.id pci 0x10de -&device.id pci 0x0054 -+device.name CK804 Serial ATA Controller - - vendor.id pci 0x10de -&device.id pci 0x0055 -+device.name CK804 Serial ATA Controller - - vendor.id pci 0x10de -&device.id pci 0x0056 -+device.name CK804 Ethernet Controller - - vendor.id pci 0x10de -&device.id pci 0x0057 -+device.name CK804 Ethernet Controller - - vendor.id pci 0x10de -&device.id pci 0x0059 -+device.name CK804 AC'97 Audio Controller - - vendor.id pci 0x10de -&device.id pci 0x005a -+device.name CK804 USB Controller - - vendor.id pci 0x10de -&device.id pci 0x005b -+device.name CK804 USB Controller - - vendor.id pci 0x10de -&device.id pci 0x005c -+device.name CK804 PCI Bridge - - vendor.id pci 0x10de -&device.id pci 0x005d -+device.name CK804 PCIE Bridge - - vendor.id pci 0x10de -&device.id pci 0x005e -+device.name CK804 Memory Controller - - vendor.id pci 0x10de -&device.id pci 0x0060 -+device.name nForce2 ISA Bridge - - vendor.id pci 0x10de -&device.id pci 0x0060 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80ad -+subdevice.name A7N8X Mainboard - - vendor.id pci 0x10de -&device.id pci 0x0064 -+device.name nForce2 SMBus (MCP) - - vendor.id pci 0x10de -&device.id pci 0x0065 -+device.name nForce2 IDE - - vendor.id pci 0x10de -&device.id pci 0x0066 -+device.name nForce2 Ethernet Controller - - vendor.id pci 0x10de -&device.id pci 0x0066 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a7 -+subdevice.name A7N8X Mainboard onboard nForce2 Ethernet - - vendor.id pci 0x10de -&device.id pci 0x0067 -+device.name nForce2 USB Controller - - vendor.id pci 0x10de -&device.id pci 0x0067 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0c11 -+subdevice.name A7N8X Mainboard - - vendor.id pci 0x10de -&device.id pci 0x0068 -+device.name nForce2 USB Controller - - vendor.id pci 0x10de -&device.id pci 0x0068 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0c11 -+subdevice.name A7N8X Mainboard - - vendor.id pci 0x10de -&device.id pci 0x006a -+device.name nForce2 AC97 Audio Controler (MCP) - - vendor.id pci 0x10de -&device.id pci 0x006b -+device.name nForce MultiMedia audio [Via VT82C686B] - - vendor.id pci 0x10de -&device.id pci 0x006b -&subvendor.id pci 0x10de -&subdevice.id pci 0x006b -+subdevice.name nForce2 MCP Audio Processing Unit - - vendor.id pci 0x10de -&device.id pci 0x006c -+device.name nForce2 External PCI Bridge - - vendor.id pci 0x10de -&device.id pci 0x006d -+device.name nForce2 PCI Bridge - - vendor.id pci 0x10de -&device.id pci 0x006e -+device.name nForce2 FireWire (IEEE 1394) Controller - - vendor.id pci 0x10de -&device.id pci 0x0084 -+device.name MCP2A SMBus - - vendor.id pci 0x10de -&device.id pci 0x0085 -+device.name MCP2A IDE - - vendor.id pci 0x10de -&device.id pci 0x0086 -+device.name MCP2A Ethernet Controller - - vendor.id pci 0x10de -&device.id pci 0x0087 -+device.name MCP2A USB Controller - - vendor.id pci 0x10de -&device.id pci 0x0088 -+device.name MCP2A USB Controller - - vendor.id pci 0x10de -&device.id pci 0x008a -+device.name MCP2S AC'97 Audio Controller - - vendor.id pci 0x10de -&device.id pci 0x008b -+device.name MCP2A PCI Bridge - - vendor.id pci 0x10de -&device.id pci 0x008c -+device.name MCP2A Ethernet Controller - - vendor.id pci 0x10de -&device.id pci 0x008e -+device.name nForce2 Serial ATA Controller - - vendor.id pci 0x10de -&device.id pci 0x00a0 -+device.name NV5 [Aladdin TNT2] - - vendor.id pci 0x10de -&device.id pci 0x00a0 -&subvendor.id pci 0x14af -&subdevice.id pci 0x5810 -+subdevice.name Maxi Gamer Xentor - - vendor.id pci 0x10de -&device.id pci 0x00c0 -+device.name NV41.0 - - vendor.id pci 0x10de -&device.id pci 0x00c1 -+device.name NV41.1 - - vendor.id pci 0x10de -&device.id pci 0x00c2 -+device.name NV41.2 - - vendor.id pci 0x10de -&device.id pci 0x00c8 -+device.name NV41.8 - - vendor.id pci 0x10de -&device.id pci 0x00ce -+device.name NV41GL - - vendor.id pci 0x10de -&device.id pci 0x00d0 -+device.name nForce3 LPC Bridge - - vendor.id pci 0x10de -&device.id pci 0x00d1 -+device.name nForce3 Host Bridge - - vendor.id pci 0x10de -&device.id pci 0x00d2 -+device.name nForce3 AGP Bridge - - vendor.id pci 0x10de -&device.id pci 0x00d3 -+device.name CK804 Memory Controller - - vendor.id pci 0x10de -&device.id pci 0x00d4 -+device.name nForce3 SMBus - - vendor.id pci 0x10de -&device.id pci 0x00d5 -+device.name nForce3 IDE - - vendor.id pci 0x10de -&device.id pci 0x00d6 -+device.name nForce3 Ethernet - - vendor.id pci 0x10de -&device.id pci 0x00d7 -+device.name nForce3 USB 1.1 - - vendor.id pci 0x10de -&device.id pci 0x00d8 -+device.name nForce3 USB 2.0 - - vendor.id pci 0x10de -&device.id pci 0x00da -+device.name nForce3 Audio - - vendor.id pci 0x10de -&device.id pci 0x00dd -+device.name nForce3 PCI Bridge - - vendor.id pci 0x10de -&device.id pci 0x00df -+device.name CK8S Ethernet Controller - - vendor.id pci 0x10de -&device.id pci 0x00e1 -+device.name nForce3 250Gb Host Bridge - - vendor.id pci 0x10de -&device.id pci 0x00e2 -+device.name nForce3 250Gb AGP Host to PCI Bridge - - vendor.id pci 0x10de -&device.id pci 0x00e3 -+device.name CK8S Serial ATA Controller (v2.5) - - vendor.id pci 0x10de -&device.id pci 0x00e4 -+device.name nForce 250Gb PCI System Management - - vendor.id pci 0x10de -&device.id pci 0x00e5 -+device.name CK8S Parallel ATA Controller (v2.5) - - vendor.id pci 0x10de -&device.id pci 0x00e6 -+device.name CK8S Ethernet Controller - - vendor.id pci 0x10de -&device.id pci 0x00e7 -+device.name CK8S USB Controller - - vendor.id pci 0x10de -&device.id pci 0x00e8 -+device.name CK8S USB Controller - - vendor.id pci 0x10de -&device.id pci 0x00ea -+device.name nForce3 250Gb AC'97 Audio Controller - - vendor.id pci 0x10de -&device.id pci 0x00ed -+device.name nForce3 250Gb PCI-to-PCI Bridge - - vendor.id pci 0x10de -&device.id pci 0x00ee -+device.name CK8S Serial ATA Controller (v2.5) - - vendor.id pci 0x10de -&device.id pci 0x00f0 -+device.name NV40 [GeForce 6800/GeForce 6800 Ultra] - - vendor.id pci 0x10de -&device.id pci 0x00f1 -+device.name NV43 [GeForce 6600/GeForce 6600 GT] - - vendor.id pci 0x10de -&device.id pci 0x00f2 -+device.name NV43 [GeForce 6600 GT] - - vendor.id pci 0x10de -&device.id pci 0x00f8 -+device.name NV45GL [Quadro FX 3400] - - vendor.id pci 0x10de -&device.id pci 0x00f9 -+device.name NV40 [GeForce 6800 Ultra] - - vendor.id pci 0x10de -&device.id pci 0x00fa -+device.name NV36 [GeForce PCX 5750] - - vendor.id pci 0x10de -&device.id pci 0x00fb -+device.name NV35 [GeForce PCX 5900] - - vendor.id pci 0x10de -&device.id pci 0x00fc -+device.name NV37GL [Quadro FX 330/GeForce PCX 5300] - - vendor.id pci 0x10de -&device.id pci 0x00fd -+device.name NV37GL [Quadro FX 330] - - vendor.id pci 0x10de -&device.id pci 0x00fe -+device.name NV38GL [Quadro FX 1300] - - vendor.id pci 0x10de -&device.id pci 0x00ff -+device.name NV18 [GeForce PCX 4300] - - vendor.id pci 0x10de -&device.id pci 0x0100 -+device.name NV10 [GeForce 256 SDR] - - vendor.id pci 0x10de -&device.id pci 0x0100 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0200 -+subdevice.name AGP-V6600 SGRAM - - vendor.id pci 0x10de -&device.id pci 0x0100 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0201 -+subdevice.name AGP-V6600 SDRAM - - vendor.id pci 0x10de -&device.id pci 0x0100 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x4008 -+subdevice.name AGP-V6600 SGRAM - - vendor.id pci 0x10de -&device.id pci 0x0100 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x4009 -+subdevice.name AGP-V6600 SDRAM - - vendor.id pci 0x10de -&device.id pci 0x0100 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x102d -+subdevice.name CT6941 GeForce 256 - - vendor.id pci 0x10de -&device.id pci 0x0100 -&subvendor.id pci 0x14af -&subdevice.id pci 0x5022 -+subdevice.name 3D Prophet SE - - vendor.id pci 0x10de -&device.id pci 0x0101 -+device.name NV10DDR [GeForce 256 DDR] - - vendor.id pci 0x10de -&device.id pci 0x0101 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0202 -+subdevice.name AGP-V6800 DDR - - vendor.id pci 0x10de -&device.id pci 0x0101 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x400a -+subdevice.name AGP-V6800 DDR SGRAM - - vendor.id pci 0x10de -&device.id pci 0x0101 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x400b -+subdevice.name AGP-V6800 DDR SDRAM - - vendor.id pci 0x10de -&device.id pci 0x0101 -&subvendor.id pci 0x107d -&subdevice.id pci 0x2822 -+subdevice.name WinFast GeForce 256 - - vendor.id pci 0x10de -&device.id pci 0x0101 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x102e -+subdevice.name CT6971 GeForce 256 DDR - - vendor.id pci 0x10de -&device.id pci 0x0101 -&subvendor.id pci 0x14af -&subdevice.id pci 0x5021 -+subdevice.name 3D Prophet DDR-DVI - - vendor.id pci 0x10de -&device.id pci 0x0103 -+device.name NV10GL [Quadro] - - vendor.id pci 0x10de -&device.id pci 0x0110 -+device.name NV11 [GeForce2 MX/MX 400] - - vendor.id pci 0x10de -&device.id pci 0x0110 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x4015 -+subdevice.name AGP-V7100 Pro - - vendor.id pci 0x10de -&device.id pci 0x0110 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x4031 -+subdevice.name V7100 Pro with TV output - - vendor.id pci 0x10de -&device.id pci 0x0110 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0091 -+subdevice.name Dell OEM GeForce 2 MX 400 - - vendor.id pci 0x10de -&device.id pci 0x0110 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x8817 -+subdevice.name MSI GeForce2 MX400 Pro32S [MS-8817] - - vendor.id pci 0x10de -&device.id pci 0x0110 -&subvendor.id pci 0x14af -&subdevice.id pci 0x7102 -+subdevice.name 3D Prophet II MX - - vendor.id pci 0x10de -&device.id pci 0x0110 -&subvendor.id pci 0x14af -&subdevice.id pci 0x7103 -+subdevice.name 3D Prophet II MX Dual-Display - - vendor.id pci 0x10de -&device.id pci 0x0111 -+device.name NV11DDR [GeForce2 MX 100 DDR/200 DDR] - - vendor.id pci 0x10de -&device.id pci 0x0112 -+device.name NV11 [GeForce2 Go] - - vendor.id pci 0x10de -&device.id pci 0x0113 -+device.name NV11GL [Quadro2 MXR/EX] - - vendor.id pci 0x10de -&device.id pci 0x0150 -+device.name NV15 [GeForce2 GTS/Pro] - - vendor.id pci 0x10de -&device.id pci 0x0150 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x4016 -+subdevice.name V7700 AGP Video Card - - vendor.id pci 0x10de -&device.id pci 0x0150 -&subvendor.id pci 0x107d -&subdevice.id pci 0x2840 -+subdevice.name WinFast GeForce2 GTS with TV output - - vendor.id pci 0x10de -&device.id pci 0x0150 -&subvendor.id pci 0x107d -&subdevice.id pci 0x2842 -+subdevice.name WinFast GeForce 2 Pro - - vendor.id pci 0x10de -&device.id pci 0x0150 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x8831 -+subdevice.name Creative GeForce2 Pro - - vendor.id pci 0x10de -&device.id pci 0x0151 -+device.name NV15DDR [GeForce2 Ti] - - vendor.id pci 0x10de -&device.id pci 0x0151 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x405f -+subdevice.name V7700Ti - - vendor.id pci 0x10de -&device.id pci 0x0151 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x5506 -+subdevice.name Creative 3D Blaster Geforce2 Titanium - - vendor.id pci 0x10de -&device.id pci 0x0152 -+device.name NV15BR [GeForce2 Ultra, Bladerunner] - - vendor.id pci 0x10de -&device.id pci 0x0152 -&subvendor.id pci 0x1048 -&subdevice.id pci 0x0c56 -+subdevice.name GLADIAC Ultra - - vendor.id pci 0x10de -&device.id pci 0x0153 -+device.name NV15GL [Quadro2 Pro] - - vendor.id pci 0x10de -&device.id pci 0x0170 -+device.name NV17 [GeForce4 MX 460] - - vendor.id pci 0x10de -&device.id pci 0x0171 -+device.name NV17 [GeForce4 MX 440] - - vendor.id pci 0x10de -&device.id pci 0x0171 -&subvendor.id pci 0x10b0 -&subdevice.id pci 0x0002 -+subdevice.name Gainward Pro/600 TV - - vendor.id pci 0x10de -&device.id pci 0x0171 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x8661 -+subdevice.name G4MX440-VTP - - vendor.id pci 0x10de -&device.id pci 0x0171 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x8730 -+subdevice.name MX440SES-T (MS-8873) - - vendor.id pci 0x10de -&device.id pci 0x0171 -&subvendor.id pci 0x147b -&subdevice.id pci 0x8f00 -+subdevice.name Abit Siluro GeForce4MX440 - - vendor.id pci 0x10de -&device.id pci 0x0172 -+device.name NV17 [GeForce4 MX 420] - - vendor.id pci 0x10de -&device.id pci 0x0173 -+device.name NV17 [GeForce4 MX 440-SE] - - vendor.id pci 0x10de -&device.id pci 0x0174 -+device.name NV17 [GeForce4 440 Go] - - vendor.id pci 0x10de -&device.id pci 0x0175 -+device.name NV17 [GeForce4 420 Go] - - vendor.id pci 0x10de -&device.id pci 0x0176 -+device.name NV17 [GeForce4 420 Go 32M] - - vendor.id pci 0x10de -&device.id pci 0x0176 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1090 -+subdevice.name Cx9 / Vx9 mainboard - - vendor.id pci 0x10de -&device.id pci 0x0177 -+device.name NV17 [GeForce4 460 Go] - - vendor.id pci 0x10de -&device.id pci 0x0178 -+device.name NV17GL [Quadro4 550 XGL] - - vendor.id pci 0x10de -&device.id pci 0x0179 -+device.name NV17 [GeForce4 440 Go 64M] - - vendor.id pci 0x10de -&device.id pci 0x0179 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0179 -+subdevice.name GeForce4 MX (Mac) - - vendor.id pci 0x10de -&device.id pci 0x017a -+device.name NV17GL [Quadro4 200/400 NVS] - - vendor.id pci 0x10de -&device.id pci 0x017b -+device.name NV17GL [Quadro4 550 XGL] - - vendor.id pci 0x10de -&device.id pci 0x017c -+device.name NV17GL [Quadro4 550 GoGL] - - vendor.id pci 0x10de -&device.id pci 0x017d -+device.name NV17 [GeForce4 410 Go 16M] - - vendor.id pci 0x10de -&device.id pci 0x0181 -+device.name NV18 [GeForce4 MX 440 AGP 8x] - - vendor.id pci 0x10de -&device.id pci 0x0181 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x806f -+subdevice.name V9180 Magic - - vendor.id pci 0x10de -&device.id pci 0x0181 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x8880 -+subdevice.name MS-StarForce GeForce4 MX 440 with AGP8X - - vendor.id pci 0x10de -&device.id pci 0x0181 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x8900 -+subdevice.name MS-8890 GeForce 4 MX440 AGP8X - - vendor.id pci 0x10de -&device.id pci 0x0181 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x9350 -+subdevice.name MSI Geforce4 MX T8X with AGP8X - - vendor.id pci 0x10de -&device.id pci 0x0181 -&subvendor.id pci 0x147b -&subdevice.id pci 0x8f0d -+subdevice.name Siluro GF4 MX-8X - - vendor.id pci 0x10de -&device.id pci 0x0182 -+device.name NV18 [GeForce4 MX 440SE AGP 8x] - - vendor.id pci 0x10de -&device.id pci 0x0183 -+device.name NV18 [GeForce4 MX 420 AGP 8x] - - vendor.id pci 0x10de -&device.id pci 0x0185 -+device.name NV18 [GeForce4 MX 4000 AGP 8x] - - vendor.id pci 0x10de -&device.id pci 0x0186 -+device.name NV18M [GeForce4 448 Go] - - vendor.id pci 0x10de -&device.id pci 0x0187 -+device.name NV18M [GeForce4 488 Go] - - vendor.id pci 0x10de -&device.id pci 0x0188 -+device.name NV18GL [Quadro4 580 XGL] - - vendor.id pci 0x10de -&device.id pci 0x018a -+device.name NV18GL [Quadro4 NVS AGP 8x] - - vendor.id pci 0x10de -&device.id pci 0x018b -+device.name NV18GL [Quadro4 380 XGL] - - vendor.id pci 0x10de -&device.id pci 0x018d -+device.name NV18M [GeForce4 448 Go] - - vendor.id pci 0x10de -&device.id pci 0x01a0 -+device.name NVCrush11 [GeForce2 MX Integrated Graphics] - - vendor.id pci 0x10de -&device.id pci 0x01a4 -+device.name nForce CPU bridge - - vendor.id pci 0x10de -&device.id pci 0x01ab -+device.name nForce 420 Memory Controller (DDR) - - vendor.id pci 0x10de -&device.id pci 0x01ac -+device.name nForce 220/420 Memory Controller - - vendor.id pci 0x10de -&device.id pci 0x01ad -+device.name nForce 220/420 Memory Controller - - vendor.id pci 0x10de -&device.id pci 0x01b0 -+device.name nForce Audio - - vendor.id pci 0x10de -&device.id pci 0x01b1 -+device.name nForce Audio - - vendor.id pci 0x10de -&device.id pci 0x01b2 -+device.name nForce ISA Bridge - - vendor.id pci 0x10de -&device.id pci 0x01b4 -+device.name nForce PCI System Management - - vendor.id pci 0x10de -&device.id pci 0x01b7 -+device.name nForce AGP to PCI Bridge - - vendor.id pci 0x10de -&device.id pci 0x01b8 -+device.name nForce PCI-to-PCI bridge - - vendor.id pci 0x10de -&device.id pci 0x01bc -+device.name nForce IDE - - vendor.id pci 0x10de -&device.id pci 0x01c1 -+device.name nForce AC'97 Modem Controller - - vendor.id pci 0x10de -&device.id pci 0x01c2 -+device.name nForce USB Controller - - vendor.id pci 0x10de -&device.id pci 0x01c3 -+device.name nForce Ethernet Controller - - vendor.id pci 0x10de -&device.id pci 0x01e0 -+device.name nForce2 AGP (different version?) - - vendor.id pci 0x10de -&device.id pci 0x01e8 -+device.name nForce2 AGP - - vendor.id pci 0x10de -&device.id pci 0x01ea -+device.name nForce2 Memory Controller 0 - - vendor.id pci 0x10de -&device.id pci 0x01eb -+device.name nForce2 Memory Controller 1 - - vendor.id pci 0x10de -&device.id pci 0x01ec -+device.name nForce2 Memory Controller 2 - - vendor.id pci 0x10de -&device.id pci 0x01ed -+device.name nForce2 Memory Controller 3 - - vendor.id pci 0x10de -&device.id pci 0x01ee -+device.name nForce2 Memory Controller 4 - - vendor.id pci 0x10de -&device.id pci 0x01ef -+device.name nForce2 Memory Controller 5 - - vendor.id pci 0x10de -&device.id pci 0x01f0 -+device.name NV18 [GeForce4 MX - nForce GPU] - - vendor.id pci 0x10de -&device.id pci 0x0200 -+device.name NV20 [GeForce3] - - vendor.id pci 0x10de -&device.id pci 0x0200 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x402f -+subdevice.name AGP-V8200 DDR - - vendor.id pci 0x10de -&device.id pci 0x0201 -+device.name NV20 [GeForce3 Ti 200] - - vendor.id pci 0x10de -&device.id pci 0x0202 -+device.name NV20 [GeForce3 Ti 500] - - vendor.id pci 0x10de -&device.id pci 0x0202 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x405b -+subdevice.name V8200 T5 - - vendor.id pci 0x10de -&device.id pci 0x0202 -&subvendor.id pci 0x1545 -&subdevice.id pci 0x002f -+subdevice.name Xtasy 6964 - - vendor.id pci 0x10de -&device.id pci 0x0203 -+device.name NV20DCC [Quadro DCC] - - vendor.id pci 0x10de -&device.id pci 0x0250 -+device.name NV25 [GeForce4 Ti 4600] - - vendor.id pci 0x10de -&device.id pci 0x0251 -+device.name NV25 [GeForce4 Ti 4400] - - vendor.id pci 0x10de -&device.id pci 0x0251 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8023 -+subdevice.name v8440 GeForce 4 Ti4400 - - vendor.id pci 0x10de -&device.id pci 0x0252 -+device.name NV25 [GeForce4 Ti] - - vendor.id pci 0x10de -&device.id pci 0x0253 -+device.name NV25 [GeForce4 Ti 4200] - - vendor.id pci 0x10de -&device.id pci 0x0253 -&subvendor.id pci 0x107d -&subdevice.id pci 0x2896 -+subdevice.name WinFast A250 LE TD (Dual VGA/TV-out/DVI) - - vendor.id pci 0x10de -&device.id pci 0x0253 -&subvendor.id pci 0x147b -&subdevice.id pci 0x8f09 -+subdevice.name Siluro (Dual VGA/TV-out/DVI) - - vendor.id pci 0x10de -&device.id pci 0x0258 -+device.name NV25GL [Quadro4 900 XGL] - - vendor.id pci 0x10de -&device.id pci 0x0259 -+device.name NV25GL [Quadro4 750 XGL] - - vendor.id pci 0x10de -&device.id pci 0x025b -+device.name NV25GL [Quadro4 700 XGL] - - vendor.id pci 0x10de -&device.id pci 0x0280 -+device.name NV28 [GeForce4 Ti 4800] - - vendor.id pci 0x10de -&device.id pci 0x0281 -+device.name NV28 [GeForce4 Ti 4200 AGP 8x] - - vendor.id pci 0x10de -&device.id pci 0x0282 -+device.name NV28 [GeForce4 Ti 4800 SE] - - vendor.id pci 0x10de -&device.id pci 0x0286 -+device.name NV28 [GeForce4 Ti 4200 Go AGP 8x] - - vendor.id pci 0x10de -&device.id pci 0x0288 -+device.name NV28GL [Quadro4 980 XGL] - - vendor.id pci 0x10de -&device.id pci 0x0289 -+device.name NV28GL [Quadro4 780 XGL] - - vendor.id pci 0x10de -&device.id pci 0x028c -+device.name NV28GLM [Quadro4 700 GoGL] - - vendor.id pci 0x10de -&device.id pci 0x0300 -+device.name NV30 [GeForce FX] - - vendor.id pci 0x10de -&device.id pci 0x0301 -+device.name NV30 [GeForce FX 5800 Ultra] - - vendor.id pci 0x10de -&device.id pci 0x0302 -+device.name NV30 [GeForce FX 5800] - - vendor.id pci 0x10de -&device.id pci 0x0308 -+device.name NV30GL [Quadro FX 2000] - - vendor.id pci 0x10de -&device.id pci 0x0309 -+device.name NV30GL [Quadro FX 1000] - - vendor.id pci 0x10de -&device.id pci 0x0311 -+device.name NV31 [GeForce FX 5600 Ultra] - - vendor.id pci 0x10de -&device.id pci 0x0312 -+device.name NV31 [GeForce FX 5600] - - vendor.id pci 0x10de -&device.id pci 0x0313 -+device.name NV31 - - vendor.id pci 0x10de -&device.id pci 0x0314 -+device.name NV31 [GeForce FX 5600XT] - - vendor.id pci 0x10de -&device.id pci 0x0314 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x814a -+subdevice.name V9560XT/TD - - vendor.id pci 0x10de -&device.id pci 0x0316 -+device.name NV31 - - vendor.id pci 0x10de -&device.id pci 0x0317 -+device.name NV31 - - vendor.id pci 0x10de -&device.id pci 0x031a -+device.name NV31M [GeForce FX Go 5600] - - vendor.id pci 0x10de -&device.id pci 0x031b -+device.name NV31M [GeForce FX Go5650] - - vendor.id pci 0x10de -&device.id pci 0x031c -+device.name NVIDIA Quadro FX 700 Go - - vendor.id pci 0x10de -&device.id pci 0x031d -+device.name NV31 - - vendor.id pci 0x10de -&device.id pci 0x031e -+device.name NV31 - - vendor.id pci 0x10de -&device.id pci 0x031f -+device.name NV31 - - vendor.id pci 0x10de -&device.id pci 0x0320 -+device.name NV34 [GeForce FX 5200] - - vendor.id pci 0x10de -&device.id pci 0x0321 -+device.name NV34 [GeForce FX 5200 Ultra] - - vendor.id pci 0x10de -&device.id pci 0x0322 -+device.name NV34 [GeForce FX 5200] - - vendor.id pci 0x10de -&device.id pci 0x0322 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x9171 -+subdevice.name MS-8917 (FX5200-T128) - - vendor.id pci 0x10de -&device.id pci 0x0323 -+device.name NV34 [GeForce FX 5200LE] - - vendor.id pci 0x10de -&device.id pci 0x0324 -+device.name NV34M [GeForce FX Go 5200] - - vendor.id pci 0x10de -&device.id pci 0x0324 -&subvendor.id pci 0x1071 -&subdevice.id pci 0x8160 -+subdevice.name MIM2000 - - vendor.id pci 0x10de -&device.id pci 0x0325 -+device.name NV34M [GeForce FX Go5250] - - vendor.id pci 0x10de -&device.id pci 0x0326 -+device.name NV34 [GeForce FX 5500] - - vendor.id pci 0x10de -&device.id pci 0x0327 -+device.name NV34 [GeForce FX 5100] - - vendor.id pci 0x10de -&device.id pci 0x0328 -+device.name NV34M [GeForce FX Go 5200] - - vendor.id pci 0x10de -&device.id pci 0x0329 -+device.name NV34M [GeForce FX Go5200] - - vendor.id pci 0x10de -&device.id pci 0x032a -+device.name NV34GL [Quadro NVS 280 PCI] - - vendor.id pci 0x10de -&device.id pci 0x032b -+device.name NV34GL [Quadro FX 500/600 PCI] - - vendor.id pci 0x10de -&device.id pci 0x032c -+device.name NV34GLM [GeForce FX Go 5300] - - vendor.id pci 0x10de -&device.id pci 0x032d -+device.name NV34 [GeForce FX Go5100] - - vendor.id pci 0x10de -&device.id pci 0x032f -+device.name NV34 - - vendor.id pci 0x10de -&device.id pci 0x0330 -+device.name NV35 [GeForce FX 5900 Ultra] - - vendor.id pci 0x10de -&device.id pci 0x0331 -+device.name NV35 [GeForce FX 5900] - - vendor.id pci 0x10de -&device.id pci 0x0331 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8145 -+subdevice.name V9950GE - - vendor.id pci 0x10de -&device.id pci 0x0332 -+device.name NV35 [GeForce FX 5900XT] - - vendor.id pci 0x10de -&device.id pci 0x0333 -+device.name NV38 [GeForce FX 5950 Ultra] - - vendor.id pci 0x10de -&device.id pci 0x0334 -+device.name NV35 [GeForce FX 5900ZT] - - vendor.id pci 0x10de -&device.id pci 0x0338 -+device.name NV35GL [Quadro FX 3000] - - vendor.id pci 0x10de -&device.id pci 0x033f -+device.name NV35GL [Quadro FX 700] - - vendor.id pci 0x10de -&device.id pci 0x0341 -+device.name NV36.1 [GeForce FX 5700 Ultra] - - vendor.id pci 0x10de -&device.id pci 0x0342 -+device.name NV36.2 [GeForce FX 5700] - - vendor.id pci 0x10de -&device.id pci 0x0343 -+device.name NV36 [GeForce FX 5700LE] - - vendor.id pci 0x10de -&device.id pci 0x0344 -+device.name NV36.4 [GeForce FX 5700VE] - - vendor.id pci 0x10de -&device.id pci 0x0345 -+device.name NV36.5 - - vendor.id pci 0x10de -&device.id pci 0x0347 -+device.name NV36 [GeForce FX Go5700] - - vendor.id pci 0x10de -&device.id pci 0x0348 -+device.name NV36 [GeForce FX Go5700] - - vendor.id pci 0x10de -&device.id pci 0x0349 -+device.name NV36 - - vendor.id pci 0x10de -&device.id pci 0x034b -+device.name NV36 - - vendor.id pci 0x10de -&device.id pci 0x034c -+device.name NV36 [Quadro FX Go1000] - - vendor.id pci 0x10de -&device.id pci 0x034e -+device.name NV36GL [Quadro FX 1100] - - vendor.id pci 0x10de -&device.id pci 0x034f -+device.name NV36GL - - vendor.id pci 0x10df -+vendor.name Emulex Corporation - - vendor.id pci 0x10df -&device.id pci 0x1ae5 -+device.name LP6000 Fibre Channel Host Adapter - - vendor.id pci 0x10df -&device.id pci 0x1ae6 -+device.name LP 8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) - - vendor.id pci 0x10df -&device.id pci 0x1ae7 -+device.name LP 8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:2-3) - - vendor.id pci 0x10df -&device.id pci 0xf015 -+device.name LP1150e - - vendor.id pci 0x10df -&device.id pci 0xf085 -+device.name LP850 Fibre Channel Adapter - - vendor.id pci 0x10df -&device.id pci 0xf095 -+device.name LP952 Fibre Channel Adapter - - vendor.id pci 0x10df -&device.id pci 0xf098 -+device.name LP982 Fibre Channel Adapter - - vendor.id pci 0x10df -&device.id pci 0xf0a1 -+device.name LightPulse Fibre Channel Adapter - - vendor.id pci 0x10df -&device.id pci 0xf0a5 -+device.name LP1050 - - vendor.id pci 0x10df -&device.id pci 0xf0d5 -+device.name LP1150 - - vendor.id pci 0x10df -&device.id pci 0xf100 -+device.name LP11000e - - vendor.id pci 0x10df -&device.id pci 0xf700 -+device.name LP7000 Fibre Channel Host Adapter - - vendor.id pci 0x10df -&device.id pci 0xf701 -+device.name LP 7000EFibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) - - vendor.id pci 0x10df -&device.id pci 0xf800 -+device.name LP8000 Fibre Channel Host Adapter - - vendor.id pci 0x10df -&device.id pci 0xf801 -+device.name LP 8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) - - vendor.id pci 0x10df -&device.id pci 0xf900 -+device.name LP9000 Fibre Channel Host Adapter - - vendor.id pci 0x10df -&device.id pci 0xf901 -+device.name LP 9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) - - vendor.id pci 0x10df -&device.id pci 0xf980 -+device.name LP9802 Fibre Channel Adapter - - vendor.id pci 0x10df -&device.id pci 0xf981 -+device.name LP 9802 Fibre Channel Host Adapter Alternate ID - - vendor.id pci 0x10df -&device.id pci 0xf982 -+device.name LP 9802 Fibre Channel Host Adapter Alternate ID - - vendor.id pci 0x10df -&device.id pci 0xfa00 -+device.name LP10000 Fibre Channel Host Adapter - - vendor.id pci 0x10df -&device.id pci 0xfa01 -+device.name LP101 - - vendor.id pci 0x10df -&device.id pci 0xfb00 -+device.name LightPulse Fibre Channel Adapter - - vendor.id pci 0x10df -&device.id pci 0xfd00 -+device.name LP11000 - - vendor.id pci 0x10e0 -+vendor.name Integrated Micro Solutions Inc. - - vendor.id pci 0x10e0 -&device.id pci 0x5026 -+device.name IMS5026/27/28 - - vendor.id pci 0x10e0 -&device.id pci 0x5027 -+device.name IMS5027 - - vendor.id pci 0x10e0 -&device.id pci 0x5028 -+device.name IMS5028 - - vendor.id pci 0x10e0 -&device.id pci 0x8849 -+device.name IMS8849 - - vendor.id pci 0x10e0 -&device.id pci 0x8853 -+device.name IMS8853 - - vendor.id pci 0x10e0 -&device.id pci 0x9128 -+device.name IMS9128 [Twin turbo 128] - - vendor.id pci 0x10e1 -+vendor.name Tekram Technology Co.,Ltd. - - vendor.id pci 0x10e1 -&device.id pci 0x0391 -+device.name TRM-S1040 - - vendor.id pci 0x10e1 -&device.id pci 0x0391 -&subvendor.id pci 0x10e1 -&subdevice.id pci 0x0391 -+subdevice.name DC-315U SCSI-3 Host Adapter - - vendor.id pci 0x10e1 -&device.id pci 0x690c -+device.name DC-690c - - vendor.id pci 0x10e1 -&device.id pci 0xdc29 -+device.name DC-290 - - vendor.id pci 0x10e2 -+vendor.name Aptix Corporation - - vendor.id pci 0x10e3 -+vendor.name Tundra Semiconductor Corp. - - vendor.id pci 0x10e3 -&device.id pci 0x0000 -+device.name CA91C042 [Universe] - - vendor.id pci 0x10e3 -&device.id pci 0x0860 -+device.name CA91C860 [QSpan] - - vendor.id pci 0x10e3 -&device.id pci 0x0862 -+device.name CA91C862A [QSpan-II] - - vendor.id pci 0x10e3 -&device.id pci 0x8260 -+device.name CA91L8200B [Dual PCI PowerSpan II] - - vendor.id pci 0x10e3 -&device.id pci 0x8261 -+device.name CA91L8260B [Single PCI PowerSpan II] - - vendor.id pci 0x10e4 -+vendor.name Tandem Computers - - vendor.id pci 0x10e5 -+vendor.name Micro Industries Corporation - - vendor.id pci 0x10e6 -+vendor.name Gainbery Computer Products Inc. - - vendor.id pci 0x10e7 -+vendor.name Vadem - - vendor.id pci 0x10e8 -+vendor.name Applied Micro Circuits Corp. - - vendor.id pci 0x10e8 -&device.id pci 0x1072 -+device.name INES GPIB-PCI (AMCC5920 based) - - vendor.id pci 0x10e8 -&device.id pci 0x2011 -+device.name Q-Motion Video Capture/Edit board - - vendor.id pci 0x10e8 -&device.id pci 0x4750 -+device.name S5930 [Matchmaker] - - vendor.id pci 0x10e8 -&device.id pci 0x5920 -+device.name S5920 - - vendor.id pci 0x10e8 -&device.id pci 0x8043 -+device.name LANai4.x [Myrinet LANai interface chip] - - vendor.id pci 0x10e8 -&device.id pci 0x8062 -+device.name S5933_PARASTATION - - vendor.id pci 0x10e8 -&device.id pci 0x807d -+device.name S5933 [Matchmaker] - - vendor.id pci 0x10e8 -&device.id pci 0x8088 -+device.name Kongsberg Spacetec Format Synchronizer - - vendor.id pci 0x10e8 -&device.id pci 0x8089 -+device.name Kongsberg Spacetec Serial Output Board - - vendor.id pci 0x10e8 -&device.id pci 0x809c -+device.name S5933_HEPC3 - - vendor.id pci 0x10e8 -&device.id pci 0x80d7 -+device.name PCI-9112 - - vendor.id pci 0x10e8 -&device.id pci 0x80d9 -+device.name PCI-9118 - - vendor.id pci 0x10e8 -&device.id pci 0x80da -+device.name PCI-9812 - - vendor.id pci 0x10e8 -&device.id pci 0x811a -+device.name PCI-IEEE1355-DS-DE Interface - - vendor.id pci 0x10e8 -&device.id pci 0x814c -+device.name Fastcom ESCC-PCI (Commtech, Inc.) - - vendor.id pci 0x10e8 -&device.id pci 0x8170 -+device.name S5933 [Matchmaker] (Chipset Development Tool) - - vendor.id pci 0x10e8 -&device.id pci 0x81e6 -+device.name Multimedia video controller - - vendor.id pci 0x10e8 -&device.id pci 0x8291 -+device.name Fastcom 232/8-PCI (Commtech, Inc.) - - vendor.id pci 0x10e8 -&device.id pci 0x82c4 -+device.name Fastcom 422/4-PCI (Commtech, Inc.) - - vendor.id pci 0x10e8 -&device.id pci 0x82c5 -+device.name Fastcom 422/2-PCI (Commtech, Inc.) - - vendor.id pci 0x10e8 -&device.id pci 0x82c6 -+device.name Fastcom IG422/1-PCI (Commtech, Inc.) - - vendor.id pci 0x10e8 -&device.id pci 0x82c7 -+device.name Fastcom IG232/2-PCI (Commtech, Inc.) - - vendor.id pci 0x10e8 -&device.id pci 0x82ca -+device.name Fastcom 232/4-PCI (Commtech, Inc.) - - vendor.id pci 0x10e8 -&device.id pci 0x82db -+device.name AJA HDNTV HD SDI Framestore - - vendor.id pci 0x10e8 -&device.id pci 0x82e2 -+device.name Fastcom DIO24H-PCI (Commtech, Inc.) - - vendor.id pci 0x10e8 -&device.id pci 0x8851 -+device.name S5933 on Innes Corp FM Radio Capture card - - vendor.id pci 0x10e9 -+vendor.name Alps Electric Co., Ltd. - - vendor.id pci 0x10ea -+vendor.name Intergraphics Systems - - vendor.id pci 0x10ea -&device.id pci 0x1680 -+device.name IGA-1680 - - vendor.id pci 0x10ea -&device.id pci 0x1682 -+device.name IGA-1682 - - vendor.id pci 0x10ea -&device.id pci 0x1683 -+device.name IGA-1683 - - vendor.id pci 0x10ea -&device.id pci 0x2000 -+device.name CyberPro 2000 - - vendor.id pci 0x10ea -&device.id pci 0x2010 -+device.name CyberPro 2000A - - vendor.id pci 0x10ea -&device.id pci 0x5000 -+device.name CyberPro 5000 - - vendor.id pci 0x10ea -&device.id pci 0x5050 -+device.name CyberPro 5050 - - vendor.id pci 0x10ea -&device.id pci 0x5202 -+device.name CyberPro 5202 - - vendor.id pci 0x10ea -&device.id pci 0x5252 -+device.name CyberPro5252 - - vendor.id pci 0x10eb -+vendor.name Artists Graphics - - vendor.id pci 0x10eb -&device.id pci 0x0101 -+device.name 3GA - - vendor.id pci 0x10eb -&device.id pci 0x8111 -+device.name Twist3 Frame Grabber - - vendor.id pci 0x10ec -+vendor.name Realtek Semiconductor Co., Ltd. - - vendor.id pci 0x10ec -&device.id pci 0x8029 -+device.name RTL-8029(AS) - - vendor.id pci 0x10ec -&device.id pci 0x8029 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0x2011 -+subdevice.name EZ-Card (SMC1208) - - vendor.id pci 0x10ec -&device.id pci 0x8029 -&subvendor.id pci 0x10ec -&subdevice.id pci 0x8029 -+subdevice.name RTL-8029(AS) - - vendor.id pci 0x10ec -&device.id pci 0x8029 -&subvendor.id pci 0x1113 -&subdevice.id pci 0x1208 -+subdevice.name EN1208 - - vendor.id pci 0x10ec -&device.id pci 0x8029 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x0300 -+subdevice.name DE-528 - - vendor.id pci 0x10ec -&device.id pci 0x8029 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2400 -+subdevice.name AT-2400 - - vendor.id pci 0x10ec -&device.id pci 0x8129 -+device.name RTL-8129 - - vendor.id pci 0x10ec -&device.id pci 0x8129 -&subvendor.id pci 0x10ec -&subdevice.id pci 0x8129 -+subdevice.name RT8129 Fast Ethernet Adapter - - vendor.id pci 0x10ec -&device.id pci 0x8138 -+device.name RT8139 (B/C) Cardbus Fast Ethernet Adapter - - vendor.id pci 0x10ec -&device.id pci 0x8138 -&subvendor.id pci 0x10ec -&subdevice.id pci 0x8138 -+subdevice.name RT8139 (B/C) Fast Ethernet Adapter - - vendor.id pci 0x10ec -&device.id pci 0x8139 -+device.name RTL-8139/8139C/8139C+ - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x0357 -&subdevice.id pci 0x000a -+subdevice.name TTP-Monitoring Card V2.0 - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x8920 -+subdevice.name ALN-325 - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x8921 -+subdevice.name ALN-325 - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1071 -&subdevice.id pci 0x8160 -+subdevice.name MIM2000 - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x10bd -&subdevice.id pci 0x0320 -+subdevice.name EP-320X-R - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x10ec -&subdevice.id pci 0x8139 -+subdevice.name RT8139 - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1113 -&subdevice.id pci 0xec01 -+subdevice.name FNC-0107TX - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1300 -+subdevice.name DFE-538TX - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1320 -+subdevice.name SN5200 - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x8139 -+subdevice.name DRN-32TX - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x11f6 -&subdevice.id pci 0x8139 -+subdevice.name FN22-3(A) LinxPRO Ethernet Adapter - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2500 -+subdevice.name AT-2500TX - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2503 -+subdevice.name AT-2500TX/ACPI - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1429 -&subdevice.id pci 0xd010 -+subdevice.name ND010 - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1432 -&subdevice.id pci 0x9130 -+subdevice.name EN-9130TX - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x8139 -+subdevice.name RT8139 - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1458 -&subdevice.id pci 0xe000 -+subdevice.name GA-7VM400M/7VT600 Motherboard - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x146c -&subdevice.id pci 0x1439 -+subdevice.name FE-1439TX - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1489 -&subdevice.id pci 0x6001 -+subdevice.name GF100TXRII - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1489 -&subdevice.id pci 0x6002 -+subdevice.name GF100TXRA - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x149c -&subdevice.id pci 0x139a -+subdevice.name LFE-8139ATX - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x149c -&subdevice.id pci 0x8139 -+subdevice.name LFE-8139TX - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x14cb -&subdevice.id pci 0x0200 -+subdevice.name LNR-100 Family 10/100 Base-TX Ethernet - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x1799 -&subdevice.id pci 0x5000 -+subdevice.name F5D5000 PCI Card/Desktop Network PCI Card - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x2646 -&subdevice.id pci 0x0001 -+subdevice.name EtheRx - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x8e2e -&subdevice.id pci 0x7000 -+subdevice.name KF-230TX - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0x8e2e -&subdevice.id pci 0x7100 -+subdevice.name KF-230TX/2 - - vendor.id pci 0x10ec -&device.id pci 0x8139 -&subvendor.id pci 0xa0a0 -&subdevice.id pci 0x0007 -+subdevice.name ALN-325C - - vendor.id pci 0x10ec -&device.id pci 0x8169 -+device.name RTL-8169 Gigabit Ethernet - - vendor.id pci 0x10ec -&device.id pci 0x8169 -&subvendor.id pci 0x1259 -&subdevice.id pci 0xc107 -+subdevice.name CG-LAPCIGT - - vendor.id pci 0x10ec -&device.id pci 0x8169 -&subvendor.id pci 0x1371 -&subdevice.id pci 0x434e -+subdevice.name ProG-2000L - - vendor.id pci 0x10ec -&device.id pci 0x8169 -&subvendor.id pci 0x1458 -&subdevice.id pci 0xe000 -+subdevice.name GA-K8VT800 Pro Motherboard - - vendor.id pci 0x10ec -&device.id pci 0x8169 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x702c -+subdevice.name K8T NEO 2 motherboard - - vendor.id pci 0x10ec -&device.id pci 0x8180 -+device.name RTL8180L 802.11b MAC - - vendor.id pci 0x10ec -&device.id pci 0x8197 -+device.name SmartLAN56 56K Modem - - vendor.id pci 0x10ed -+vendor.name Ascii Corporation - - vendor.id pci 0x10ed -&device.id pci 0x7310 -+device.name V7310 - - vendor.id pci 0x10ee -+vendor.name Xilinx Corporation - - vendor.id pci 0x10ee -&device.id pci 0x3fc0 -+device.name RME Digi96 - - vendor.id pci 0x10ee -&device.id pci 0x3fc1 -+device.name RME Digi96/8 - - vendor.id pci 0x10ee -&device.id pci 0x3fc2 -+device.name RME Digi96/8 Pro - - vendor.id pci 0x10ee -&device.id pci 0x3fc3 -+device.name RME Digi96/8 Pad - - vendor.id pci 0x10ee -&device.id pci 0x3fc4 -+device.name RME Digi9652 (Hammerfall) - - vendor.id pci 0x10ee -&device.id pci 0x3fc5 -+device.name RME Hammerfall DSP - - vendor.id pci 0x10ee -&device.id pci 0x3fc6 -+device.name RME Hammerfall DSP MADI - - vendor.id pci 0x10ee -&device.id pci 0x8381 -+device.name Ellips Santos Frame Grabber - - vendor.id pci 0x10ef -+vendor.name Racore Computer Products, Inc. - - vendor.id pci 0x10ef -&device.id pci 0x8154 -+device.name M815x Token Ring Adapter - - vendor.id pci 0x10f0 -+vendor.name Peritek Corporation - - vendor.id pci 0x10f1 -+vendor.name Tyan Computer - - vendor.id pci 0x10f2 -+vendor.name Achme Computer, Inc. - - vendor.id pci 0x10f3 -+vendor.name Alaris, Inc. - - vendor.id pci 0x10f4 -+vendor.name S-MOS Systems, Inc. - - vendor.id pci 0x10f5 -+vendor.name NKK Corporation - - vendor.id pci 0x10f5 -&device.id pci 0xa001 -+device.name NDR4000 [NR4600 Bridge] - - vendor.id pci 0x10f6 -+vendor.name Creative Electronic Systems SA - - vendor.id pci 0x10f7 -+vendor.name Matsushita Electric Industrial Co., Ltd. - - vendor.id pci 0x10f8 -+vendor.name Altos India Ltd - - vendor.id pci 0x10f9 -+vendor.name PC Direct - - vendor.id pci 0x10fa -+vendor.name Truevision - - vendor.id pci 0x10fa -&device.id pci 0x000c -+device.name TARGA 1000 - - vendor.id pci 0x10fb -+vendor.name Thesys Gesellschaft fuer Mikroelektronik mbH - - vendor.id pci 0x10fb -&device.id pci 0x186f -+device.name TH 6255 - - vendor.id pci 0x10fc -+vendor.name I-O Data Device, Inc. - - vendor.id pci 0x10fc -&device.id pci 0x0003 -+device.name Cardbus IDE Controller - - vendor.id pci 0x10fc -&device.id pci 0x0005 -+device.name Cardbus SCSI CBSC II - - vendor.id pci 0x10fd -+vendor.name Soyo Computer, Inc - - vendor.id pci 0x10fe -+vendor.name Fast Multimedia AG - - vendor.id pci 0x10ff -+vendor.name NCube - - vendor.id pci 0x1100 -+vendor.name Jazz Multimedia - - vendor.id pci 0x1101 -+vendor.name Initio Corporation - - vendor.id pci 0x1101 -&device.id pci 0x1060 -+device.name INI-A100U2W - - vendor.id pci 0x1101 -&device.id pci 0x9100 -+device.name INI-9100/9100W - - vendor.id pci 0x1101 -&device.id pci 0x9400 -+device.name INI-940 - - vendor.id pci 0x1101 -&device.id pci 0x9401 -+device.name INI-950 - - vendor.id pci 0x1101 -&device.id pci 0x9500 -+device.name 360P - - vendor.id pci 0x1101 -&device.id pci 0x9502 -+device.name Initio INI-9100UW Ultra Wide SCSI Controller INIC-950P chip - - vendor.id pci 0x1102 -+vendor.name Creative Labs - - vendor.id pci 0x1102 -&device.id pci 0x0002 -+device.name SB Live! EMU10k1 - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x0020 -+subdevice.name CT4850 SBLive! Value - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x0021 -+subdevice.name CT4620 SBLive! - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x002f -+subdevice.name SBLive! mainboard implementation - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x4001 -+subdevice.name E-mu APS - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8022 -+subdevice.name CT4780 SBLive! Value - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8023 -+subdevice.name CT4790 SoundBlaster PCI512 - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8024 -+subdevice.name CT4760 SBLive! - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8025 -+subdevice.name SBLive! Mainboard Implementation - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8026 -+subdevice.name CT4830 SBLive! Value - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8027 -+subdevice.name CT4832 SBLive! Value - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8028 -+subdevice.name CT4760 SBLive! OEM version - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8031 -+subdevice.name CT4831 SBLive! Value - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8040 -+subdevice.name CT4760 SBLive! - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8051 -+subdevice.name CT4850 SBLive! Value - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8061 -+subdevice.name SBLive! Player 5.1 - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8064 -+subdevice.name SB Live! 5.1 Model SB0100 - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8065 -+subdevice.name SBLive! 5.1 Digital Model SB0220 - - vendor.id pci 0x1102 -&device.id pci 0x0002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x8067 -+subdevice.name SBLive! 5.1 eMicro 28028 - - vendor.id pci 0x1102 -&device.id pci 0x0004 -+device.name SB Audigy - - vendor.id pci 0x1102 -&device.id pci 0x0004 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x0051 -+subdevice.name SB0090 Audigy Player - - vendor.id pci 0x1102 -&device.id pci 0x0004 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x0053 -+subdevice.name SB0090 Audigy Player/OEM - - vendor.id pci 0x1102 -&device.id pci 0x0004 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x0058 -+subdevice.name SB0090 Audigy Player/OEM - - vendor.id pci 0x1102 -&device.id pci 0x0004 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x2002 -+subdevice.name SB Audigy 2 ZS (SB0350) - - vendor.id pci 0x1102 -&device.id pci 0x0006 -+device.name [SB Live! Value] EMU10k1X - - vendor.id pci 0x1102 -&device.id pci 0x0007 -+device.name SB Audigy LS - - vendor.id pci 0x1102 -&device.id pci 0x0007 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1001 -+subdevice.name SB0310 Audigy LS - - vendor.id pci 0x1102 -&device.id pci 0x0007 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1002 -+subdevice.name SB0312 Audigy LS - - vendor.id pci 0x1102 -&device.id pci 0x0008 -+device.name SB0400 Audigy2 Value - - vendor.id pci 0x1102 -&device.id pci 0x4001 -+device.name SB Audigy FireWire Port - - vendor.id pci 0x1102 -&device.id pci 0x4001 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x0010 -+subdevice.name SB Audigy FireWire Port - - vendor.id pci 0x1102 -&device.id pci 0x7002 -+device.name SB Live! MIDI/Game Port - - vendor.id pci 0x1102 -&device.id pci 0x7002 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x0020 -+subdevice.name Gameport Joystick - - vendor.id pci 0x1102 -&device.id pci 0x7003 -+device.name SB Audigy MIDI/Game port - - vendor.id pci 0x1102 -&device.id pci 0x7003 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x0040 -+subdevice.name SB Audigy MIDI/Game Port - - vendor.id pci 0x1102 -&device.id pci 0x7004 -+device.name [SB Live! Value] Input device controller - - vendor.id pci 0x1102 -&device.id pci 0x7005 -+device.name SB Audigy LS MIDI/Game port - - vendor.id pci 0x1102 -&device.id pci 0x7005 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1001 -+subdevice.name SB0310 Audigy LS MIDI/Game port - - vendor.id pci 0x1102 -&device.id pci 0x7005 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1002 -+subdevice.name SB0312 Audigy LS MIDI/Game port - - vendor.id pci 0x1102 -&device.id pci 0x8064 -+device.name SB0100 [SBLive! 5.1 OEM] - - vendor.id pci 0x1102 -&device.id pci 0x8938 -+device.name Ectiva EV1938 - - vendor.id pci 0x1103 -+vendor.name Triones Technologies, Inc. - - vendor.id pci 0x1103 -&device.id pci 0x0003 -+device.name HPT343 - - vendor.id pci 0x1103 -&device.id pci 0x0004 -+device.name HPT366/368/370/370A/372 - - vendor.id pci 0x1103 -&device.id pci 0x0004 -&subvendor.id pci 0x1103 -&subdevice.id pci 0x0001 -+subdevice.name HPT370A - - vendor.id pci 0x1103 -&device.id pci 0x0004 -&subvendor.id pci 0x1103 -&subdevice.id pci 0x0003 -+subdevice.name HPT343 / HPT345 / HPT363 UDMA33 - - vendor.id pci 0x1103 -&device.id pci 0x0004 -&subvendor.id pci 0x1103 -&subdevice.id pci 0x0004 -+subdevice.name HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4) - - vendor.id pci 0x1103 -&device.id pci 0x0004 -&subvendor.id pci 0x1103 -&subdevice.id pci 0x0005 -+subdevice.name HPT370 UDMA100 - - vendor.id pci 0x1103 -&device.id pci 0x0004 -&subvendor.id pci 0x1103 -&subdevice.id pci 0x0006 -+subdevice.name HPT302 - - vendor.id pci 0x1103 -&device.id pci 0x0004 -&subvendor.id pci 0x1103 -&subdevice.id pci 0x0007 -+subdevice.name HPT371 UDMA133 - - vendor.id pci 0x1103 -&device.id pci 0x0004 -&subvendor.id pci 0x1103 -&subdevice.id pci 0x0008 -+subdevice.name HPT374 UDMA/ATA133 RAID Controller - - vendor.id pci 0x1103 -&device.id pci 0x0005 -+device.name HPT372A - - vendor.id pci 0x1103 -&device.id pci 0x0006 -+device.name HPT302 - - vendor.id pci 0x1103 -&device.id pci 0x0007 -+device.name HPT371 - - vendor.id pci 0x1103 -&device.id pci 0x0008 -+device.name HPT374 - - vendor.id pci 0x1103 -&device.id pci 0x0009 -+device.name HPT372N - - vendor.id pci 0x1104 -+vendor.name RasterOps Corp. - - vendor.id pci 0x1105 -+vendor.name Sigma Designs, Inc. - - vendor.id pci 0x1105 -&device.id pci 0x1105 -+device.name REALmagic Xcard MPEG 1/2/3/4 DVD Decoder - - vendor.id pci 0x1105 -&device.id pci 0x8300 -+device.name REALmagic Hollywood Plus DVD Decoder - - vendor.id pci 0x1105 -&device.id pci 0x8400 -+device.name EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder - - vendor.id pci 0x1105 -&device.id pci 0x8401 -+device.name EM8401 REALmagic DVD/MPEG-2 A/V Decoder - - vendor.id pci 0x1105 -&device.id pci 0x8470 -+device.name EM8470 REALmagic DVD/MPEG-4 A/V Decoder - - vendor.id pci 0x1105 -&device.id pci 0x8471 -+device.name EM8471 REALmagic DVD/MPEG-4 A/V Decoder - - vendor.id pci 0x1105 -&device.id pci 0x8475 -+device.name EM8475 REALmagic DVD/MPEG-4 A/V Decoder - - vendor.id pci 0x1105 -&device.id pci 0x8476 -+device.name EM8476 REALmagic DVD/MPEG-4 A/V Decoder - - vendor.id pci 0x1105 -&device.id pci 0x8485 -+device.name EM8485 REALmagic DVD/MPEG-4 A/V Decoder - - vendor.id pci 0x1105 -&device.id pci 0x8486 -+device.name EM8486 REALmagic DVD/MPEG-4 A/V Decoder - - vendor.id pci 0x1106 -+vendor.name VIA Technologies, Inc. - - vendor.id pci 0x1106 -&device.id pci 0x0102 -+device.name Embedded VIA Ethernet Controller - - vendor.id pci 0x1106 -&device.id pci 0x0130 -+device.name VT6305 1394.A Controller - - vendor.id pci 0x1106 -&device.id pci 0x0305 -+device.name VT8363/8365 [KT133/KM133] - - vendor.id pci 0x1106 -&device.id pci 0x0305 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8033 -+subdevice.name A7V Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x0305 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x803e -+subdevice.name A7V-E Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x0305 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8042 -+subdevice.name A7V133/A7V133-C Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x0305 -&subvendor.id pci 0x147b -&subdevice.id pci 0xa401 -+subdevice.name KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x0391 -+device.name VT8371 [KX133] - - vendor.id pci 0x1106 -&device.id pci 0x0501 -+device.name VT8501 [Apollo MVP4] - - vendor.id pci 0x1106 -&device.id pci 0x0505 -+device.name VT82C505 - - vendor.id pci 0x1106 -&device.id pci 0x0561 -+device.name VT82C576MV - - vendor.id pci 0x1106 -&device.id pci 0x0571 -+device.name VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0985 -+subdevice.name P6VXA Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0a81 -+subdevice.name L7VTA v1.0 Motherboard (KT400-8235) - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8052 -+subdevice.name VT8233A Bus Master ATA100/66/33 IDE - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x808c -+subdevice.name A7V8X motherboard - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a1 -+subdevice.name A7V8X-X motherboard rev. 1.01 - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80ed -+subdevice.name A7V600 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x1106 -&subdevice.id pci 0x0571 -+subdevice.name VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Magnia Z310 - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x1297 -&subdevice.id pci 0xf641 -+subdevice.name FX41 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x5002 -+subdevice.name GA-7VAX Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7020 -+subdevice.name K8T NEO 2 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x147b -&subdevice.id pci 0x1407 -+subdevice.name KV8-MAX3 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x0571 -&subvendor.id pci 0x1849 -&subdevice.id pci 0x0571 -+subdevice.name K7VT2 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x0576 -+device.name VT82C576 3V [Apollo Master] - - vendor.id pci 0x1106 -&device.id pci 0x0585 -+device.name VT82C585VP [Apollo VP1/VPX] - - vendor.id pci 0x1106 -&device.id pci 0x0586 -+device.name VT82C586/A/B PCI-to-ISA [Apollo VP] - - vendor.id pci 0x1106 -&device.id pci 0x0586 -&subvendor.id pci 0x1106 -&subdevice.id pci 0x0000 -+subdevice.name MVP3 ISA Bridge - - vendor.id pci 0x1106 -&device.id pci 0x0595 -+device.name VT82C595 [Apollo VP2] - - vendor.id pci 0x1106 -&device.id pci 0x0596 -+device.name VT82C596 ISA [Mobile South] - - vendor.id pci 0x1106 -&device.id pci 0x0596 -&subvendor.id pci 0x1106 -&subdevice.id pci 0x0000 -+subdevice.name VT82C596/A/B PCI to ISA Bridge - - vendor.id pci 0x1106 -&device.id pci 0x0596 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x0596 -+subdevice.name VT82C596/A/B PCI to ISA Bridge - - vendor.id pci 0x1106 -&device.id pci 0x0597 -+device.name VT82C597 [Apollo VP3] - - vendor.id pci 0x1106 -&device.id pci 0x0598 -+device.name VT82C598 [Apollo MVP3] - - vendor.id pci 0x1106 -&device.id pci 0x0601 -+device.name VT8601 [Apollo ProMedia] - - vendor.id pci 0x1106 -&device.id pci 0x0605 -+device.name VT8605 [ProSavage PM133] - - vendor.id pci 0x1106 -&device.id pci 0x0605 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x802c -+subdevice.name CUV4X mainboard - - vendor.id pci 0x1106 -&device.id pci 0x0680 -+device.name VT82C680 [Apollo P6] - - vendor.id pci 0x1106 -&device.id pci 0x0686 -+device.name VT82C686 [Apollo Super South] - - vendor.id pci 0x1106 -&device.id pci 0x0686 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0985 -+subdevice.name P6VXA Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x0686 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x802c -+subdevice.name CUV4X mainboard - - vendor.id pci 0x1106 -&device.id pci 0x0686 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8033 -+subdevice.name A7V Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x0686 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x803e -+subdevice.name A7V-E Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x0686 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8040 -+subdevice.name A7M266 Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x0686 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8042 -+subdevice.name A7V133/A7V133-C Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x0686 -&subvendor.id pci 0x1106 -&subdevice.id pci 0x0000 -+subdevice.name VT82C686/A PCI to ISA Bridge - - vendor.id pci 0x1106 -&device.id pci 0x0686 -&subvendor.id pci 0x1106 -&subdevice.id pci 0x0686 -+subdevice.name VT82C686/A PCI to ISA Bridge - - vendor.id pci 0x1106 -&device.id pci 0x0686 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Magnia Z310 - - vendor.id pci 0x1106 -&device.id pci 0x0686 -&subvendor.id pci 0x147b -&subdevice.id pci 0xa702 -+subdevice.name KG7-Lite Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x0691 -+device.name VT82C693A/694x [Apollo PRO133x] - - vendor.id pci 0x1106 -&device.id pci 0x0691 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0985 -+subdevice.name P6VXA Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x0691 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Magnia Z310 - - vendor.id pci 0x1106 -&device.id pci 0x0691 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x0691 -+subdevice.name VT82C691 Apollo Pro System Controller - - vendor.id pci 0x1106 -&device.id pci 0x0693 -+device.name VT82C693 [Apollo Pro Plus] - - vendor.id pci 0x1106 -&device.id pci 0x0698 -+device.name VT82C693A [Apollo Pro133 AGP] - - vendor.id pci 0x1106 -&device.id pci 0x0926 -+device.name VT82C926 [Amazon] - - vendor.id pci 0x1106 -&device.id pci 0x1000 -+device.name VT82C570MV - - vendor.id pci 0x1106 -&device.id pci 0x1106 -+device.name VT82C570MV - - vendor.id pci 0x1106 -&device.id pci 0x1571 -+device.name VT82C576M/VT82C586 - - vendor.id pci 0x1106 -&device.id pci 0x1595 -+device.name VT82C595/97 [Apollo VP2/97] - - vendor.id pci 0x1106 -&device.id pci 0x3022 -+device.name CLE266 - - vendor.id pci 0x1106 -&device.id pci 0x3038 -+device.name VT82xxxxx UHCI USB 1.1 Controller - - vendor.id pci 0x1106 -&device.id pci 0x3038 -&subvendor.id pci 0x0925 -&subdevice.id pci 0x1234 -+subdevice.name USB Controller - - vendor.id pci 0x1106 -&device.id pci 0x3038 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0985 -+subdevice.name P6VXA Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3038 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0a81 -+subdevice.name L7VTA v1.0 Motherboard (KT400-8235) - - vendor.id pci 0x1106 -&device.id pci 0x3038 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x808c -+subdevice.name VT6202 USB2.0 4 port controller - - vendor.id pci 0x1106 -&device.id pci 0x3038 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a1 -+subdevice.name A7V8X-X motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3038 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80ed -+subdevice.name A7V600 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3038 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Magnia Z310 - - vendor.id pci 0x1106 -&device.id pci 0x3038 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x5004 -+subdevice.name GA-7VAX Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x3038 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7020 -+subdevice.name K8T NEO 2 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3038 -&subvendor.id pci 0x147b -&subdevice.id pci 0x1407 -+subdevice.name KV8-MAX3 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3040 -+device.name VT82C586B ACPI - - vendor.id pci 0x1106 -&device.id pci 0x3043 -+device.name VT86C100A [Rhine] - - vendor.id pci 0x1106 -&device.id pci 0x3043 -&subvendor.id pci 0x10bd -&subdevice.id pci 0x0000 -+subdevice.name VT86C100A Fast Ethernet Adapter - - vendor.id pci 0x1106 -&device.id pci 0x3043 -&subvendor.id pci 0x1106 -&subdevice.id pci 0x0100 -+subdevice.name VT86C100A Fast Ethernet Adapter - - vendor.id pci 0x1106 -&device.id pci 0x3043 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1400 -+subdevice.name DFE-530TX rev A - - vendor.id pci 0x1106 -&device.id pci 0x3044 -+device.name IEEE 1394 Host Controller - - vendor.id pci 0x1106 -&device.id pci 0x3044 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x1106 -&device.id pci 0x3044 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x1000 -+subdevice.name GA-7VT600-1394 Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3044 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x702d -+subdevice.name K8T NEO 2 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3050 -+device.name VT82C596 Power Management - - vendor.id pci 0x1106 -&device.id pci 0x3051 -+device.name VT82C596 Power Management - - vendor.id pci 0x1106 -&device.id pci 0x3053 -+device.name VT6105M [Rhine-III] - - vendor.id pci 0x1106 -&device.id pci 0x3057 -+device.name VT82C686 [Apollo Super ACPI] - - vendor.id pci 0x1106 -&device.id pci 0x3057 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0985 -+subdevice.name P6VXA Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3057 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8033 -+subdevice.name A7V Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x3057 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x803e -+subdevice.name A7V-E Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x3057 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8040 -+subdevice.name A7M266 Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x3057 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8042 -+subdevice.name A7V133/A7V133-C Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x3057 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Magnia Z310 - - vendor.id pci 0x1106 -&device.id pci 0x3058 -+device.name VT82C686 AC97 Audio Controller - - vendor.id pci 0x1106 -&device.id pci 0x3058 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0097 -+subdevice.name SoundMax Digital Integrated Audio - - vendor.id pci 0x1106 -&device.id pci 0x3058 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb194 -+subdevice.name Soundmax integrated digital audio - - vendor.id pci 0x1106 -&device.id pci 0x3058 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0985 -+subdevice.name P6VXA Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3058 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x1106 -+subdevice.name A7V133/A7V133-C Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x3058 -&subvendor.id pci 0x1106 -&subdevice.id pci 0x4511 -+subdevice.name Onboard Audio on EP7KXA - - vendor.id pci 0x1106 -&device.id pci 0x3058 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x7600 -+subdevice.name Onboard Audio - - vendor.id pci 0x1106 -&device.id pci 0x3058 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x3091 -+subdevice.name MS-6309 Onboard Audio - - vendor.id pci 0x1106 -&device.id pci 0x3058 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x3300 -+subdevice.name MS-6330 Onboard Audio - - vendor.id pci 0x1106 -&device.id pci 0x3058 -&subvendor.id pci 0x15dd -&subdevice.id pci 0x7609 -+subdevice.name Onboard Audio - - vendor.id pci 0x1106 -&device.id pci 0x3059 -+device.name VT8233/A/8235/8237 AC97 Audio Controller - - vendor.id pci 0x1106 -&device.id pci 0x3059 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0a81 -+subdevice.name L7VTA v1.0 Motherboard (KT400-8235) - - vendor.id pci 0x1106 -&device.id pci 0x3059 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8095 -+subdevice.name A7V8X Motherboard (Realtek ALC650 codec) - - vendor.id pci 0x1106 -&device.id pci 0x3059 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a1 -+subdevice.name A7V8X-X Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3059 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80b0 -+subdevice.name A7V600 motherboard (ADI AD1980 codec [SoundMAX]) - - vendor.id pci 0x1106 -&device.id pci 0x3059 -&subvendor.id pci 0x1106 -&subdevice.id pci 0x3059 -+subdevice.name L7VMM2 Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3059 -&subvendor.id pci 0x1106 -&subdevice.id pci 0x4161 -+subdevice.name K7VT2 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3059 -&subvendor.id pci 0x1297 -&subdevice.id pci 0xc160 -+subdevice.name FX41 motherboard (Realtek ALC650 codec) - - vendor.id pci 0x1106 -&device.id pci 0x3059 -&subvendor.id pci 0x1458 -&subdevice.id pci 0xa002 -+subdevice.name GA-7VAX Onboard Audio (Realtek ALC650) - - vendor.id pci 0x1106 -&device.id pci 0x3059 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x0080 -+subdevice.name K8T NEO 2 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3059 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x3800 -+subdevice.name KT266 onboard audio - - vendor.id pci 0x1106 -&device.id pci 0x3059 -&subvendor.id pci 0x147b -&subdevice.id pci 0x1407 -+subdevice.name KV8-MAX3 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3065 -+device.name VT6102 [Rhine-II] - - vendor.id pci 0x1106 -&device.id pci 0x3065 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a1 -+subdevice.name A7V8X-X Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3065 -&subvendor.id pci 0x1106 -&subdevice.id pci 0x0102 -+subdevice.name VT6102 [Rhine II] Embeded Ethernet Controller on VT8235 - - vendor.id pci 0x1106 -&device.id pci 0x3065 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1400 -+subdevice.name DFE-530TX rev A - - vendor.id pci 0x1106 -&device.id pci 0x3065 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1401 -+subdevice.name DFE-530TX rev B - - vendor.id pci 0x1106 -&device.id pci 0x3065 -&subvendor.id pci 0x13b9 -&subdevice.id pci 0x1421 -+subdevice.name LD-10/100AL PCI Fast Ethernet Adapter (rev.B) - - vendor.id pci 0x1106 -&device.id pci 0x3068 -+device.name AC'97 Modem Controller - - vendor.id pci 0x1106 -&device.id pci 0x3068 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x309e -+subdevice.name MS-6309 Saturn Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3074 -+device.name VT8233 PCI to ISA Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3074 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8052 -+subdevice.name VT8233A - - vendor.id pci 0x1106 -&device.id pci 0x3091 -+device.name VT8633 [Apollo Pro266] - - vendor.id pci 0x1106 -&device.id pci 0x3099 -+device.name VT8366/A/7 [Apollo KT266/A/333] - - vendor.id pci 0x1106 -&device.id pci 0x3099 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8064 -+subdevice.name A7V266-E Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x3099 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x807f -+subdevice.name A7V333 Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x3099 -&subvendor.id pci 0x1849 -&subdevice.id pci 0x3099 -+subdevice.name K7VT2 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3101 -+device.name VT8653 Host Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3102 -+device.name VT8662 Host Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3103 -+device.name VT8615 Host Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3104 -+device.name USB 2.0 - - vendor.id pci 0x1106 -&device.id pci 0x3104 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0a81 -+subdevice.name L7VTA v1.0 Motherboard (KT400-8235) - - vendor.id pci 0x1106 -&device.id pci 0x3104 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x808c -+subdevice.name A7V8X motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3104 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a1 -+subdevice.name A7V8X-X motherboard rev 1.01 - - vendor.id pci 0x1106 -&device.id pci 0x3104 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80ed -+subdevice.name A7V600 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3104 -&subvendor.id pci 0x1297 -&subdevice.id pci 0xf641 -+subdevice.name FX41 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3104 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x5004 -+subdevice.name GA-7VAX Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x3104 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7020 -+subdevice.name K8T NEO 2 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3104 -&subvendor.id pci 0x147b -&subdevice.id pci 0x1407 -+subdevice.name KV8-MAX3 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3106 -+device.name VT6105 [Rhine-III] - - vendor.id pci 0x1106 -&device.id pci 0x3106 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1403 -+subdevice.name DFE-530TX rev C - - vendor.id pci 0x1106 -&device.id pci 0x3108 -+device.name S3 Unichrome Pro VGA Adapter - - vendor.id pci 0x1106 -&device.id pci 0x3109 -+device.name VT8233C PCI to ISA Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3112 -+device.name VT8361 [KLE133] Host Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3116 -+device.name VT8375 [KM266/KL266] Host Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3116 -&subvendor.id pci 0x1297 -&subdevice.id pci 0xf641 -+subdevice.name FX41 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3118 -+device.name S3 Unichrome Pro VGA Adapter - - vendor.id pci 0x1106 -&device.id pci 0x3119 -+device.name VT6120/VT6121/VT6122 Gigabit Ethernet Adapter - - vendor.id pci 0x1106 -&device.id pci 0x3122 -+device.name VT8623 [Apollo CLE266] integrated CastleRock graphics - - vendor.id pci 0x1106 -&device.id pci 0x3123 -+device.name VT8623 [Apollo CLE266] - - vendor.id pci 0x1106 -&device.id pci 0x3128 -+device.name VT8753 [P4X266 AGP] - - vendor.id pci 0x1106 -&device.id pci 0x3133 -+device.name VT3133 Host Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3147 -+device.name VT8233A ISA Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3148 -+device.name P4M266 Host Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3149 -+device.name VIA VT6420 SATA RAID Controller - - vendor.id pci 0x1106 -&device.id pci 0x3149 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80ed -+subdevice.name A7V600 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3149 -&subvendor.id pci 0x1458 -&subdevice.id pci 0xb003 -+subdevice.name GA-7VM400AM(F) Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3149 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7020 -+subdevice.name K8T Neo 2 Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3156 -+device.name P/KN266 Host Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3164 -+device.name VT6410 ATA133 RAID controller - - vendor.id pci 0x1106 -&device.id pci 0x3168 -+device.name VT8374 P4X400 Host Controller/AGP Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3177 -+device.name VT8235 ISA Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3177 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0a81 -+subdevice.name L7VTA v1.0 Motherboard (KT400-8235) - - vendor.id pci 0x1106 -&device.id pci 0x3177 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x808c -+subdevice.name A7V8X motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3177 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a1 -+subdevice.name A7V8X-X motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3177 -&subvendor.id pci 0x1297 -&subdevice.id pci 0xf641 -+subdevice.name FX41 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3177 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x5001 -+subdevice.name GA-7VAX Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x3177 -&subvendor.id pci 0x1849 -&subdevice.id pci 0x3177 -+subdevice.name K7VT2 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3188 -+device.name VT8385 [K8T800 AGP] Host Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3188 -&subvendor.id pci 0x147b -&subdevice.id pci 0x1407 -+subdevice.name KV8-MAX3 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3189 -+device.name VT8377 [KT400/KT600 AGP] Host Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3189 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x807f -+subdevice.name A7V8X motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3189 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x5000 -+subdevice.name GA-7VAX Mainboard - - vendor.id pci 0x1106 -&device.id pci 0x3204 -+device.name K8M800 - - vendor.id pci 0x1106 -&device.id pci 0x3205 -+device.name VT8378 [KM400/A] Chipset Host Bridge - - vendor.id pci 0x1106 -&device.id pci 0x3205 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x5000 -+subdevice.name GA-7VM400M Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3227 -+device.name VT8237 ISA bridge [KT600/K8T800 South] - - vendor.id pci 0x1106 -&device.id pci 0x3227 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80ed -+subdevice.name A7V600 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3227 -&subvendor.id pci 0x1106 -&subdevice.id pci 0x3227 -+subdevice.name DFI KT600-AL Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3227 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x5001 -+subdevice.name GA-7VT600 Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x3227 -&subvendor.id pci 0x147b -&subdevice.id pci 0x1407 -+subdevice.name KV8-MAX3 motherboard - - vendor.id pci 0x1106 -&device.id pci 0x4149 -+device.name VIA VT6420 (ATA133) Controller - - vendor.id pci 0x1106 -&device.id pci 0x5030 -+device.name VT82C596 ACPI [Apollo PRO] - - vendor.id pci 0x1106 -&device.id pci 0x6100 -+device.name VT85C100A [Rhine II] - - vendor.id pci 0x1106 -&device.id pci 0x7204 -+device.name K8M800 - - vendor.id pci 0x1106 -&device.id pci 0x7205 -+device.name VT8378 [S3 UniChrome] Integrated Video - - vendor.id pci 0x1106 -&device.id pci 0x7205 -&subvendor.id pci 0x1458 -&subdevice.id pci 0xd000 -+subdevice.name Gigabyte GA-7VM400(A)M(F) Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x8231 -+device.name VT8231 [PCI-to-ISA Bridge] - - vendor.id pci 0x1106 -&device.id pci 0x8235 -+device.name VT8235 ACPI - - vendor.id pci 0x1106 -&device.id pci 0x8305 -+device.name VT8363/8365 [KT133/KM133 AGP] - - vendor.id pci 0x1106 -&device.id pci 0x8391 -+device.name VT8371 [KX133 AGP] - - vendor.id pci 0x1106 -&device.id pci 0x8501 -+device.name VT8501 [Apollo MVP4 AGP] - - vendor.id pci 0x1106 -&device.id pci 0x8596 -+device.name VT82C596 [Apollo PRO AGP] - - vendor.id pci 0x1106 -&device.id pci 0x8597 -+device.name VT82C597 [Apollo VP3 AGP] - - vendor.id pci 0x1106 -&device.id pci 0x8598 -+device.name VT82C598/694x [Apollo MVP3/Pro133x AGP] - - vendor.id pci 0x1106 -&device.id pci 0x8598 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0985 -+subdevice.name P6VXA Motherboard - - vendor.id pci 0x1106 -&device.id pci 0x8601 -+device.name VT8601 [Apollo ProMedia AGP] - - vendor.id pci 0x1106 -&device.id pci 0x8605 -+device.name VT8605 [PM133 AGP] - - vendor.id pci 0x1106 -&device.id pci 0x8691 -+device.name VT82C691 [Apollo Pro] - - vendor.id pci 0x1106 -&device.id pci 0x8693 -+device.name VT82C693 [Apollo Pro Plus] PCI Bridge - - vendor.id pci 0x1106 -&device.id pci 0xb091 -+device.name VT8633 [Apollo Pro266 AGP] - - vendor.id pci 0x1106 -&device.id pci 0xb099 -+device.name VT8366/A/7 [Apollo KT266/A/333 AGP] - - vendor.id pci 0x1106 -&device.id pci 0xb101 -+device.name VT8653 AGP Bridge - - vendor.id pci 0x1106 -&device.id pci 0xb102 -+device.name VT8362 AGP Bridge - - vendor.id pci 0x1106 -&device.id pci 0xb103 -+device.name VT8615 AGP Bridge - - vendor.id pci 0x1106 -&device.id pci 0xb112 -+device.name VT8361 [KLE133] AGP Bridge - - vendor.id pci 0x1106 -&device.id pci 0xb168 -+device.name VT8235 PCI Bridge - - vendor.id pci 0x1106 -&device.id pci 0xb188 -+device.name VT8237 PCI bridge [K8T800 South] - - vendor.id pci 0x1106 -&device.id pci 0xb188 -&subvendor.id pci 0x147b -&subdevice.id pci 0x1407 -+subdevice.name KV8-MAX3 motherboard - - vendor.id pci 0x1106 -&device.id pci 0xb198 -+device.name VT8237 PCI Bridge - - vendor.id pci 0x1106 -&device.id pci 0xd104 -+device.name VT8237 Integrated Fast Ethernet Controller - - vendor.id pci 0x1107 -+vendor.name Stratus Computers - - vendor.id pci 0x1107 -&device.id pci 0x0576 -+device.name VIA VT82C570MV [Apollo] (Wrong vendor ID!) - - vendor.id pci 0x1108 -+vendor.name Proteon, Inc. - - vendor.id pci 0x1108 -&device.id pci 0x0100 -+device.name p1690plus_AA - - vendor.id pci 0x1108 -&device.id pci 0x0101 -+device.name p1690plus_AB - - vendor.id pci 0x1108 -&device.id pci 0x0105 -+device.name P1690Plus - - vendor.id pci 0x1108 -&device.id pci 0x0108 -+device.name P1690Plus - - vendor.id pci 0x1108 -&device.id pci 0x0138 -+device.name P1690Plus - - vendor.id pci 0x1108 -&device.id pci 0x0139 -+device.name P1690Plus - - vendor.id pci 0x1108 -&device.id pci 0x013c -+device.name P1690Plus - - vendor.id pci 0x1108 -&device.id pci 0x013d -+device.name P1690Plus - - vendor.id pci 0x1109 -+vendor.name Cogent Data Technologies, Inc. - - vendor.id pci 0x1109 -&device.id pci 0x1400 -+device.name EM110TX [EX110TX] - - vendor.id pci 0x110a -+vendor.name Siemens Nixdorf AG - - vendor.id pci 0x110a -&device.id pci 0x0002 -+device.name Pirahna 2-port - - vendor.id pci 0x110a -&device.id pci 0x0005 -+device.name Tulip controller, power management, switch extender - - vendor.id pci 0x110a -&device.id pci 0x0006 -+device.name FSC PINC (I/O-APIC) - - vendor.id pci 0x110a -&device.id pci 0x0015 -+device.name FSC Multiprocessor Interrupt Controller - - vendor.id pci 0x110a -&device.id pci 0x001d -+device.name FSC Copernicus Management Controller - - vendor.id pci 0x110a -&device.id pci 0x007b -+device.name FSC Remote Service Controller, mailbox device - - vendor.id pci 0x110a -&device.id pci 0x007c -+device.name FSC Remote Service Controller, shared memory device - - vendor.id pci 0x110a -&device.id pci 0x007d -+device.name FSC Remote Service Controller, SMIC device - - vendor.id pci 0x110a -&device.id pci 0x2102 -+device.name DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels - - vendor.id pci 0x110a -&device.id pci 0x2104 -+device.name Eicon Diva 2.02 compatible passive ISDN card - - vendor.id pci 0x110a -&device.id pci 0x3142 -+device.name SIMATIC NET CP 5613A1 (Profibus Adapter) - - vendor.id pci 0x110a -&device.id pci 0x4021 -+device.name SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter) - - vendor.id pci 0x110a -&device.id pci 0x4029 -+device.name SIMATIC NET CP 5613A2 (Profibus Adapter) - - vendor.id pci 0x110a -&device.id pci 0x4942 -+device.name FPGA I-Bus Tracer for MBD - - vendor.id pci 0x110a -&device.id pci 0x6120 -+device.name SZB6120 - - vendor.id pci 0x110b -+vendor.name Chromatic Research Inc. - - vendor.id pci 0x110b -&device.id pci 0x0001 -+device.name Mpact Media Processor - - vendor.id pci 0x110b -&device.id pci 0x0004 -+device.name Mpact 2 - - vendor.id pci 0x110c -+vendor.name Mini-Max Technology, Inc. - - vendor.id pci 0x110d -+vendor.name Znyx Advanced Systems - - vendor.id pci 0x110e -+vendor.name CPU Technology - - vendor.id pci 0x110f -+vendor.name Ross Technology - - vendor.id pci 0x1110 -+vendor.name Powerhouse Systems - - vendor.id pci 0x1110 -&device.id pci 0x6037 -+device.name Firepower Powerized SMP I/O ASIC - - vendor.id pci 0x1110 -&device.id pci 0x6073 -+device.name Firepower Powerized SMP I/O ASIC - - vendor.id pci 0x1111 -+vendor.name Santa Cruz Operation - - vendor.id pci 0x1112 -+vendor.name Osicom Technologies Inc - - vendor.id pci 0x1112 -&device.id pci 0x2200 -+device.name FDDI Adapter - - vendor.id pci 0x1112 -&device.id pci 0x2300 -+device.name Fast Ethernet Adapter - - vendor.id pci 0x1112 -&device.id pci 0x2340 -+device.name 4 Port Fast Ethernet Adapter - - vendor.id pci 0x1112 -&device.id pci 0x2400 -+device.name ATM Adapter - - vendor.id pci 0x1113 -+vendor.name Accton Technology Corporation - - vendor.id pci 0x1113 -&device.id pci 0x1211 -+device.name SMC2-1211TX - - vendor.id pci 0x1113 -&device.id pci 0x1211 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1207 -+subdevice.name EN-1207D Fast Ethernet Adapter - - vendor.id pci 0x1113 -&device.id pci 0x1211 -&subvendor.id pci 0x1113 -&subdevice.id pci 0x1211 -+subdevice.name EN-1207D Fast Ethernet Adapter - - vendor.id pci 0x1113 -&device.id pci 0x1216 -+device.name EN-1216 Ethernet Adapter - - vendor.id pci 0x1113 -&device.id pci 0x1216 -&subvendor.id pci 0x1113 -&subdevice.id pci 0x2242 -+subdevice.name EN2242 10/100 Ethernet Mini-PCI Card - - vendor.id pci 0x1113 -&device.id pci 0x1216 -&subvendor.id pci 0x111a -&subdevice.id pci 0x1020 -+subdevice.name SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?] - - vendor.id pci 0x1113 -&device.id pci 0x1217 -+device.name EN-1217 Ethernet Adapter - - vendor.id pci 0x1113 -&device.id pci 0x5105 -+device.name 10Mbps Network card - - vendor.id pci 0x1113 -&device.id pci 0x9211 -+device.name EN-1207D Fast Ethernet Adapter - - vendor.id pci 0x1113 -&device.id pci 0x9211 -&subvendor.id pci 0x1113 -&subdevice.id pci 0x9211 -+subdevice.name EN-1207D Fast Ethernet Adapter - - vendor.id pci 0x1113 -&device.id pci 0x9511 -+device.name 21x4x DEC-Tulip compatible Fast Ethernet - - vendor.id pci 0x1113 -&device.id pci 0xd301 -+device.name CPWNA100 (Philips wireless PCMCIA) - - vendor.id pci 0x1113 -&device.id pci 0xec02 -+device.name SMC 1244TX v3 - - vendor.id pci 0x1114 -+vendor.name Atmel Corporation - - vendor.id pci 0x1114 -&device.id pci 0x0506 -+device.name 802.11b Wireless Network Adaptor (at76c506) - - vendor.id pci 0x1115 -+vendor.name 3D Labs - - vendor.id pci 0x1116 -+vendor.name Data Translation - - vendor.id pci 0x1116 -&device.id pci 0x0022 -+device.name DT3001 - - vendor.id pci 0x1116 -&device.id pci 0x0023 -+device.name DT3002 - - vendor.id pci 0x1116 -&device.id pci 0x0024 -+device.name DT3003 - - vendor.id pci 0x1116 -&device.id pci 0x0025 -+device.name DT3004 - - vendor.id pci 0x1116 -&device.id pci 0x0026 -+device.name DT3005 - - vendor.id pci 0x1116 -&device.id pci 0x0027 -+device.name DT3001-PGL - - vendor.id pci 0x1116 -&device.id pci 0x0028 -+device.name DT3003-PGL - - vendor.id pci 0x1117 -+vendor.name Datacube, Inc - - vendor.id pci 0x1117 -&device.id pci 0x9500 -+device.name Max-1C SVGA card - - vendor.id pci 0x1117 -&device.id pci 0x9501 -+device.name Max-1C image processing - - vendor.id pci 0x1118 -+vendor.name Berg Electronics - - vendor.id pci 0x1119 -+vendor.name ICP Vortex Computersysteme GmbH - - vendor.id pci 0x1119 -&device.id pci 0x0000 -+device.name GDT 6000/6020/6050 - - vendor.id pci 0x1119 -&device.id pci 0x0001 -+device.name GDT 6000B/6010 - - vendor.id pci 0x1119 -&device.id pci 0x0002 -+device.name GDT 6110/6510 - - vendor.id pci 0x1119 -&device.id pci 0x0003 -+device.name GDT 6120/6520 - - vendor.id pci 0x1119 -&device.id pci 0x0004 -+device.name GDT 6530 - - vendor.id pci 0x1119 -&device.id pci 0x0005 -+device.name GDT 6550 - - vendor.id pci 0x1119 -&device.id pci 0x0006 -+device.name GDT 6117/6517 - - vendor.id pci 0x1119 -&device.id pci 0x0007 -+device.name GDT 6127/6527 - - vendor.id pci 0x1119 -&device.id pci 0x0008 -+device.name GDT 6537 - - vendor.id pci 0x1119 -&device.id pci 0x0009 -+device.name GDT 6557/6557-ECC - - vendor.id pci 0x1119 -&device.id pci 0x000a -+device.name GDT 6115/6515 - - vendor.id pci 0x1119 -&device.id pci 0x000b -+device.name GDT 6125/6525 - - vendor.id pci 0x1119 -&device.id pci 0x000c -+device.name GDT 6535 - - vendor.id pci 0x1119 -&device.id pci 0x000d -+device.name GDT 6555 - - vendor.id pci 0x1119 -&device.id pci 0x0010 -+device.name GDT 6115/6515 - - vendor.id pci 0x1119 -&device.id pci 0x0011 -+device.name GDT 6125/6525 - - vendor.id pci 0x1119 -&device.id pci 0x0012 -+device.name GDT 6535 - - vendor.id pci 0x1119 -&device.id pci 0x0013 -+device.name GDT 6555/6555-ECC - - vendor.id pci 0x1119 -&device.id pci 0x0100 -+device.name GDT 6117RP/6517RP - - vendor.id pci 0x1119 -&device.id pci 0x0101 -+device.name GDT 6127RP/6527RP - - vendor.id pci 0x1119 -&device.id pci 0x0102 -+device.name GDT 6537RP - - vendor.id pci 0x1119 -&device.id pci 0x0103 -+device.name GDT 6557RP - - vendor.id pci 0x1119 -&device.id pci 0x0104 -+device.name GDT 6111RP/6511RP - - vendor.id pci 0x1119 -&device.id pci 0x0105 -+device.name GDT 6121RP/6521RP - - vendor.id pci 0x1119 -&device.id pci 0x0110 -+device.name GDT 6117RD/6517RD - - vendor.id pci 0x1119 -&device.id pci 0x0111 -+device.name GDT 6127RD/6527RD - - vendor.id pci 0x1119 -&device.id pci 0x0112 -+device.name GDT 6537RD - - vendor.id pci 0x1119 -&device.id pci 0x0113 -+device.name GDT 6557RD - - vendor.id pci 0x1119 -&device.id pci 0x0114 -+device.name GDT 6111RD/6511RD - - vendor.id pci 0x1119 -&device.id pci 0x0115 -+device.name GDT 6121RD/6521RD - - vendor.id pci 0x1119 -&device.id pci 0x0118 -+device.name GDT 6118RD/6518RD/6618RD - - vendor.id pci 0x1119 -&device.id pci 0x0119 -+device.name GDT 6128RD/6528RD/6628RD - - vendor.id pci 0x1119 -&device.id pci 0x011a -+device.name GDT 6538RD/6638RD - - vendor.id pci 0x1119 -&device.id pci 0x011b -+device.name GDT 6558RD/6658RD - - vendor.id pci 0x1119 -&device.id pci 0x0120 -+device.name GDT 6117RP2/6517RP2 - - vendor.id pci 0x1119 -&device.id pci 0x0121 -+device.name GDT 6127RP2/6527RP2 - - vendor.id pci 0x1119 -&device.id pci 0x0122 -+device.name GDT 6537RP2 - - vendor.id pci 0x1119 -&device.id pci 0x0123 -+device.name GDT 6557RP2 - - vendor.id pci 0x1119 -&device.id pci 0x0124 -+device.name GDT 6111RP2/6511RP2 - - vendor.id pci 0x1119 -&device.id pci 0x0125 -+device.name GDT 6121RP2/6521RP2 - - vendor.id pci 0x1119 -&device.id pci 0x0136 -+device.name GDT 6113RS/6513RS - - vendor.id pci 0x1119 -&device.id pci 0x0137 -+device.name GDT 6123RS/6523RS - - vendor.id pci 0x1119 -&device.id pci 0x0138 -+device.name GDT 6118RS/6518RS/6618RS - - vendor.id pci 0x1119 -&device.id pci 0x0139 -+device.name GDT 6128RS/6528RS/6628RS - - vendor.id pci 0x1119 -&device.id pci 0x013a -+device.name GDT 6538RS/6638RS - - vendor.id pci 0x1119 -&device.id pci 0x013b -+device.name GDT 6558RS/6658RS - - vendor.id pci 0x1119 -&device.id pci 0x013c -+device.name GDT 6533RS/6633RS - - vendor.id pci 0x1119 -&device.id pci 0x013d -+device.name GDT 6543RS/6643RS - - vendor.id pci 0x1119 -&device.id pci 0x013e -+device.name GDT 6553RS/6653RS - - vendor.id pci 0x1119 -&device.id pci 0x013f -+device.name GDT 6563RS/6663RS - - vendor.id pci 0x1119 -&device.id pci 0x0166 -+device.name GDT 7113RN/7513RN/7613RN - - vendor.id pci 0x1119 -&device.id pci 0x0167 -+device.name GDT 7123RN/7523RN/7623RN - - vendor.id pci 0x1119 -&device.id pci 0x0168 -+device.name GDT 7118RN/7518RN/7518RN - - vendor.id pci 0x1119 -&device.id pci 0x0169 -+device.name GDT 7128RN/7528RN/7628RN - - vendor.id pci 0x1119 -&device.id pci 0x016a -+device.name GDT 7538RN/7638RN - - vendor.id pci 0x1119 -&device.id pci 0x016b -+device.name GDT 7558RN/7658RN - - vendor.id pci 0x1119 -&device.id pci 0x016c -+device.name GDT 7533RN/7633RN - - vendor.id pci 0x1119 -&device.id pci 0x016d -+device.name GDT 7543RN/7643RN - - vendor.id pci 0x1119 -&device.id pci 0x016e -+device.name GDT 7553RN/7653RN - - vendor.id pci 0x1119 -&device.id pci 0x016f -+device.name GDT 7563RN/7663RN - - vendor.id pci 0x1119 -&device.id pci 0x01d6 -+device.name GDT 4x13RZ - - vendor.id pci 0x1119 -&device.id pci 0x01d7 -+device.name GDT 4x23RZ - - vendor.id pci 0x1119 -&device.id pci 0x01f6 -+device.name GDT 8x13RZ - - vendor.id pci 0x1119 -&device.id pci 0x01f7 -+device.name GDT 8x23RZ - - vendor.id pci 0x1119 -&device.id pci 0x01fc -+device.name GDT 8x33RZ - - vendor.id pci 0x1119 -&device.id pci 0x01fd -+device.name GDT 8x43RZ - - vendor.id pci 0x1119 -&device.id pci 0x01fe -+device.name GDT 8x53RZ - - vendor.id pci 0x1119 -&device.id pci 0x01ff -+device.name GDT 8x63RZ - - vendor.id pci 0x1119 -&device.id pci 0x0210 -+device.name GDT 6519RD/6619RD - - vendor.id pci 0x1119 -&device.id pci 0x0211 -+device.name GDT 6529RD/6629RD - - vendor.id pci 0x1119 -&device.id pci 0x0260 -+device.name GDT 7519RN/7619RN - - vendor.id pci 0x1119 -&device.id pci 0x0261 -+device.name GDT 7529RN/7629RN - - vendor.id pci 0x1119 -&device.id pci 0x02ff -+device.name GDT MAXRP - - vendor.id pci 0x1119 -&device.id pci 0x0300 -+device.name GDT NEWRX - - vendor.id pci 0x111a -+vendor.name Efficient Networks, Inc - - vendor.id pci 0x111a -&device.id pci 0x0000 -+device.name 155P-MF1 (FPGA) - - vendor.id pci 0x111a -&device.id pci 0x0002 -+device.name 155P-MF1 (ASIC) - - vendor.id pci 0x111a -&device.id pci 0x0003 -+device.name ENI-25P ATM - - vendor.id pci 0x111a -&device.id pci 0x0003 -&subvendor.id pci 0x111a -&subdevice.id pci 0x0000 -+subdevice.name ENI-25p Miniport ATM Adapter - - vendor.id pci 0x111a -&device.id pci 0x0005 -+device.name SpeedStream (LANAI) - - vendor.id pci 0x111a -&device.id pci 0x0005 -&subvendor.id pci 0x111a -&subdevice.id pci 0x0001 -+subdevice.name ENI-3010 ATM - - vendor.id pci 0x111a -&device.id pci 0x0005 -&subvendor.id pci 0x111a -&subdevice.id pci 0x0009 -+subdevice.name ENI-3060 ADSL (VPI=0) - - vendor.id pci 0x111a -&device.id pci 0x0005 -&subvendor.id pci 0x111a -&subdevice.id pci 0x0101 -+subdevice.name ENI-3010 ATM - - vendor.id pci 0x111a -&device.id pci 0x0005 -&subvendor.id pci 0x111a -&subdevice.id pci 0x0109 -+subdevice.name ENI-3060CO ADSL (VPI=0) - - vendor.id pci 0x111a -&device.id pci 0x0005 -&subvendor.id pci 0x111a -&subdevice.id pci 0x0809 -+subdevice.name ENI-3060 ADSL (VPI=0 or 8) - - vendor.id pci 0x111a -&device.id pci 0x0005 -&subvendor.id pci 0x111a -&subdevice.id pci 0x0909 -+subdevice.name ENI-3060CO ADSL (VPI=0 or 8) - - vendor.id pci 0x111a -&device.id pci 0x0005 -&subvendor.id pci 0x111a -&subdevice.id pci 0x0a09 -+subdevice.name ENI-3060 ADSL (VPI=<0..15>) - - vendor.id pci 0x111a -&device.id pci 0x0007 -+device.name SpeedStream ADSL - - vendor.id pci 0x111a -&device.id pci 0x0007 -&subvendor.id pci 0x111a -&subdevice.id pci 0x1001 -+subdevice.name ENI-3061 ADSL [ASIC] - - vendor.id pci 0x111a -&device.id pci 0x1203 -+device.name SpeedStream 1023 Wireless PCI Adapter - - vendor.id pci 0x111b -+vendor.name Teledyne Electronic Systems - - vendor.id pci 0x111c -+vendor.name Tricord Systems Inc. - - vendor.id pci 0x111c -&device.id pci 0x0001 -+device.name Powerbis Bridge - - vendor.id pci 0x111d -+vendor.name Integrated Device Technology, Inc. - - vendor.id pci 0x111d -&device.id pci 0x0001 -+device.name IDT77201/77211 155Mbps ATM SAR Controller [NICStAR] - - vendor.id pci 0x111d -&device.id pci 0x0003 -+device.name IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller - - vendor.id pci 0x111d -&device.id pci 0x0004 -+device.name IDT77V252 155Mbps ATM MICRO ABR SAR Controller - - vendor.id pci 0x111d -&device.id pci 0x0005 -+device.name IDT77V222 155Mbps ATM MICRO ABR SAR Controller - - vendor.id pci 0x111e -+vendor.name Eldec - - vendor.id pci 0x111f -+vendor.name Precision Digital Images - - vendor.id pci 0x111f -&device.id pci 0x4a47 -+device.name Precision MX Video engine interface - - vendor.id pci 0x111f -&device.id pci 0x5243 -+device.name Frame capture bus interface - - vendor.id pci 0x1120 -+vendor.name EMC Corporation - - vendor.id pci 0x1121 -+vendor.name Zilog - - vendor.id pci 0x1122 -+vendor.name Multi-tech Systems, Inc. - - vendor.id pci 0x1123 -+vendor.name Excellent Design, Inc. - - vendor.id pci 0x1124 -+vendor.name Leutron Vision AG - - vendor.id pci 0x1125 -+vendor.name Eurocore - - vendor.id pci 0x1126 -+vendor.name Vigra - - vendor.id pci 0x1127 -+vendor.name FORE Systems Inc - - vendor.id pci 0x1127 -&device.id pci 0x0200 -+device.name ForeRunner PCA-200 ATM - - vendor.id pci 0x1127 -&device.id pci 0x0210 -+device.name PCA-200PC - - vendor.id pci 0x1127 -&device.id pci 0x0250 -+device.name ATM - - vendor.id pci 0x1127 -&device.id pci 0x0300 -+device.name ForeRunner PCA-200EPC ATM - - vendor.id pci 0x1127 -&device.id pci 0x0310 -+device.name ATM - - vendor.id pci 0x1127 -&device.id pci 0x0400 -+device.name ForeRunnerHE ATM Adapter - - vendor.id pci 0x1127 -&device.id pci 0x0400 -&subvendor.id pci 0x1127 -&subdevice.id pci 0x0400 -+subdevice.name ForeRunnerHE ATM - - vendor.id pci 0x1129 -+vendor.name Firmworks - - vendor.id pci 0x112a -+vendor.name Hermes Electronics Company, Ltd. - - vendor.id pci 0x112b -+vendor.name Linotype - Hell AG - - vendor.id pci 0x112c -+vendor.name Zenith Data Systems - - vendor.id pci 0x112d -+vendor.name Ravicad - - vendor.id pci 0x112e -+vendor.name Infomedia Microelectronics Inc. - - vendor.id pci 0x112f -+vendor.name Imaging Technology Inc - - vendor.id pci 0x112f -&device.id pci 0x0000 -+device.name MVC IC-PCI - - vendor.id pci 0x112f -&device.id pci 0x0001 -+device.name MVC IM-PCI Video frame grabber/processor - - vendor.id pci 0x1130 -+vendor.name Computervision - - vendor.id pci 0x1131 -+vendor.name Philips Semiconductors - - vendor.id pci 0x1131 -&device.id pci 0x1561 -+device.name USB 1.1 Host Controller - - vendor.id pci 0x1131 -&device.id pci 0x1562 -+device.name USB 2.0 Host Controller - - vendor.id pci 0x1131 -&device.id pci 0x3400 -+device.name SmartPCI56(UCB1500) 56K Modem - - vendor.id pci 0x1131 -&device.id pci 0x5400 -+device.name TriMedia TM1000/1100 - - vendor.id pci 0x1131 -&device.id pci 0x5402 -+device.name TriMedia TM-1300 - - vendor.id pci 0x1131 -&device.id pci 0x7130 -+device.name SAA7130 Video Broadcast Decoder - - vendor.id pci 0x1131 -&device.id pci 0x7130 -&subvendor.id pci 0x5168 -&subdevice.id pci 0x0138 -+subdevice.name LiveView FlyVideo 2000 - - vendor.id pci 0x1131 -&device.id pci 0x7133 -+device.name SAA713X Audio+video broadcast decoder - - vendor.id pci 0x1131 -&device.id pci 0x7133 -&subvendor.id pci 0x5168 -&subdevice.id pci 0x0138 -+subdevice.name LifeView FlyVideo 3000 - - vendor.id pci 0x1131 -&device.id pci 0x7133 -&subvendor.id pci 0x5168 -&subdevice.id pci 0x0212 -+subdevice.name LifeView FlyTV Platinum mini - - vendor.id pci 0x1131 -&device.id pci 0x7134 -+device.name SAA7134 - - vendor.id pci 0x1131 -&device.id pci 0x7135 -+device.name SAA7135 Audio+video broadcast decoder - - vendor.id pci 0x1131 -&device.id pci 0x7145 -+device.name SAA7145 - - vendor.id pci 0x1131 -&device.id pci 0x7146 -+device.name SAA7146 - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x110a -&subdevice.id pci 0x0000 -+subdevice.name Fujitsu/Siemens DVB-C card rev1.5 - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x110a -&subdevice.id pci 0xffff -+subdevice.name Fujitsu/Siemens DVB-C card rev1.5 - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x1131 -&subdevice.id pci 0x4f56 -+subdevice.name KNC1 DVB-S Budget - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x1131 -&subdevice.id pci 0x4f61 -+subdevice.name Fujitsu-Siemens Activy DVB-S Budget - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x114b -&subdevice.id pci 0x2003 -+subdevice.name DVRaptor Video Edit/Capture Card - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x11bd -&subdevice.id pci 0x0006 -+subdevice.name DV500 Overlay - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x11bd -&subdevice.id pci 0x000a -+subdevice.name DV500 Overlay - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x0000 -+subdevice.name Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5 - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x0001 -+subdevice.name Technotrend/Hauppauge DVB card rev1.3 or rev1.6 - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x0002 -+subdevice.name Technotrend/Hauppauge DVB card rev2.1 - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x0003 -+subdevice.name Technotrend/Hauppauge DVB card rev2.1 - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x0004 -+subdevice.name Technotrend/Hauppauge DVB card rev2.1 - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x0006 -+subdevice.name Technotrend/Hauppauge DVB card rev1.3 or rev1.6 - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x0008 -+subdevice.name Technotrend/Hauppauge DVB-T - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x000a -+subdevice.name Octal/Technotrend DVB-C for iTV - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x1003 -+subdevice.name Technotrend-Budget / Hauppauge WinTV-NOVA-S DVB card - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x1004 -+subdevice.name Technotrend-Budget / Hauppauge WinTV-NOVA-C DVB card - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x1005 -+subdevice.name Technotrend-Budget / Hauppauge WinTV-NOVA-T DVB card - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x100c -+subdevice.name Technotrend-Budget / Hauppauge WinTV-NOVA-CI DVB card - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x100f -+subdevice.name Technotrend-Budget / Hauppauge WinTV-NOVA-CI DVB card - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x1011 -+subdevice.name Technotrend-Budget / Hauppauge WinTV-NOVA-T DVB card - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x1013 -+subdevice.name SATELCO Multimedia DVB - - vendor.id pci 0x1131 -&device.id pci 0x7146 -&subvendor.id pci 0x13c2 -&subdevice.id pci 0x1102 -+subdevice.name Technotrend/Hauppauge DVB card rev2.1 - - vendor.id pci 0x1132 -+vendor.name Mitel Corp. - - vendor.id pci 0x1133 -+vendor.name Eicon Networks Corporation - - vendor.id pci 0x1133 -&device.id pci 0x7901 -+device.name EiconCard S90 - - vendor.id pci 0x1133 -&device.id pci 0x7902 -+device.name EiconCard S90 - - vendor.id pci 0x1133 -&device.id pci 0x7911 -+device.name EiconCard S91 - - vendor.id pci 0x1133 -&device.id pci 0x7912 -+device.name EiconCard S91 - - vendor.id pci 0x1133 -&device.id pci 0x7941 -+device.name EiconCard S94 - - vendor.id pci 0x1133 -&device.id pci 0x7942 -+device.name EiconCard S94 - - vendor.id pci 0x1133 -&device.id pci 0x7943 -+device.name EiconCard S94 - - vendor.id pci 0x1133 -&device.id pci 0x7944 -+device.name EiconCard S94 - - vendor.id pci 0x1133 -&device.id pci 0xb921 -+device.name EiconCard P92 - - vendor.id pci 0x1133 -&device.id pci 0xb922 -+device.name EiconCard P92 - - vendor.id pci 0x1133 -&device.id pci 0xb923 -+device.name EiconCard P92 - - vendor.id pci 0x1133 -&device.id pci 0xe001 -+device.name Diva Pro 2.0 S/T - - vendor.id pci 0x1133 -&device.id pci 0xe002 -+device.name Diva 2.0 S/T PCI - - vendor.id pci 0x1133 -&device.id pci 0xe003 -+device.name Diva Pro 2.0 U - - vendor.id pci 0x1133 -&device.id pci 0xe004 -+device.name Diva 2.0 U PCI - - vendor.id pci 0x1133 -&device.id pci 0xe005 -+device.name Diva 2.01 S/T PCI - - vendor.id pci 0x1133 -&device.id pci 0xe006 -+device.name Diva CT S/T PCI - - vendor.id pci 0x1133 -&device.id pci 0xe007 -+device.name Diva CT U PCI - - vendor.id pci 0x1133 -&device.id pci 0xe008 -+device.name Diva CT Lite S/T PCI - - vendor.id pci 0x1133 -&device.id pci 0xe009 -+device.name Diva CT Lite U PCI - - vendor.id pci 0x1133 -&device.id pci 0xe00a -+device.name Diva ISDN+V.90 PCI - - vendor.id pci 0x1133 -&device.id pci 0xe00b -+device.name Diva 2.02 PCI S/T - - vendor.id pci 0x1133 -&device.id pci 0xe00c -+device.name Diva 2.02 PCI U - - vendor.id pci 0x1133 -&device.id pci 0xe00d -+device.name Diva ISDN Pro 3.0 PCI - - vendor.id pci 0x1133 -&device.id pci 0xe00e -+device.name Diva ISDN+CT S/T PCI Rev 2 - - vendor.id pci 0x1133 -&device.id pci 0xe010 -+device.name Diva Server BRI-2M PCI - - vendor.id pci 0x1133 -&device.id pci 0xe010 -&subvendor.id pci 0x110a -&subdevice.id pci 0x0021 -+subdevice.name Fujitsu Siemens ISDN S0 - - vendor.id pci 0x1133 -&device.id pci 0xe010 -&subvendor.id pci 0x8001 -&subdevice.id pci 0x0014 -+subdevice.name Diva Server BRI-2M PCI Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe011 -+device.name Diva Server BRI S/T Rev 2 - - vendor.id pci 0x1133 -&device.id pci 0xe012 -+device.name Diva Server 4BRI-8M PCI - - vendor.id pci 0x1133 -&device.id pci 0xe012 -&subvendor.id pci 0x8001 -&subdevice.id pci 0x0014 -+subdevice.name Diva Server 4BRI-8M PCI Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe013 -+device.name Diva Server 4BRI Rev 2 - - vendor.id pci 0x1133 -&device.id pci 0xe013 -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1300 -+subdevice.name Diva Server V-4BRI-8 - - vendor.id pci 0x1133 -&device.id pci 0xe013 -&subvendor.id pci 0x1133 -&subdevice.id pci 0xe013 -+subdevice.name Diva Server 4BRI-8M 2.0 PCI - - vendor.id pci 0x1133 -&device.id pci 0xe013 -&subvendor.id pci 0x8001 -&subdevice.id pci 0x0014 -+subdevice.name Diva Server 4BRI-8M 2.0 PCI Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe014 -+device.name Diva Server PRI-30M PCI - - vendor.id pci 0x1133 -&device.id pci 0xe014 -&subvendor.id pci 0x0008 -&subdevice.id pci 0x0100 -+subdevice.name Diva Server PRI-30M PCI - - vendor.id pci 0x1133 -&device.id pci 0xe014 -&subvendor.id pci 0x8001 -&subdevice.id pci 0x0014 -+subdevice.name Diva Server PRI-30M PCI Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe015 -+device.name DIVA Server PRI Rev 2 - - vendor.id pci 0x1133 -&device.id pci 0xe015 -&subvendor.id pci 0x1133 -&subdevice.id pci 0xe015 -+subdevice.name Diva Server PRI 2.0 PCI - - vendor.id pci 0x1133 -&device.id pci 0xe015 -&subvendor.id pci 0x8001 -&subdevice.id pci 0x0014 -+subdevice.name Diva Server PRI 2.0 PCI Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe016 -+device.name Diva Server Voice 4BRI PCI - - vendor.id pci 0x1133 -&device.id pci 0xe016 -&subvendor.id pci 0x8001 -&subdevice.id pci 0x0014 -+subdevice.name Diva Server PRI Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe017 -+device.name Diva Server Voice 4BRI Rev 2 - - vendor.id pci 0x1133 -&device.id pci 0xe017 -&subvendor.id pci 0x1133 -&subdevice.id pci 0xe017 -+subdevice.name Diva Server Voice 4BRI-8M 2.0 PCI - - vendor.id pci 0x1133 -&device.id pci 0xe017 -&subvendor.id pci 0x8001 -&subdevice.id pci 0x0014 -+subdevice.name Diva Server Voice 4BRI-8M 2.0 PCI Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe018 -+device.name Diva Server BRI-2M 2.0 PCI - - vendor.id pci 0x1133 -&device.id pci 0xe018 -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1800 -+subdevice.name Diva Server V-BRI-2 - - vendor.id pci 0x1133 -&device.id pci 0xe018 -&subvendor.id pci 0x1133 -&subdevice.id pci 0xe018 -+subdevice.name Diva Server BRI-2M 2.0 PCI - - vendor.id pci 0x1133 -&device.id pci 0xe018 -&subvendor.id pci 0x8001 -&subdevice.id pci 0x0014 -+subdevice.name Diva Server BRI-2M 2.0 PCI Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe019 -+device.name Diva Server Voice PRI Rev 2 - - vendor.id pci 0x1133 -&device.id pci 0xe019 -&subvendor.id pci 0x1133 -&subdevice.id pci 0xe019 -+subdevice.name Diva Server Voice PRI 2.0 PCI - - vendor.id pci 0x1133 -&device.id pci 0xe019 -&subvendor.id pci 0x8001 -&subdevice.id pci 0x0014 -+subdevice.name Diva Server Voice PRI 2.0 PCI Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe01a -+device.name Diva Server 2FX - - vendor.id pci 0x1133 -&device.id pci 0xe01b -+device.name Diva Server Voice BRI-2M 2.0 PCI - - vendor.id pci 0x1133 -&device.id pci 0xe01b -&subvendor.id pci 0x1133 -&subdevice.id pci 0xe01b -+subdevice.name Diva Server Voice BRI-2M 2.0 PCI - - vendor.id pci 0x1133 -&device.id pci 0xe01b -&subvendor.id pci 0x8001 -&subdevice.id pci 0x0014 -+subdevice.name Diva Server Voice BRI-2M 2.0 PCI Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe01c -+device.name Diva Server PRI Rev 3 - - vendor.id pci 0x1133 -&device.id pci 0xe01c -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1c01 -+subdevice.name Diva Server PRI/E1/T1-8 - - vendor.id pci 0x1133 -&device.id pci 0xe01c -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1c02 -+subdevice.name Diva Server PRI/T1-24 - - vendor.id pci 0x1133 -&device.id pci 0xe01c -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1c03 -+subdevice.name Diva Server PRI/E1-30 - - vendor.id pci 0x1133 -&device.id pci 0xe01c -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1c04 -+subdevice.name Diva Server PRI/E1/T1 - - vendor.id pci 0x1133 -&device.id pci 0xe01c -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1c05 -+subdevice.name Diva Server V-PRI/T1-24 - - vendor.id pci 0x1133 -&device.id pci 0xe01c -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1c06 -+subdevice.name Diva Server V-PRI/E1-30 - - vendor.id pci 0x1133 -&device.id pci 0xe01c -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1c07 -+subdevice.name Diva Server PRI/E1/T1-8 Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe01c -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1c08 -+subdevice.name Diva Server PRI/T1-24 Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe01c -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1c09 -+subdevice.name Diva Server PRI/E1-30 Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe01c -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1c0a -+subdevice.name Diva Server PRI/E1/T1 Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe01c -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1c0b -+subdevice.name Diva Server V-PRI/T1-24 Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe01c -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1c0c -+subdevice.name Diva Server V-PRI/E1-30 Cornet NQ - - vendor.id pci 0x1133 -&device.id pci 0xe01e -+device.name Diva Server 2PRI - - vendor.id pci 0x1133 -&device.id pci 0xe01e -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1e00 -+subdevice.name Diva Server V-2PRI/E1-60 - - vendor.id pci 0x1133 -&device.id pci 0xe01e -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1e01 -+subdevice.name Diva Server V-2PRI/T1-48 - - vendor.id pci 0x1133 -&device.id pci 0xe01e -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1e02 -+subdevice.name Diva Server 2PRI/E1-60 - - vendor.id pci 0x1133 -&device.id pci 0xe01e -&subvendor.id pci 0x1133 -&subdevice.id pci 0x1e03 -+subdevice.name Diva Server 2PRI/T1-48 - - vendor.id pci 0x1133 -&device.id pci 0xe020 -+device.name Diva Server 4PRI - - vendor.id pci 0x1133 -&device.id pci 0xe020 -&subvendor.id pci 0x1133 -&subdevice.id pci 0x2000 -+subdevice.name Diva Server V-4PRI/E1-120 - - vendor.id pci 0x1133 -&device.id pci 0xe020 -&subvendor.id pci 0x1133 -&subdevice.id pci 0x2001 -+subdevice.name Diva Server V-4PRI/T1-96 - - vendor.id pci 0x1133 -&device.id pci 0xe020 -&subvendor.id pci 0x1133 -&subdevice.id pci 0x2002 -+subdevice.name Diva Server 4PRI/E1-120 - - vendor.id pci 0x1133 -&device.id pci 0xe020 -&subvendor.id pci 0x1133 -&subdevice.id pci 0x2003 -+subdevice.name Diva Server 4PRI/T1-96 - - vendor.id pci 0x1133 -&device.id pci 0xe024 -+device.name Diva Server Analog-4P - - vendor.id pci 0x1133 -&device.id pci 0xe024 -&subvendor.id pci 0x1133 -&subdevice.id pci 0x2400 -+subdevice.name Diva Server V-Analog-4P - - vendor.id pci 0x1133 -&device.id pci 0xe024 -&subvendor.id pci 0x1133 -&subdevice.id pci 0xe024 -+subdevice.name Diva Server Analog-4P - - vendor.id pci 0x1133 -&device.id pci 0xe028 -+device.name Diva Server Analog-8P - - vendor.id pci 0x1133 -&device.id pci 0xe028 -&subvendor.id pci 0x1133 -&subdevice.id pci 0x2800 -+subdevice.name Diva Server V-Analog-8P - - vendor.id pci 0x1133 -&device.id pci 0xe028 -&subvendor.id pci 0x1133 -&subdevice.id pci 0xe028 -+subdevice.name Diva Server Analog-8P - - vendor.id pci 0x1134 -+vendor.name Mercury Computer Systems - - vendor.id pci 0x1134 -&device.id pci 0x0001 -+device.name Raceway Bridge - - vendor.id pci 0x1134 -&device.id pci 0x0002 -+device.name Dual PCI to RapidIO Bridge - - vendor.id pci 0x1135 -+vendor.name Fuji Xerox Co Ltd - - vendor.id pci 0x1135 -&device.id pci 0x0001 -+device.name Printer controller - - vendor.id pci 0x1136 -+vendor.name Momentum Data Systems - - vendor.id pci 0x1137 -+vendor.name Cisco Systems Inc - - vendor.id pci 0x1138 -+vendor.name Ziatech Corporation - - vendor.id pci 0x1138 -&device.id pci 0x8905 -+device.name 8905 [STD 32 Bridge] - - vendor.id pci 0x1139 -+vendor.name Dynamic Pictures, Inc - - vendor.id pci 0x1139 -&device.id pci 0x0001 -+device.name VGA Compatable 3D Graphics - - vendor.id pci 0x113a -+vendor.name FWB Inc - - vendor.id pci 0x113b -+vendor.name Network Computing Devices - - vendor.id pci 0x113c -+vendor.name Cyclone Microsystems, Inc. - - vendor.id pci 0x113c -&device.id pci 0x0000 -+device.name PCI-9060 i960 Bridge - - vendor.id pci 0x113c -&device.id pci 0x0001 -+device.name PCI-SDK [PCI i960 Evaluation Platform] - - vendor.id pci 0x113c -&device.id pci 0x0911 -+device.name PCI-911 [i960Jx-based Intelligent I/O Controller] - - vendor.id pci 0x113c -&device.id pci 0x0912 -+device.name PCI-912 [i960CF-based Intelligent I/O Controller] - - vendor.id pci 0x113c -&device.id pci 0x0913 -+device.name PCI-913 - - vendor.id pci 0x113c -&device.id pci 0x0914 -+device.name PCI-914 [I/O Controller w/ secondary PCI bus] - - vendor.id pci 0x113d -+vendor.name Leading Edge Products Inc - - vendor.id pci 0x113e -+vendor.name Sanyo Electric Co - Computer Engineering Dept - - vendor.id pci 0x113f -+vendor.name Equinox Systems, Inc. - - vendor.id pci 0x113f -&device.id pci 0x0808 -+device.name SST-64P Adapter - - vendor.id pci 0x113f -&device.id pci 0x1010 -+device.name SST-128P Adapter - - vendor.id pci 0x113f -&device.id pci 0x80c0 -+device.name SST-16P DB Adapter - - vendor.id pci 0x113f -&device.id pci 0x80c4 -+device.name SST-16P RJ Adapter - - vendor.id pci 0x113f -&device.id pci 0x80c8 -+device.name SST-16P Adapter - - vendor.id pci 0x113f -&device.id pci 0x8888 -+device.name SST-4P Adapter - - vendor.id pci 0x113f -&device.id pci 0x9090 -+device.name SST-8P Adapter - - vendor.id pci 0x1140 -+vendor.name Intervoice Inc - - vendor.id pci 0x1141 -+vendor.name Crest Microsystem Inc - - vendor.id pci 0x1142 -+vendor.name Alliance Semiconductor Corporation - - vendor.id pci 0x1142 -&device.id pci 0x3210 -+device.name AP6410 - - vendor.id pci 0x1142 -&device.id pci 0x6422 -+device.name ProVideo 6422 - - vendor.id pci 0x1142 -&device.id pci 0x6424 -+device.name ProVideo 6424 - - vendor.id pci 0x1142 -&device.id pci 0x6425 -+device.name ProMotion AT25 - - vendor.id pci 0x1142 -&device.id pci 0x643d -+device.name ProMotion AT3D - - vendor.id pci 0x1143 -+vendor.name NetPower, Inc - - vendor.id pci 0x1144 -+vendor.name Cincinnati Milacron - - vendor.id pci 0x1144 -&device.id pci 0x0001 -+device.name Noservo controller - - vendor.id pci 0x1145 -+vendor.name Workbit Corporation - - vendor.id pci 0x1145 -&device.id pci 0x8007 -+device.name NinjaSCSI-32 Workbit - - vendor.id pci 0x1145 -&device.id pci 0xf007 -+device.name NinjaSCSI-32 KME - - vendor.id pci 0x1145 -&device.id pci 0xf010 -+device.name NinjaSCSI-32 Workbit - - vendor.id pci 0x1145 -&device.id pci 0xf012 -+device.name NinjaSCSI-32 Logitec - - vendor.id pci 0x1145 -&device.id pci 0xf013 -+device.name NinjaSCSI-32 Logitec - - vendor.id pci 0x1145 -&device.id pci 0xf015 -+device.name NinjaSCSI-32 Melco - - vendor.id pci 0x1146 -+vendor.name Force Computers - - vendor.id pci 0x1147 -+vendor.name Interface Corp - - vendor.id pci 0x1148 -+vendor.name SysKonnect - - vendor.id pci 0x1148 -&device.id pci 0x4000 -+device.name FDDI Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb03b -+subdevice.name Netelligent 100 FDDI DAS Fibre SC - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb03c -+subdevice.name Netelligent 100 FDDI SAS Fibre SC - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb03d -+subdevice.name Netelligent 100 FDDI DAS UTP - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb03e -+subdevice.name Netelligent 100 FDDI SAS UTP - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb03f -+subdevice.name Netelligent 100 FDDI SAS Fibre MIC - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5521 -+subdevice.name FDDI SK-5521 (SK-NET FDDI-UP) - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5522 -+subdevice.name FDDI SK-5522 (SK-NET FDDI-UP DAS) - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5541 -+subdevice.name FDDI SK-5541 (SK-NET FDDI-FP) - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5543 -+subdevice.name FDDI SK-5543 (SK-NET FDDI-LP) - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5544 -+subdevice.name FDDI SK-5544 (SK-NET FDDI-LP DAS) - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5821 -+subdevice.name FDDI SK-5821 (SK-NET FDDI-UP64) - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5822 -+subdevice.name FDDI SK-5822 (SK-NET FDDI-UP64 DAS) - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5841 -+subdevice.name FDDI SK-5841 (SK-NET FDDI-FP64) - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5843 -+subdevice.name FDDI SK-5843 (SK-NET FDDI-LP64) - - vendor.id pci 0x1148 -&device.id pci 0x4000 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5844 -+subdevice.name FDDI SK-5844 (SK-NET FDDI-LP64 DAS) - - vendor.id pci 0x1148 -&device.id pci 0x4200 -+device.name Token Ring adapter - - vendor.id pci 0x1148 -&device.id pci 0x4300 -+device.name SK-98xx Gigabit Ethernet Server Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9821 -+subdevice.name SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T) - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9822 -+subdevice.name SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link) - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9841 -+subdevice.name SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX) - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9842 -+subdevice.name SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link) - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9843 -+subdevice.name SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX) - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9844 -+subdevice.name SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link) - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9861 -+subdevice.name SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition) - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9862 -+subdevice.name SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link) - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9871 -+subdevice.name SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX) - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9872 -+subdevice.name SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2970 -+subdevice.name AT-2970SX Gigabit Ethernet Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2971 -+subdevice.name AT-2970LX Gigabit Ethernet Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2972 -+subdevice.name AT-2970TX Gigabit Ethernet Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2973 -+subdevice.name AT-2971SX Gigabit Ethernet Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2974 -+subdevice.name AT-2971T Gigabit Ethernet Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2975 -+subdevice.name AT-2970SX/2SC Gigabit Ethernet Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2976 -+subdevice.name AT-2970LX/2SC Gigabit Ethernet Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4300 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2977 -+subdevice.name AT-2970TX/2TX Gigabit Ethernet Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -+device.name SK-98xx V2.0 Gigabit Ethernet Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x0121 -+subdevice.name Marvell RDK-8001 Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x0221 -+subdevice.name Marvell RDK-8002 Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x0321 -+subdevice.name Marvell RDK-8003 Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x0421 -+subdevice.name Marvell RDK-8004 Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x0621 -+subdevice.name Marvell RDK-8006 Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x0721 -+subdevice.name Marvell RDK-8007 Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x0821 -+subdevice.name Marvell RDK-8008 Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x0921 -+subdevice.name Marvell RDK-8009 Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x1121 -+subdevice.name Marvell RDK-8011 Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x1221 -+subdevice.name Marvell RDK-8012 Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x3221 -+subdevice.name SK-9521 V2.0 10/100/1000Base-T Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5021 -+subdevice.name SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5041 -+subdevice.name SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5043 -+subdevice.name SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5051 -+subdevice.name SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5061 -+subdevice.name SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x5071 -+subdevice.name SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4320 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9521 -+subdevice.name SK-9521 10/100/1000Base-T Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4400 -+device.name SK-9Dxx Gigabit Ethernet Adapter - - vendor.id pci 0x1148 -&device.id pci 0x4500 -+device.name SK-9Mxx Gigabit Ethernet Adapter - - vendor.id pci 0x1148 -&device.id pci 0x9e00 -+device.name SK-9Exx 10/100/1000Base-T Adapter - - vendor.id pci 0x1148 -&device.id pci 0x9e00 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x2100 -+subdevice.name SK-9E21 Server Adapter - - vendor.id pci 0x1148 -&device.id pci 0x9e00 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x21d0 -+subdevice.name SK-9E21D 10/100/1000Base-T Adapter - - vendor.id pci 0x1148 -&device.id pci 0x9e00 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x2200 -+subdevice.name SK-9E22 Server Adapter - - vendor.id pci 0x1148 -&device.id pci 0x9e00 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x8100 -+subdevice.name SK-9E81 Server Adapter - - vendor.id pci 0x1148 -&device.id pci 0x9e00 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x8200 -+subdevice.name SK-9E82 Server Adapter - - vendor.id pci 0x1148 -&device.id pci 0x9e00 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9100 -+subdevice.name SK-9E91 Server Adapter - - vendor.id pci 0x1148 -&device.id pci 0x9e00 -&subvendor.id pci 0x1148 -&subdevice.id pci 0x9200 -+subdevice.name SK-9E92 Server Adapter - - vendor.id pci 0x1149 -+vendor.name Win System Corporation - - vendor.id pci 0x114a -+vendor.name VMIC - - vendor.id pci 0x114a -&device.id pci 0x5579 -+device.name VMIPCI-5579 (Reflective Memory Card) - - vendor.id pci 0x114a -&device.id pci 0x5587 -+device.name VMIPCI-5587 (Reflective Memory Card) - - vendor.id pci 0x114a -&device.id pci 0x6504 -+device.name VMIC PCI 7755 FPGA - - vendor.id pci 0x114a -&device.id pci 0x7587 -+device.name VMIVME-7587 - - vendor.id pci 0x114b -+vendor.name Canopus Co., Ltd - - vendor.id pci 0x114c -+vendor.name Annabooks - - vendor.id pci 0x114d -+vendor.name IC Corporation - - vendor.id pci 0x114e -+vendor.name Nikon Systems Inc - - vendor.id pci 0x114f -+vendor.name Digi International - - vendor.id pci 0x114f -&device.id pci 0x0002 -+device.name AccelePort EPC - - vendor.id pci 0x114f -&device.id pci 0x0003 -+device.name RightSwitch SE-6 - - vendor.id pci 0x114f -&device.id pci 0x0004 -+device.name AccelePort Xem - - vendor.id pci 0x114f -&device.id pci 0x0005 -+device.name AccelePort Xr - - vendor.id pci 0x114f -&device.id pci 0x0006 -+device.name AccelePort Xr,C/X - - vendor.id pci 0x114f -&device.id pci 0x0009 -+device.name AccelePort Xr/J - - vendor.id pci 0x114f -&device.id pci 0x000a -+device.name AccelePort EPC/J - - vendor.id pci 0x114f -&device.id pci 0x000c -+device.name DataFirePRIme T1 (1-port) - - vendor.id pci 0x114f -&device.id pci 0x000d -+device.name SyncPort 2-Port (x.25/FR) - - vendor.id pci 0x114f -&device.id pci 0x0011 -+device.name AccelePort 8r EIA-232 (IBM) - - vendor.id pci 0x114f -&device.id pci 0x0012 -+device.name AccelePort 8r EIA-422 - - vendor.id pci 0x114f -&device.id pci 0x0013 -+device.name AccelePort Xr - - vendor.id pci 0x114f -&device.id pci 0x0014 -+device.name AccelePort 8r EIA-422 - - vendor.id pci 0x114f -&device.id pci 0x0015 -+device.name AccelePort Xem - - vendor.id pci 0x114f -&device.id pci 0x0016 -+device.name AccelePort EPC/X - - vendor.id pci 0x114f -&device.id pci 0x0017 -+device.name AccelePort C/X - - vendor.id pci 0x114f -&device.id pci 0x001a -+device.name DataFirePRIme E1 (1-port) - - vendor.id pci 0x114f -&device.id pci 0x001b -+device.name AccelePort C/X (IBM) - - vendor.id pci 0x114f -&device.id pci 0x001d -+device.name DataFire RAS T1/E1/PRI - - vendor.id pci 0x114f -&device.id pci 0x001d -&subvendor.id pci 0x114f -&subdevice.id pci 0x0050 -+subdevice.name DataFire RAS E1 Adapter - - vendor.id pci 0x114f -&device.id pci 0x001d -&subvendor.id pci 0x114f -&subdevice.id pci 0x0051 -+subdevice.name DataFire RAS Dual E1 Adapter - - vendor.id pci 0x114f -&device.id pci 0x001d -&subvendor.id pci 0x114f -&subdevice.id pci 0x0052 -+subdevice.name DataFire RAS T1 Adapter - - vendor.id pci 0x114f -&device.id pci 0x001d -&subvendor.id pci 0x114f -&subdevice.id pci 0x0053 -+subdevice.name DataFire RAS Dual T1 Adapter - - vendor.id pci 0x114f -&device.id pci 0x0023 -+device.name AccelePort RAS - - vendor.id pci 0x114f -&device.id pci 0x0024 -+device.name DataFire RAS B4 ST/U - - vendor.id pci 0x114f -&device.id pci 0x0024 -&subvendor.id pci 0x114f -&subdevice.id pci 0x0030 -+subdevice.name DataFire RAS BRI U Adapter - - vendor.id pci 0x114f -&device.id pci 0x0024 -&subvendor.id pci 0x114f -&subdevice.id pci 0x0031 -+subdevice.name DataFire RAS BRI S/T Adapter - - vendor.id pci 0x114f -&device.id pci 0x0026 -+device.name AccelePort 4r 920 - - vendor.id pci 0x114f -&device.id pci 0x0027 -+device.name AccelePort Xr 920 - - vendor.id pci 0x114f -&device.id pci 0x0028 -+device.name ClassicBoard 4 - - vendor.id pci 0x114f -&device.id pci 0x0029 -+device.name ClassicBoard 8 - - vendor.id pci 0x114f -&device.id pci 0x0034 -+device.name AccelePort 2r 920 - - vendor.id pci 0x114f -&device.id pci 0x0035 -+device.name DataFire DSP T1/E1/PRI cPCI - - vendor.id pci 0x114f -&device.id pci 0x0040 -+device.name AccelePort Xp - - vendor.id pci 0x114f -&device.id pci 0x0042 -+device.name AccelePort 2p - - vendor.id pci 0x114f -&device.id pci 0x0043 -+device.name AccelePort 4p - - vendor.id pci 0x114f -&device.id pci 0x0044 -+device.name AccelePort 8p - - vendor.id pci 0x114f -&device.id pci 0x0045 -+device.name AccelePort 16p - - vendor.id pci 0x114f -&device.id pci 0x004e -+device.name AccelePort 32p - - vendor.id pci 0x114f -&device.id pci 0x0070 -+device.name Datafire Micro V IOM2 (Europe) - - vendor.id pci 0x114f -&device.id pci 0x0071 -+device.name Datafire Micro V (Europe) - - vendor.id pci 0x114f -&device.id pci 0x0072 -+device.name Datafire Micro V IOM2 (North America) - - vendor.id pci 0x114f -&device.id pci 0x0073 -+device.name Datafire Micro V (North America) - - vendor.id pci 0x114f -&device.id pci 0x00b0 -+device.name Digi Neo 4 - - vendor.id pci 0x114f -&device.id pci 0x00b1 -+device.name Digi Neo 8 - - vendor.id pci 0x114f -&device.id pci 0x00c8 -+device.name Digi Neo 2 DB9 - - vendor.id pci 0x114f -&device.id pci 0x00c9 -+device.name Digi Neo 2 DB9 PRI - - vendor.id pci 0x114f -&device.id pci 0x00ca -+device.name Digi Neo 2 RJ45 - - vendor.id pci 0x114f -&device.id pci 0x00cb -+device.name Digi Neo 2 RJ45 PRI - - vendor.id pci 0x114f -&device.id pci 0x00d0 -+device.name ClassicBoard 4 422 - - vendor.id pci 0x114f -&device.id pci 0x00d1 -+device.name ClassicBoard 8 422 - - vendor.id pci 0x114f -&device.id pci 0x6001 -+device.name Avanstar - - vendor.id pci 0x1150 -+vendor.name Thinking Machines Corp - - vendor.id pci 0x1151 -+vendor.name JAE Electronics Inc. - - vendor.id pci 0x1152 -+vendor.name Megatek - - vendor.id pci 0x1153 -+vendor.name Land Win Electronic Corp - - vendor.id pci 0x1154 -+vendor.name Melco Inc - - vendor.id pci 0x1155 -+vendor.name Pine Technology Ltd - - vendor.id pci 0x1156 -+vendor.name Periscope Engineering - - vendor.id pci 0x1157 -+vendor.name Avsys Corporation - - vendor.id pci 0x1158 -+vendor.name Voarx R & D Inc - - vendor.id pci 0x1158 -&device.id pci 0x3011 -+device.name Tokenet/vg 1001/10m anylan - - vendor.id pci 0x1158 -&device.id pci 0x9050 -+device.name Lanfleet/Truevalue - - vendor.id pci 0x1158 -&device.id pci 0x9051 -+device.name Lanfleet/Truevalue - - vendor.id pci 0x1159 -+vendor.name Mutech Corp - - vendor.id pci 0x1159 -&device.id pci 0x0001 -+device.name MV-1000 - - vendor.id pci 0x115a -+vendor.name Harlequin Ltd - - vendor.id pci 0x115b -+vendor.name Parallax Graphics - - vendor.id pci 0x115c -+vendor.name Photron Ltd. - - vendor.id pci 0x115d -+vendor.name Xircom - - vendor.id pci 0x115d -&device.id pci 0x0003 -+device.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x0003 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0181 -+subdevice.name 10/100 EtherJet Cardbus Adapter - - vendor.id pci 0x115d -&device.id pci 0x0003 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x1181 -+subdevice.name 10/100 EtherJet Cardbus Adapter - - vendor.id pci 0x115d -&device.id pci 0x0003 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x8181 -+subdevice.name 10/100 EtherJet Cardbus Adapter - - vendor.id pci 0x115d -&device.id pci 0x0003 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x9181 -+subdevice.name 10/100 EtherJet Cardbus Adapter - - vendor.id pci 0x115d -&device.id pci 0x0003 -&subvendor.id pci 0x115d -&subdevice.id pci 0x0181 -+subdevice.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x0003 -&subvendor.id pci 0x115d -&subdevice.id pci 0x1181 -+subdevice.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x0003 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0181 -+subdevice.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x0003 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x8181 -+subdevice.name EtherExpress PRO/100 Mobile CardBus 32 Adapter - - vendor.id pci 0x115d -&device.id pci 0x0003 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x9181 -+subdevice.name EtherExpress PRO/100 Mobile CardBus 32 Adapter - - vendor.id pci 0x115d -&device.id pci 0x0005 -+device.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x0005 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0182 -+subdevice.name 10/100 EtherJet Cardbus Adapter - - vendor.id pci 0x115d -&device.id pci 0x0005 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x1182 -+subdevice.name 10/100 EtherJet Cardbus Adapter - - vendor.id pci 0x115d -&device.id pci 0x0005 -&subvendor.id pci 0x115d -&subdevice.id pci 0x0182 -+subdevice.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x0005 -&subvendor.id pci 0x115d -&subdevice.id pci 0x1182 -+subdevice.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x0007 -+device.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x0007 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0182 -+subdevice.name 10/100 EtherJet Cardbus Adapter - - vendor.id pci 0x115d -&device.id pci 0x0007 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x1182 -+subdevice.name 10/100 EtherJet Cardbus Adapter - - vendor.id pci 0x115d -&device.id pci 0x0007 -&subvendor.id pci 0x115d -&subdevice.id pci 0x0182 -+subdevice.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x0007 -&subvendor.id pci 0x115d -&subdevice.id pci 0x1182 -+subdevice.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x000b -+device.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x000b -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0183 -+subdevice.name 10/100 EtherJet Cardbus Adapter - - vendor.id pci 0x115d -&device.id pci 0x000b -&subvendor.id pci 0x115d -&subdevice.id pci 0x0183 -+subdevice.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x000c -+device.name Mini-PCI V.90 56k Modem - - vendor.id pci 0x115d -&device.id pci 0x000f -+device.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x000f -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0183 -+subdevice.name 10/100 EtherJet Cardbus Adapter - - vendor.id pci 0x115d -&device.id pci 0x000f -&subvendor.id pci 0x115d -&subdevice.id pci 0x0183 -+subdevice.name Cardbus Ethernet 10/100 - - vendor.id pci 0x115d -&device.id pci 0x00d4 -+device.name Mini-PCI K56Flex Modem - - vendor.id pci 0x115d -&device.id pci 0x0101 -+device.name Cardbus 56k modem - - vendor.id pci 0x115d -&device.id pci 0x0101 -&subvendor.id pci 0x115d -&subdevice.id pci 0x1081 -+subdevice.name Cardbus 56k Modem - - vendor.id pci 0x115d -&device.id pci 0x0103 -+device.name Cardbus Ethernet + 56k Modem - - vendor.id pci 0x115d -&device.id pci 0x0103 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x9181 -+subdevice.name Cardbus 56k Modem - - vendor.id pci 0x115d -&device.id pci 0x0103 -&subvendor.id pci 0x1115 -&subdevice.id pci 0x1181 -+subdevice.name Cardbus Ethernet 100 + 56k Modem - - vendor.id pci 0x115d -&device.id pci 0x0103 -&subvendor.id pci 0x115d -&subdevice.id pci 0x1181 -+subdevice.name CBEM56G-100 Ethernet + 56k Modem - - vendor.id pci 0x115d -&device.id pci 0x0103 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x9181 -+subdevice.name PRO/100 LAN + Modem56 CardBus - - vendor.id pci 0x115e -+vendor.name Peer Protocols Inc - - vendor.id pci 0x115f -+vendor.name Maxtor Corporation - - vendor.id pci 0x1160 -+vendor.name Megasoft Inc - - vendor.id pci 0x1161 -+vendor.name PFU Limited - - vendor.id pci 0x1162 -+vendor.name OA Laboratory Co Ltd - - vendor.id pci 0x1163 -+vendor.name Rendition - - vendor.id pci 0x1163 -&device.id pci 0x0001 -+device.name Verite 1000 - - vendor.id pci 0x1163 -&device.id pci 0x2000 -+device.name Verite V2000/V2100/V2200 - - vendor.id pci 0x1163 -&device.id pci 0x2000 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x2000 -+subdevice.name Stealth II S220 - - vendor.id pci 0x1164 -+vendor.name Advanced Peripherals Technologies - - vendor.id pci 0x1165 -+vendor.name Imagraph Corporation - - vendor.id pci 0x1165 -&device.id pci 0x0001 -+device.name Motion TPEG Recorder/Player with audio - - vendor.id pci 0x1166 -+vendor.name ServerWorks - - vendor.id pci 0x1166 -&device.id pci 0x0000 -+device.name CMIC-LE - - vendor.id pci 0x1166 -&device.id pci 0x0005 -+device.name CNB20-LE Host Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0006 -+device.name CNB20HE Host Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0007 -+device.name CNB20-LE Host Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0008 -+device.name CNB20HE Host Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0009 -+device.name CNB20LE Host Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0010 -+device.name CIOB30 - - vendor.id pci 0x1166 -&device.id pci 0x0011 -+device.name CMIC-HE - - vendor.id pci 0x1166 -&device.id pci 0x0012 -+device.name CMIC-WS Host Bridge (GC-LE chipset) - - vendor.id pci 0x1166 -&device.id pci 0x0013 -+device.name CNB20-HE Host Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0014 -+device.name CMIC-LE Host Bridge (GC-LE chipset) - - vendor.id pci 0x1166 -&device.id pci 0x0015 -+device.name CMIC-GC Host Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0016 -+device.name CMIC-GC Host Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0017 -+device.name GCNB-LE Host Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0101 -+device.name CIOB-X2 PCI-X I/O Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0110 -+device.name CIOB-E I/O Bridge with Gigabit Ethernet - - vendor.id pci 0x1166 -&device.id pci 0x0200 -+device.name OSB4 South Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0201 -+device.name CSB5 South Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0201 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1080 -+subdevice.name CT8 mainboard - - vendor.id pci 0x1166 -&device.id pci 0x0203 -+device.name CSB6 South Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0211 -+device.name OSB4 IDE Controller - - vendor.id pci 0x1166 -&device.id pci 0x0212 -+device.name CSB5 IDE Controller - - vendor.id pci 0x1166 -&device.id pci 0x0212 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1080 -+subdevice.name CT8 mainboard - - vendor.id pci 0x1166 -&device.id pci 0x0213 -+device.name CSB6 RAID/IDE Controller - - vendor.id pci 0x1166 -&device.id pci 0x0217 -+device.name CSB6 IDE Controller - - vendor.id pci 0x1166 -&device.id pci 0x0220 -+device.name OSB4/CSB5 OHCI USB Controller - - vendor.id pci 0x1166 -&device.id pci 0x0220 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1080 -+subdevice.name CT8 mainboard - - vendor.id pci 0x1166 -&device.id pci 0x0221 -+device.name CSB6 OHCI USB Controller - - vendor.id pci 0x1166 -&device.id pci 0x0225 -+device.name CSB5 LPC bridge - - vendor.id pci 0x1166 -&device.id pci 0x0225 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1080 -+subdevice.name CT8 mainboard - - vendor.id pci 0x1166 -&device.id pci 0x0227 -+device.name GCLE-2 Host Bridge - - vendor.id pci 0x1166 -&device.id pci 0x0230 -+device.name CSB5 LPC bridge - - vendor.id pci 0x1166 -&device.id pci 0x0230 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1080 -+subdevice.name CT8 mainboard - - vendor.id pci 0x1166 -&device.id pci 0x0240 -+device.name K2 SATA - - vendor.id pci 0x1167 -+vendor.name Mutoh Industries Inc - - vendor.id pci 0x1168 -+vendor.name Thine Electronics Inc - - vendor.id pci 0x1169 -+vendor.name Centre for Development of Advanced Computing - - vendor.id pci 0x116a -+vendor.name Polaris Communications - - vendor.id pci 0x116a -&device.id pci 0x6100 -+device.name Bus/Tag Channel - - vendor.id pci 0x116a -&device.id pci 0x6800 -+device.name Escon Channel - - vendor.id pci 0x116a -&device.id pci 0x7100 -+device.name Bus/Tag Channel - - vendor.id pci 0x116a -&device.id pci 0x7800 -+device.name Escon Channel - - vendor.id pci 0x116b -+vendor.name Connectware Inc - - vendor.id pci 0x116c -+vendor.name Intelligent Resources Integrated Systems - - vendor.id pci 0x116d -+vendor.name Martin-Marietta - - vendor.id pci 0x116e -+vendor.name Electronics for Imaging - - vendor.id pci 0x116f -+vendor.name Workstation Technology - - vendor.id pci 0x1170 -+vendor.name Inventec Corporation - - vendor.id pci 0x1171 -+vendor.name Loughborough Sound Images Plc - - vendor.id pci 0x1172 -+vendor.name Altera Corporation - - vendor.id pci 0x1173 -+vendor.name Adobe Systems, Inc - - vendor.id pci 0x1174 -+vendor.name Bridgeport Machines - - vendor.id pci 0x1175 -+vendor.name Mitron Computer Inc. - - vendor.id pci 0x1176 -+vendor.name SBE Incorporated - - vendor.id pci 0x1177 -+vendor.name Silicon Engineering - - vendor.id pci 0x1178 -+vendor.name Alfa, Inc. - - vendor.id pci 0x1178 -&device.id pci 0xafa1 -+device.name Fast Ethernet Adapter - - vendor.id pci 0x1179 -+vendor.name Toshiba America Info Systems - - vendor.id pci 0x1179 -&device.id pci 0x0103 -+device.name EX-IDE Type-B - - vendor.id pci 0x1179 -&device.id pci 0x0404 -+device.name DVD Decoder card - - vendor.id pci 0x1179 -&device.id pci 0x0406 -+device.name Tecra Video Capture device - - vendor.id pci 0x1179 -&device.id pci 0x0407 -+device.name DVD Decoder card (Version 2) - - vendor.id pci 0x1179 -&device.id pci 0x0601 -+device.name 601 - - vendor.id pci 0x1179 -&device.id pci 0x0603 -+device.name ToPIC95 PCI to CardBus Bridge for Notebooks - - vendor.id pci 0x1179 -&device.id pci 0x060a -+device.name ToPIC95 - - vendor.id pci 0x1179 -&device.id pci 0x060f -+device.name ToPIC97 - - vendor.id pci 0x1179 -&device.id pci 0x0617 -+device.name ToPIC100 PCI to Cardbus Bridge with ZV Support - - vendor.id pci 0x1179 -&device.id pci 0x0618 -+device.name CPU to PCI and PCI to ISA bridge - - vendor.id pci 0x1179 -&device.id pci 0x0701 -+device.name FIR Port - - vendor.id pci 0x1179 -&device.id pci 0x0804 -+device.name TC6371AF SmartMedia Controller - - vendor.id pci 0x1179 -&device.id pci 0x0805 -+device.name SD TypA Controller - - vendor.id pci 0x1179 -&device.id pci 0x0d01 -+device.name FIR Port Type-DO - - vendor.id pci 0x1179 -&device.id pci 0x0d01 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name FIR Port Type-DO - - vendor.id pci 0x117a -+vendor.name A-Trend Technology - - vendor.id pci 0x117b -+vendor.name L G Electronics, Inc. - - vendor.id pci 0x117c -+vendor.name Atto Technology - - vendor.id pci 0x117d -+vendor.name Becton & Dickinson - - vendor.id pci 0x117e -+vendor.name T/R Systems - - vendor.id pci 0x117f -+vendor.name Integrated Circuit Systems - - vendor.id pci 0x1180 -+vendor.name Ricoh Co Ltd - - vendor.id pci 0x1180 -&device.id pci 0x0465 -+device.name RL5c465 - - vendor.id pci 0x1180 -&device.id pci 0x0466 -+device.name RL5c466 - - vendor.id pci 0x1180 -&device.id pci 0x0475 -+device.name RL5c475 - - vendor.id pci 0x1180 -&device.id pci 0x0475 -&subvendor.id pci 0x144d -&subdevice.id pci 0xc006 -+subdevice.name vpr Matrix 170B4 CardBus bridge - - vendor.id pci 0x1180 -&device.id pci 0x0476 -+device.name RL5c476 II - - vendor.id pci 0x1180 -&device.id pci 0x0476 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0185 -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x1180 -&device.id pci 0x0476 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80df -+subdevice.name Vaio PCG-FX403 - - vendor.id pci 0x1180 -&device.id pci 0x0476 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80e7 -+subdevice.name VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - - vendor.id pci 0x1180 -&device.id pci 0x0476 -&subvendor.id pci 0x14ef -&subdevice.id pci 0x0220 -+subdevice.name PCD-RP-220S - - vendor.id pci 0x1180 -&device.id pci 0x0477 -+device.name RL5c477 - - vendor.id pci 0x1180 -&device.id pci 0x0478 -+device.name RL5c478 - - vendor.id pci 0x1180 -&device.id pci 0x0478 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0184 -+subdevice.name ThinkPad A30p (2653-64G) - - vendor.id pci 0x1180 -&device.id pci 0x0522 -+device.name R5C522 IEEE 1394 Controller - - vendor.id pci 0x1180 -&device.id pci 0x0522 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01cf -+subdevice.name ThinkPad A30p (2653-64G) - - vendor.id pci 0x1180 -&device.id pci 0x0551 -+device.name R5C551 IEEE 1394 Controller - - vendor.id pci 0x1180 -&device.id pci 0x0551 -&subvendor.id pci 0x144d -&subdevice.id pci 0xc006 -+subdevice.name vpr Matrix 170B4 - - vendor.id pci 0x1180 -&device.id pci 0x0552 -+device.name R5C552 IEEE 1394 Controller - - vendor.id pci 0x1180 -&device.id pci 0x0552 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0511 -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x1181 -+vendor.name Telmatics International - - vendor.id pci 0x1183 -+vendor.name Fujikura Ltd - - vendor.id pci 0x1184 -+vendor.name Forks Inc - - vendor.id pci 0x1185 -+vendor.name Dataworld International Ltd - - vendor.id pci 0x1186 -+vendor.name D-Link System Inc - - vendor.id pci 0x1186 -&device.id pci 0x0100 -+device.name DC21041 - - vendor.id pci 0x1186 -&device.id pci 0x1002 -+device.name DL10050 Sundance Ethernet - - vendor.id pci 0x1186 -&device.id pci 0x1002 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1002 -+subdevice.name DFE-550TX - - vendor.id pci 0x1186 -&device.id pci 0x1002 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1012 -+subdevice.name DFE-580TX - - vendor.id pci 0x1186 -&device.id pci 0x1025 -+device.name AirPlus Xtreme G DWL-G650 Adapter - - vendor.id pci 0x1186 -&device.id pci 0x1026 -+device.name AirXpert DWL-AG650 Wireless Cardbus Adapter - - vendor.id pci 0x1186 -&device.id pci 0x1043 -+device.name AirXpert DWL-AG650 Wireless Cardbus Adapter - - vendor.id pci 0x1186 -&device.id pci 0x1300 -+device.name RTL8139 Ethernet - - vendor.id pci 0x1186 -&device.id pci 0x1300 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1300 -+subdevice.name DFE-538TX 10/100 Ethernet Adapter - - vendor.id pci 0x1186 -&device.id pci 0x1300 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x1301 -+subdevice.name DFE-530TX+ 10/100 Ethernet Adapter - - vendor.id pci 0x1186 -&device.id pci 0x1340 -+device.name DFE-690TXD CardBus PC Card - - vendor.id pci 0x1186 -&device.id pci 0x1541 -+device.name DFE-680TXD CardBus PC Card - - vendor.id pci 0x1186 -&device.id pci 0x1561 -+device.name DRP-32TXD Cardbus PC Card - - vendor.id pci 0x1186 -&device.id pci 0x2027 -+device.name AirPlus Xtreme G DWL-G520 Adapter - - vendor.id pci 0x1186 -&device.id pci 0x3203 -+device.name AirPlus Xtreme G DWL-G520 Adapter - - vendor.id pci 0x1186 -&device.id pci 0x3300 -+device.name DWL-510 2.4GHz Wireless PCI Adapter - - vendor.id pci 0x1186 -&device.id pci 0x3a03 -+device.name AirPro DWL-A650 Wireless Cardbus Adapter(rev.B) - - vendor.id pci 0x1186 -&device.id pci 0x3a04 -+device.name AirPro DWL-AB650 Multimode Wireless Cardbus Adapter - - vendor.id pci 0x1186 -&device.id pci 0x3a05 -+device.name AirPro DWL-AB520 Multimode Wireless PCI Adapter - - vendor.id pci 0x1186 -&device.id pci 0x3a07 -+device.name AirXpert DWL-AG650 Wireless Cardbus Adapter - - vendor.id pci 0x1186 -&device.id pci 0x3a08 -+device.name AirXpert DWL-AG520 Wireless PCI Adapter - - vendor.id pci 0x1186 -&device.id pci 0x3a10 -+device.name AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B) - - vendor.id pci 0x1186 -&device.id pci 0x3a11 -+device.name AirXpert DWL-AG520 Wireless PCI Adapter(rev.B) - - vendor.id pci 0x1186 -&device.id pci 0x3a12 -+device.name AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C) - - vendor.id pci 0x1186 -&device.id pci 0x3a13 -+device.name AirPlus DWL-G520 Wireless PCI Adapter(rev.B) - - vendor.id pci 0x1186 -&device.id pci 0x3a14 -+device.name AirPremier DWL-AG530 Wireless PCI Adapter - - vendor.id pci 0x1186 -&device.id pci 0x3a63 -+device.name AirXpert DWL-AG660 Wireless Cardbus Adapter - - vendor.id pci 0x1186 -&device.id pci 0x3b05 -+device.name DWL-G650+ CardBus PC Card - - vendor.id pci 0x1186 -&device.id pci 0x4000 -+device.name DL2000-based Gigabit Ethernet - - vendor.id pci 0x1186 -&device.id pci 0x4c00 -+device.name Gigabit Ethernet Adapter - - vendor.id pci 0x1186 -&device.id pci 0x4c00 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x4c00 -+subdevice.name DGE-530T Gigabit Ethernet Adapter - - vendor.id pci 0x1186 -&device.id pci 0x8400 -+device.name D-Link DWL-650+ CardBus PC Card - - vendor.id pci 0x1187 -+vendor.name Advanced Technology Laboratories, Inc. - - vendor.id pci 0x1188 -+vendor.name Shima Seiki Manufacturing Ltd. - - vendor.id pci 0x1189 -+vendor.name Matsushita Electronics Co Ltd - - vendor.id pci 0x118a -+vendor.name Hilevel Technology - - vendor.id pci 0x118b -+vendor.name Hypertec Pty Limited - - vendor.id pci 0x118c -+vendor.name Corollary, Inc - - vendor.id pci 0x118c -&device.id pci 0x0014 -+device.name PCIB [C-bus II to PCI bus host bridge chip] - - vendor.id pci 0x118c -&device.id pci 0x1117 -+device.name Intel 8-way XEON Profusion Chipset [Cache Coherency Filter] - - vendor.id pci 0x118d -+vendor.name BitFlow Inc - - vendor.id pci 0x118d -&device.id pci 0x0001 -+device.name Raptor-PCI framegrabber - - vendor.id pci 0x118d -&device.id pci 0x0012 -+device.name Model 12 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0014 -+device.name Model 14 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0024 -+device.name Model 24 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0044 -+device.name Model 44 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0112 -+device.name Model 12 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0114 -+device.name Model 14 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0124 -+device.name Model 24 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0144 -+device.name Model 44 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0212 -+device.name Model 12 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0214 -+device.name Model 14 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0224 -+device.name Model 24 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0244 -+device.name Model 44 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0312 -+device.name Model 12 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0314 -+device.name Model 14 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0324 -+device.name Model 24 Road Runner Frame Grabber - - vendor.id pci 0x118d -&device.id pci 0x0344 -+device.name Model 44 Road Runner Frame Grabber - - vendor.id pci 0x118e -+vendor.name Hermstedt GmbH - - vendor.id pci 0x118f -+vendor.name Green Logic - - vendor.id pci 0x1190 -+vendor.name Tripace - - vendor.id pci 0x1190 -&device.id pci 0xc731 -+device.name TP-910/920/940 PCI Ultra(Wide) SCSI Adapter - - vendor.id pci 0x1191 -+vendor.name Artop Electronic Corp - - vendor.id pci 0x1191 -&device.id pci 0x0003 -+device.name SCSI Cache Host Adapter - - vendor.id pci 0x1191 -&device.id pci 0x0004 -+device.name ATP8400 - - vendor.id pci 0x1191 -&device.id pci 0x0005 -+device.name ATP850UF - - vendor.id pci 0x1191 -&device.id pci 0x0006 -+device.name ATP860 NO-BIOS - - vendor.id pci 0x1191 -&device.id pci 0x0007 -+device.name ATP860 - - vendor.id pci 0x1191 -&device.id pci 0x0008 -+device.name ATP865 NO-ROM - - vendor.id pci 0x1191 -&device.id pci 0x0009 -+device.name ATP865 - - vendor.id pci 0x1191 -&device.id pci 0x8002 -+device.name AEC6710 SCSI-2 Host Adapter - - vendor.id pci 0x1191 -&device.id pci 0x8010 -+device.name AEC6712UW SCSI - - vendor.id pci 0x1191 -&device.id pci 0x8020 -+device.name AEC6712U SCSI - - vendor.id pci 0x1191 -&device.id pci 0x8030 -+device.name AEC6712S SCSI - - vendor.id pci 0x1191 -&device.id pci 0x8040 -+device.name AEC6712D SCSI - - vendor.id pci 0x1191 -&device.id pci 0x8050 -+device.name AEC6712SUW SCSI - - vendor.id pci 0x1192 -+vendor.name Densan Company Ltd - - vendor.id pci 0x1193 -+vendor.name Zeitnet Inc. - - vendor.id pci 0x1193 -&device.id pci 0x0001 -+device.name 1221 - - vendor.id pci 0x1193 -&device.id pci 0x0002 -+device.name 1225 - - vendor.id pci 0x1194 -+vendor.name Toucan Technology - - vendor.id pci 0x1195 -+vendor.name Ratoc System Inc - - vendor.id pci 0x1196 -+vendor.name Hytec Electronics Ltd - - vendor.id pci 0x1197 -+vendor.name Gage Applied Sciences, Inc. - - vendor.id pci 0x1197 -&device.id pci 0x010c -+device.name CompuScope 82G 8bit 2GS/s Analog Input Card - - vendor.id pci 0x1198 -+vendor.name Lambda Systems Inc - - vendor.id pci 0x1199 -+vendor.name Attachmate Corporation - - vendor.id pci 0x119a -+vendor.name Mind Share, Inc. - - vendor.id pci 0x119b -+vendor.name Omega Micro Inc. - - vendor.id pci 0x119b -&device.id pci 0x1221 -+device.name 82C092G - - vendor.id pci 0x119c -+vendor.name Information Technology Inst. - - vendor.id pci 0x119d -+vendor.name Bug, Inc. Sapporo Japan - - vendor.id pci 0x119e -+vendor.name Fujitsu Microelectronics Ltd. - - vendor.id pci 0x119e -&device.id pci 0x0001 -+device.name FireStream 155 - - vendor.id pci 0x119e -&device.id pci 0x0003 -+device.name FireStream 50 - - vendor.id pci 0x119f -+vendor.name Bull HN Information Systems - - vendor.id pci 0x11a0 -+vendor.name Convex Computer Corporation - - vendor.id pci 0x11a1 -+vendor.name Hamamatsu Photonics K.K. - - vendor.id pci 0x11a2 -+vendor.name Sierra Research and Technology - - vendor.id pci 0x11a3 -+vendor.name Deuretzbacher GmbH & Co. Eng. KG - - vendor.id pci 0x11a4 -+vendor.name Barco Graphics NV - - vendor.id pci 0x11a5 -+vendor.name Microunity Systems Eng. Inc - - vendor.id pci 0x11a6 -+vendor.name Pure Data Ltd. - - vendor.id pci 0x11a7 -+vendor.name Power Computing Corp. - - vendor.id pci 0x11a8 -+vendor.name Systech Corp. - - vendor.id pci 0x11a9 -+vendor.name InnoSys Inc. - - vendor.id pci 0x11a9 -&device.id pci 0x4240 -+device.name AMCC S933Q Intelligent Serial Card - - vendor.id pci 0x11aa -+vendor.name Actel - - vendor.id pci 0x11ab -+vendor.name Marvell Technology Group Ltd. - - vendor.id pci 0x11ab -&device.id pci 0x0146 -+device.name GT-64010/64010A System Controller - - vendor.id pci 0x11ab -&device.id pci 0x138f -+device.name W8300 802.11 Adapter (rev 07) - - vendor.id pci 0x11ab -&device.id pci 0x1fa6 -+device.name Marvell W8300 802.11 Adapter - - vendor.id pci 0x11ab -&device.id pci 0x4320 -+device.name Gigabit Ethernet Controller - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0f38 -+subdevice.name Marvell 88E8001 Gigabit Ethernet Controller (ECS) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x8001 -+subdevice.name Marvell 88E8001 Gigabit Ethernet Controller (ECS) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x173c -+subdevice.name Marvell 88E8001 Gigabit Ethernet Controller (Asus) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x811a -+subdevice.name Marvell 88E8001 Gigabit Ethernet Controller (Asus) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x105b -&subdevice.id pci 0x0c19 -+subdevice.name Marvell 88E8001 Gigabit Ethernet Controller (Foxconn) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0xb452 -+subdevice.name SMC EZ Card 1000 (SMC9452TXV.2) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x11ab -&subdevice.id pci 0x0121 -+subdevice.name Marvell RDK-8001 - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x11ab -&subdevice.id pci 0x0321 -+subdevice.name Marvell RDK-8003 - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x11ab -&subdevice.id pci 0x1021 -+subdevice.name Marvell RDK-8010 - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x11ab -&subdevice.id pci 0x5021 -+subdevice.name Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x11ab -&subdevice.id pci 0x9521 -+subdevice.name Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x1458 -&subdevice.id pci 0xe000 -+subdevice.name Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x147b -&subdevice.id pci 0x1406 -+subdevice.name Marvell 88E8001 Gigabit Ethernet Controller (Abit) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x15d4 -&subdevice.id pci 0x0047 -+subdevice.name Marvell 88E8001 Gigabit Ethernet Controller (Iwill) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x1695 -&subdevice.id pci 0x9025 -+subdevice.name Marvell 88E8001 Gigabit Ethernet Controller (Epox) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x17f2 -&subdevice.id pci 0x1c03 -+subdevice.name Marvell 88E8001 Gigabit Ethernet Controller (Albatron) - - vendor.id pci 0x11ab -&device.id pci 0x4320 -&subvendor.id pci 0x270f -&subdevice.id pci 0x2803 -+subdevice.name Marvell 88E8001 Gigabit Ethernet Controller (Chaintech) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -+device.name Fast Ethernet Controller - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (Toshiba) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x11ab -&subdevice.id pci 0x3521 -+subdevice.name Marvell RDK-8035 - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x000d -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x000e -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x000f -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0011 -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0012 -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0016 -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0017 -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0018 -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0019 -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x001c -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x001e -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4350 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0020 -+subdevice.name Marvell 88E8035 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -+device.name Fast Ethernet Controller - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x107b -&subdevice.id pci 0x4009 -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (Wistron) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x10f7 -&subdevice.id pci 0x8338 -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (Panasonic) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (Toshiba) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1179 -&subdevice.id pci 0xff00 -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (Compal) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1179 -&subdevice.id pci 0xff10 -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (Inventec) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x11ab -&subdevice.id pci 0x3621 -+subdevice.name Marvell RDK-8036 - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x13d1 -&subdevice.id pci 0xac12 -+subdevice.name Abocom EFE3K - 10/100 Ethernet Expresscard - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x161f -&subdevice.id pci 0x203d -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (Arima) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x000d -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x000e -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x000f -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0011 -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0012 -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0016 -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0017 -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0018 -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0019 -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x001c -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x001e -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4351 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0020 -+subdevice.name Marvell 88E8036 Fast Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4360 -+device.name Gigabit Ethernet Controller - - vendor.id pci 0x11ab -&device.id pci 0x4360 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8134 -+subdevice.name Marvell 88E8052 Gigabit Ethernet Controller (Asus) - - vendor.id pci 0x11ab -&device.id pci 0x4360 -&subvendor.id pci 0x107b -&subdevice.id pci 0x4009 -+subdevice.name Marvell 88E8052 Gigabit Ethernet Controller (Wistron) - - vendor.id pci 0x11ab -&device.id pci 0x4360 -&subvendor.id pci 0x11ab -&subdevice.id pci 0x5221 -+subdevice.name Marvell RDK-8052 - - vendor.id pci 0x11ab -&device.id pci 0x4360 -&subvendor.id pci 0x1458 -&subdevice.id pci 0xe000 -+subdevice.name Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte) - - vendor.id pci 0x11ab -&device.id pci 0x4360 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x052c -+subdevice.name Marvell 88E8052 Gigabit Ethernet Controller (MSI) - - vendor.id pci 0x11ab -&device.id pci 0x4360 -&subvendor.id pci 0x1849 -&subdevice.id pci 0x8052 -+subdevice.name Marvell 88E8052 Gigabit Ethernet Controller (ASRock) - - vendor.id pci 0x11ab -&device.id pci 0x4360 -&subvendor.id pci 0x1940 -&subdevice.id pci 0xe000 -+subdevice.name Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte) - - vendor.id pci 0x11ab -&device.id pci 0x4360 -&subvendor.id pci 0xa0a0 -&subdevice.id pci 0x0509 -+subdevice.name Marvell 88E8052 Gigabit Ethernet Controller (Aopen) - - vendor.id pci 0x11ab -&device.id pci 0x4361 -+device.name Gigabit Ethernet Controller - - vendor.id pci 0x11ab -&device.id pci 0x4361 -&subvendor.id pci 0x107b -&subdevice.id pci 0x3015 -+subdevice.name Marvell 88E8050 Gigabit Ethernet Controller (Gateway) - - vendor.id pci 0x11ab -&device.id pci 0x4361 -&subvendor.id pci 0x11ab -&subdevice.id pci 0x5021 -+subdevice.name Marvell 88E8050 Gigabit Ethernet Controller (Intel) - - vendor.id pci 0x11ab -&device.id pci 0x4361 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3063 -+subdevice.name D925XCVLK mainboard - - vendor.id pci 0x11ab -&device.id pci 0x4362 -+device.name Gigabit Ethernet Controller - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x103c -&subdevice.id pci 0x2a0d -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Asus) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8142 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Asus) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x109f -&subdevice.id pci 0x3197 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Trigem) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x10f7 -&subdevice.id pci 0x8338 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Panasonic) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x10fd -&subdevice.id pci 0xa430 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (SOYO) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Toshiba) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1179 -&subdevice.id pci 0xff00 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Compal) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1179 -&subdevice.id pci 0xff10 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Inventec) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x11ab -&subdevice.id pci 0x5321 -+subdevice.name Marvell RDK-8053 - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1297 -&subdevice.id pci 0xc240 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1297 -&subdevice.id pci 0xc241 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1297 -&subdevice.id pci 0xc242 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1297 -&subdevice.id pci 0xc243 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1297 -&subdevice.id pci 0xc244 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x13d1 -&subdevice.id pci 0xac11 -+subdevice.name Abocom EGE5K - Giga Ethernet Expresscard - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1458 -&subdevice.id pci 0xe000 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x058c -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (MSI) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x14c0 -&subdevice.id pci 0x0012 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Compal) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1558 -&subdevice.id pci 0x04a0 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Clevo) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x15bd -&subdevice.id pci 0x1003 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (DFI) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x161f -&subdevice.id pci 0x203c -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Arima) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x161f -&subdevice.id pci 0x203d -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Arima) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1695 -&subdevice.id pci 0x9029 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Epox) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x17f2 -&subdevice.id pci 0x2c08 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Albatron) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x17ff -&subdevice.id pci 0x0585 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Quanta) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1849 -&subdevice.id pci 0x8053 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (ASRock) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x000b -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x000c -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0010 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0013 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0014 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0015 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x001a -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x001b -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x001d -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x001f -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0021 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1854 -&subdevice.id pci 0x0022 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (LGE) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x1940 -&subdevice.id pci 0xe000 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0x270f -&subdevice.id pci 0x2801 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Chaintech) - - vendor.id pci 0x11ab -&device.id pci 0x4362 -&subvendor.id pci 0xa0a0 -&subdevice.id pci 0x0506 -+subdevice.name Marvell 88E8053 Gigabit Ethernet Controller (Aopen) - - vendor.id pci 0x11ab -&device.id pci 0x4611 -+device.name GT-64115 System Controller - - vendor.id pci 0x11ab -&device.id pci 0x4620 -+device.name GT-64120/64120A/64121A System Controller - - vendor.id pci 0x11ab -&device.id pci 0x4801 -+device.name GT-48001 - - vendor.id pci 0x11ab -&device.id pci 0x5040 -+device.name MV88SX5040 4-port SATA I PCI-X Controller - - vendor.id pci 0x11ab -&device.id pci 0x5041 -+device.name MV88SX5041 4-port SATA I PCI-X Controller - - vendor.id pci 0x11ab -&device.id pci 0x5080 -+device.name MV88SX5080 8-port SATA I PCI-X Controller - - vendor.id pci 0x11ab -&device.id pci 0x5081 -+device.name MV88SX5081 8-port SATA I PCI-X Controller - - vendor.id pci 0x11ab -&device.id pci 0x6041 -+device.name MV88SX6041 4-port SATA II PCI-X Controller - - vendor.id pci 0x11ab -&device.id pci 0x6081 -+device.name MV88SX6081 8-port SATA II PCI-X Controller - - vendor.id pci 0x11ab -&device.id pci 0x6460 -+device.name MV64360/64361/64362 System Controller - - vendor.id pci 0x11ab -&device.id pci 0xf003 -+device.name GT-64010 Primary Image Piranha Image Generator - - vendor.id pci 0x11ac -+vendor.name Canon Information Systems Research Aust. - - vendor.id pci 0x11ad -+vendor.name Lite-On Communications Inc - - vendor.id pci 0x11ad -&device.id pci 0x0002 -+device.name LNE100TX - - vendor.id pci 0x11ad -&device.id pci 0x0002 -&subvendor.id pci 0x11ad -&subdevice.id pci 0x0002 -+subdevice.name LNE100TX - - vendor.id pci 0x11ad -&device.id pci 0x0002 -&subvendor.id pci 0x11ad -&subdevice.id pci 0x0003 -+subdevice.name LNE100TX - - vendor.id pci 0x11ad -&device.id pci 0x0002 -&subvendor.id pci 0x11ad -&subdevice.id pci 0xf003 -+subdevice.name LNE100TX - - vendor.id pci 0x11ad -&device.id pci 0x0002 -&subvendor.id pci 0x11ad -&subdevice.id pci 0xffff -+subdevice.name LNE100TX - - vendor.id pci 0x11ad -&device.id pci 0x0002 -&subvendor.id pci 0x1385 -&subdevice.id pci 0xf004 -+subdevice.name FA310TX - - vendor.id pci 0x11ad -&device.id pci 0xc115 -+device.name LNE100TX [Linksys EtherFast 10/100] - - vendor.id pci 0x11ad -&device.id pci 0xc115 -&subvendor.id pci 0x11ad -&subdevice.id pci 0xc001 -+subdevice.name LNE100TX [ver 2.0] - - vendor.id pci 0x11ae -+vendor.name Aztech System Ltd - - vendor.id pci 0x11af -+vendor.name Avid Technology Inc. - - vendor.id pci 0x11af -&device.id pci 0x0001 -+device.name [Cinema] - - vendor.id pci 0x11b0 -+vendor.name V3 Semiconductor Inc. - - vendor.id pci 0x11b0 -&device.id pci 0x0002 -+device.name V300PSC - - vendor.id pci 0x11b0 -&device.id pci 0x0292 -+device.name V292PBC [Am29030/40 Bridge] - - vendor.id pci 0x11b0 -&device.id pci 0x0960 -+device.name V96xPBC - - vendor.id pci 0x11b0 -&device.id pci 0xc960 -+device.name V96DPC - - vendor.id pci 0x11b1 -+vendor.name Apricot Computers - - vendor.id pci 0x11b2 -+vendor.name Eastman Kodak - - vendor.id pci 0x11b3 -+vendor.name Barr Systems Inc. - - vendor.id pci 0x11b4 -+vendor.name Leitch Technology International - - vendor.id pci 0x11b5 -+vendor.name Radstone Technology Plc - - vendor.id pci 0x11b6 -+vendor.name United Video Corp - - vendor.id pci 0x11b7 -+vendor.name Motorola - - vendor.id pci 0x11b8 -+vendor.name XPoint Technologies, Inc - - vendor.id pci 0x11b8 -&device.id pci 0x0001 -+device.name Quad PeerMaster - - vendor.id pci 0x11b9 -+vendor.name Pathlight Technology Inc. - - vendor.id pci 0x11b9 -&device.id pci 0xc0ed -+device.name SSA Controller - - vendor.id pci 0x11ba -+vendor.name Videotron Corp - - vendor.id pci 0x11bb -+vendor.name Pyramid Technology - - vendor.id pci 0x11bc -+vendor.name Network Peripherals Inc - - vendor.id pci 0x11bc -&device.id pci 0x0001 -+device.name NP-PCI - - vendor.id pci 0x11bd -+vendor.name Pinnacle Systems Inc. - - vendor.id pci 0x11be -+vendor.name International Microcircuits Inc - - vendor.id pci 0x11bf -+vendor.name Astrodesign, Inc. - - vendor.id pci 0x11c0 -+vendor.name Hewlett Packard - - vendor.id pci 0x11c1 -+vendor.name Agere Systems (former Lucent Microelectronics) - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -+device.name 56k WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8015 -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8047 -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x804f -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x102c -+subdevice.name LB LT Modem V.90 56k - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x104a -+subdevice.name BIBLO LT Modem 56k - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x105f -+subdevice.name LB2 LT Modem V.90 56k - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Internal V.90 Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x11c1 -&subdevice.id pci 0x0440 -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4101 -+subdevice.name MDP7800-U Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4102 -+subdevice.name MDP7800SP-U Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0040 -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0440 -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0441 -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0450 -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0xf100 -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0xf101 -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x144d -&subdevice.id pci 0x2101 -+subdevice.name LT56PV Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0440 -&subvendor.id pci 0x149f -&subdevice.id pci 0x0440 -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -+device.name 56k WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x804d -+subdevice.name LT WinModem 56k Data+Fax - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8065 -+subdevice.name LT WinModem 56k Data+Fax - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0440 -+subdevice.name Supra 56i - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Internal V.90 Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x11c1 -&subdevice.id pci 0x0440 -+subdevice.name LT WinModem 56k Data+Fax - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x11c1 -&subdevice.id pci 0x0441 -+subdevice.name LT WinModem 56k Data+Fax - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4100 -+subdevice.name MDP7800-U Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0040 -+subdevice.name LT WinModem 56k Data+Fax - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0100 -+subdevice.name LT WinModem 56k Data+Fax - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0410 -+subdevice.name LT WinModem 56k Data+Fax - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0420 -+subdevice.name TelePath Internet 56k WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0440 -+subdevice.name LT WinModem 56k Data+Fax - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0443 -+subdevice.name LT WinModem 56k Data+Fax - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0xf102 -+subdevice.name LT WinModem 56k Data+Fax - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x1416 -&subdevice.id pci 0x9804 -+subdevice.name CommWave 56k Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x141d -&subdevice.id pci 0x0440 -+subdevice.name LT WinModem 56k Data+Fax - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x144f -&subdevice.id pci 0x0441 -+subdevice.name Lucent 56k V.90 DF Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x144f -&subdevice.id pci 0x0449 -+subdevice.name Lucent 56k V.90 DF Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x144f -&subdevice.id pci 0x110d -+subdevice.name Lucent Win Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x1468 -&subdevice.id pci 0x0441 -+subdevice.name Presario 56k V.90 DF Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0441 -&subvendor.id pci 0x1668 -&subdevice.id pci 0x0440 -+subdevice.name Lucent Win Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0442 -+device.name 56k WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0442 -&subvendor.id pci 0x11c1 -&subdevice.id pci 0x0440 -+subdevice.name LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0442 -&subvendor.id pci 0x11c1 -&subdevice.id pci 0x0442 -+subdevice.name LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0442 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0412 -+subdevice.name LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0442 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0442 -+subdevice.name LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0442 -&subvendor.id pci 0x13fc -&subdevice.id pci 0x2471 -+subdevice.name LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0442 -&subvendor.id pci 0x144d -&subdevice.id pci 0x2104 -+subdevice.name LT56PT Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0442 -&subvendor.id pci 0x144f -&subdevice.id pci 0x1104 -+subdevice.name LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0442 -&subvendor.id pci 0x149f -&subdevice.id pci 0x0440 -+subdevice.name LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0442 -&subvendor.id pci 0x1668 -&subdevice.id pci 0x0440 -+subdevice.name LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0443 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0444 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0445 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0445 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2203 -+subdevice.name PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card) - - vendor.id pci 0x11c1 -&device.id pci 0x0445 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2204 -+subdevice.name PRO/100+ MiniPCI on Armada E500 - - vendor.id pci 0x11c1 -&device.id pci 0x0446 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0447 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0448 -+device.name WinModem 56k - - vendor.id pci 0x11c1 -&device.id pci 0x0448 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0131 -+subdevice.name Lucent Win Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0448 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8066 -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0448 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0030 -+subdevice.name 56k Voice Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0448 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0040 -+subdevice.name LT WinModem 56k Data+Fax+Voice+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x0448 -&subvendor.id pci 0x1668 -&subdevice.id pci 0x2400 -+subdevice.name LT WinModem 56k (MiniPCI Ethernet+Modem) - - vendor.id pci 0x11c1 -&device.id pci 0x0449 -+device.name WinModem 56k - - vendor.id pci 0x11c1 -&device.id pci 0x0449 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb14d -+subdevice.name 56k V.90 Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0449 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0020 -+subdevice.name LT WinModem 56k Data+Fax - - vendor.id pci 0x11c1 -&device.id pci 0x0449 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0041 -+subdevice.name TelePath Internet 56k WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0449 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x0440 -+subdevice.name Lucent Win Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0449 -&subvendor.id pci 0x144f -&subdevice.id pci 0x0449 -+subdevice.name Lucent 56k V.90 DFi Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0449 -&subvendor.id pci 0x1468 -&subdevice.id pci 0x0410 -+subdevice.name IBM ThinkPad T23 (2647-4MG) - - vendor.id pci 0x11c1 -&device.id pci 0x0449 -&subvendor.id pci 0x1468 -&subdevice.id pci 0x0440 -+subdevice.name Lucent Win Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0449 -&subvendor.id pci 0x1468 -&subdevice.id pci 0x0449 -+subdevice.name Presario 56k V.90 DFi Modem - - vendor.id pci 0x11c1 -&device.id pci 0x044a -+device.name F-1156IV WinModem (V90, 56KFlex) - - vendor.id pci 0x11c1 -&device.id pci 0x044a -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1072 -+subdevice.name LB Global LT Modem - - vendor.id pci 0x11c1 -&device.id pci 0x044a -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0012 -+subdevice.name LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x044a -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0042 -+subdevice.name LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x044a -&subvendor.id pci 0x144f -&subdevice.id pci 0x1005 -+subdevice.name LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - - vendor.id pci 0x11c1 -&device.id pci 0x044b -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x044c -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x044d -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x044e -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x044f -+device.name V90 WildWire Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0450 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0450 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x80a8 -+subdevice.name Versa Note Vxi - - vendor.id pci 0x11c1 -&device.id pci 0x0450 -&subvendor.id pci 0x144f -&subdevice.id pci 0x4005 -+subdevice.name Magnia SG20 - - vendor.id pci 0x11c1 -&device.id pci 0x0451 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0452 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0453 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0454 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0455 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0456 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0457 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0458 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0459 -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x045a -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x045c -+device.name LT WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x0461 -+device.name V90 WildWire Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0462 -+device.name V90 WildWire Modem - - vendor.id pci 0x11c1 -&device.id pci 0x0480 -+device.name Venus Modem (V90, 56KFlex) - - vendor.id pci 0x11c1 -&device.id pci 0x048c -+device.name V.92 56K WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x048f -+device.name V.92 56k WinModem - - vendor.id pci 0x11c1 -&device.id pci 0x5801 -+device.name USB - - vendor.id pci 0x11c1 -&device.id pci 0x5802 -+device.name USS-312 USB Controller - - vendor.id pci 0x11c1 -&device.id pci 0x5803 -+device.name USS-344S USB Controller - - vendor.id pci 0x11c1 -&device.id pci 0x5811 -+device.name FW323 - - vendor.id pci 0x11c1 -&device.id pci 0x5811 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x524c -+subdevice.name D865PERL mainboard - - vendor.id pci 0x11c1 -&device.id pci 0x5811 -&subvendor.id pci 0xdead -&subdevice.id pci 0x0800 -+subdevice.name FireWire Host Bus Adapter - - vendor.id pci 0x11c1 -&device.id pci 0xab10 -+device.name WL60010 Wireless LAN MAC - - vendor.id pci 0x11c1 -&device.id pci 0xab11 -+device.name WL60040 Multimode Wireles LAN MAC - - vendor.id pci 0x11c1 -&device.id pci 0xab11 -&subvendor.id pci 0x11c1 -&subdevice.id pci 0xab12 -+subdevice.name WaveLAN 11abg Cardbus card (Model 1102) - - vendor.id pci 0x11c1 -&device.id pci 0xab11 -&subvendor.id pci 0x11c1 -&subdevice.id pci 0xab13 -+subdevice.name WaveLAN 11abg MiniPCI card (Model 0512) - - vendor.id pci 0x11c1 -&device.id pci 0xab11 -&subvendor.id pci 0x11c1 -&subdevice.id pci 0xab15 -+subdevice.name WaveLAN 11abg Cardbus card (Model 1106) - - vendor.id pci 0x11c1 -&device.id pci 0xab11 -&subvendor.id pci 0x11c1 -&subdevice.id pci 0xab16 -+subdevice.name WaveLAN 11abg MiniPCI card (Model 0516) - - vendor.id pci 0x11c1 -&device.id pci 0xab20 -+device.name ORiNOCO PCI Adapter - - vendor.id pci 0x11c1 -&device.id pci 0xab21 -+device.name Agere Wireless PCI Adapter - - vendor.id pci 0x11c1 -&device.id pci 0xab30 -+device.name Hermes2 Mini-PCI WaveLAN a/b/g - - vendor.id pci 0x11c1 -&device.id pci 0xab30 -&subvendor.id pci 0x14cd -&subdevice.id pci 0x2012 -+subdevice.name Hermes2 Mini-PCI WaveLAN a/b/g - - vendor.id pci 0x11c2 -+vendor.name Sand Microelectronics - - vendor.id pci 0x11c3 -+vendor.name NEC Corporation - - vendor.id pci 0x11c4 -+vendor.name Document Technologies, Inc - - vendor.id pci 0x11c5 -+vendor.name Shiva Corporation - - vendor.id pci 0x11c6 -+vendor.name Dainippon Screen Mfg. Co. Ltd - - vendor.id pci 0x11c7 -+vendor.name D.C.M. Data Systems - - vendor.id pci 0x11c8 -+vendor.name Dolphin Interconnect Solutions AS - - vendor.id pci 0x11c8 -&device.id pci 0x0658 -+device.name PSB32 SCI-Adapter D31x - - vendor.id pci 0x11c8 -&device.id pci 0xd665 -+device.name PSB64 SCI-Adapter D32x - - vendor.id pci 0x11c8 -&device.id pci 0xd667 -+device.name PSB66 SCI-Adapter D33x - - vendor.id pci 0x11c9 -+vendor.name Magma - - vendor.id pci 0x11c9 -&device.id pci 0x0010 -+device.name 16-line serial port w/- DMA - - vendor.id pci 0x11c9 -&device.id pci 0x0011 -+device.name 4-line serial port w/- DMA - - vendor.id pci 0x11ca -+vendor.name LSI Systems, Inc - - vendor.id pci 0x11cb -+vendor.name Specialix Research Ltd. - - vendor.id pci 0x11cb -&device.id pci 0x2000 -+device.name PCI_9050 - - vendor.id pci 0x11cb -&device.id pci 0x2000 -&subvendor.id pci 0x11cb -&subdevice.id pci 0x0200 -+subdevice.name SX - - vendor.id pci 0x11cb -&device.id pci 0x2000 -&subvendor.id pci 0x11cb -&subdevice.id pci 0xb008 -+subdevice.name I/O8+ - - vendor.id pci 0x11cb -&device.id pci 0x4000 -+device.name SUPI_1 - - vendor.id pci 0x11cb -&device.id pci 0x8000 -+device.name T225 - - vendor.id pci 0x11cc -+vendor.name Michels & Kleberhoff Computer GmbH - - vendor.id pci 0x11cd -+vendor.name HAL Computer Systems, Inc. - - vendor.id pci 0x11ce -+vendor.name Netaccess - - vendor.id pci 0x11cf -+vendor.name Pioneer Electronic Corporation - - vendor.id pci 0x11d0 -+vendor.name Lockheed Martin Federal Systems-Manassas - - vendor.id pci 0x11d1 -+vendor.name Auravision - - vendor.id pci 0x11d1 -&device.id pci 0x01f7 -+device.name VxP524 - - vendor.id pci 0x11d2 -+vendor.name Intercom Inc. - - vendor.id pci 0x11d3 -+vendor.name Trancell Systems Inc - - vendor.id pci 0x11d4 -+vendor.name Analog Devices - - vendor.id pci 0x11d4 -&device.id pci 0x1535 -+device.name Blackfin BF535 processor - - vendor.id pci 0x11d4 -&device.id pci 0x1805 -+device.name SM56 PCI modem - - vendor.id pci 0x11d4 -&device.id pci 0x1889 -+device.name AD1889 sound chip - - vendor.id pci 0x11d5 -+vendor.name Ikon Corporation - - vendor.id pci 0x11d5 -&device.id pci 0x0115 -+device.name 10115 - - vendor.id pci 0x11d5 -&device.id pci 0x0117 -+device.name 10117 - - vendor.id pci 0x11d6 -+vendor.name Tekelec Telecom - - vendor.id pci 0x11d7 -+vendor.name Trenton Technology, Inc. - - vendor.id pci 0x11d8 -+vendor.name Image Technologies Development - - vendor.id pci 0x11d9 -+vendor.name TEC Corporation - - vendor.id pci 0x11da -+vendor.name Novell - - vendor.id pci 0x11db -+vendor.name Sega Enterprises Ltd - - vendor.id pci 0x11dc -+vendor.name Questra Corporation - - vendor.id pci 0x11dd -+vendor.name Crosfield Electronics Limited - - vendor.id pci 0x11de -+vendor.name Zoran Corporation - - vendor.id pci 0x11de -&device.id pci 0x6057 -+device.name ZR36057PQC Video cutting chipset - - vendor.id pci 0x11de -&device.id pci 0x6057 -&subvendor.id pci 0x1031 -&subdevice.id pci 0x7efe -+subdevice.name DC10 Plus - - vendor.id pci 0x11de -&device.id pci 0x6057 -&subvendor.id pci 0x1031 -&subdevice.id pci 0xfc00 -+subdevice.name MiroVIDEO DC50, Motion JPEG Capture/CODEC Board - - vendor.id pci 0x11de -&device.id pci 0x6057 -&subvendor.id pci 0x13ca -&subdevice.id pci 0x4231 -+subdevice.name JPEG/TV Card - - vendor.id pci 0x11de -&device.id pci 0x6120 -+device.name ZR36120 - - vendor.id pci 0x11de -&device.id pci 0x6120 -&subvendor.id pci 0x1328 -&subdevice.id pci 0xf001 -+subdevice.name Cinemaster C DVD Decoder - - vendor.id pci 0x11df -+vendor.name New Wave PDG - - vendor.id pci 0x11e0 -+vendor.name Cray Communications A/S - - vendor.id pci 0x11e1 -+vendor.name GEC Plessey Semi Inc. - - vendor.id pci 0x11e2 -+vendor.name Samsung Information Systems America - - vendor.id pci 0x11e3 -+vendor.name Quicklogic Corporation - - vendor.id pci 0x11e3 -&device.id pci 0x5030 -+device.name PC Watchdog - - vendor.id pci 0x11e4 -+vendor.name Second Wave Inc - - vendor.id pci 0x11e5 -+vendor.name IIX Consulting - - vendor.id pci 0x11e6 -+vendor.name Mitsui-Zosen System Research - - vendor.id pci 0x11e7 -+vendor.name Toshiba America, Elec. Company - - vendor.id pci 0x11e8 -+vendor.name Digital Processing Systems Inc. - - vendor.id pci 0x11e9 -+vendor.name Highwater Designs Ltd. - - vendor.id pci 0x11ea -+vendor.name Elsag Bailey - - vendor.id pci 0x11eb -+vendor.name Formation Inc. - - vendor.id pci 0x11ec -+vendor.name Coreco Inc - - vendor.id pci 0x11ed -+vendor.name Mediamatics - - vendor.id pci 0x11ee -+vendor.name Dome Imaging Systems Inc - - vendor.id pci 0x11ef -+vendor.name Nicolet Technologies B.V. - - vendor.id pci 0x11f0 -+vendor.name Compu-Shack - - vendor.id pci 0x11f0 -&device.id pci 0x4231 -+device.name FDDI - - vendor.id pci 0x11f0 -&device.id pci 0x4232 -+device.name FASTline UTP Quattro - - vendor.id pci 0x11f0 -&device.id pci 0x4233 -+device.name FASTline FO - - vendor.id pci 0x11f0 -&device.id pci 0x4234 -+device.name FASTline UTP - - vendor.id pci 0x11f0 -&device.id pci 0x4235 -+device.name FASTline-II UTP - - vendor.id pci 0x11f0 -&device.id pci 0x4236 -+device.name FASTline-II FO - - vendor.id pci 0x11f0 -&device.id pci 0x4731 -+device.name GIGAline - - vendor.id pci 0x11f1 -+vendor.name Symbios Logic Inc - - vendor.id pci 0x11f2 -+vendor.name Picture Tel Japan K.K. - - vendor.id pci 0x11f3 -+vendor.name Keithley Metrabyte - - vendor.id pci 0x11f4 -+vendor.name Kinetic Systems Corporation - - vendor.id pci 0x11f4 -&device.id pci 0x2915 -+device.name CAMAC controller - - vendor.id pci 0x11f5 -+vendor.name Computing Devices International - - vendor.id pci 0x11f6 -+vendor.name Compex - - vendor.id pci 0x11f6 -&device.id pci 0x0112 -+device.name ENet100VG4 - - vendor.id pci 0x11f6 -&device.id pci 0x0113 -+device.name FreedomLine 100 - - vendor.id pci 0x11f6 -&device.id pci 0x1401 -+device.name ReadyLink 2000 - - vendor.id pci 0x11f6 -&device.id pci 0x2011 -+device.name RL100-ATX 10/100 - - vendor.id pci 0x11f6 -&device.id pci 0x2011 -&subvendor.id pci 0x11f6 -&subdevice.id pci 0x2011 -+subdevice.name RL100-ATX - - vendor.id pci 0x11f6 -&device.id pci 0x2201 -+device.name ReadyLink 100TX (Winbond W89C840) - - vendor.id pci 0x11f6 -&device.id pci 0x2201 -&subvendor.id pci 0x11f6 -&subdevice.id pci 0x2011 -+subdevice.name ReadyLink 100TX - - vendor.id pci 0x11f6 -&device.id pci 0x9881 -+device.name RL100TX Fast Ethernet - - vendor.id pci 0x11f7 -+vendor.name Scientific Atlanta - - vendor.id pci 0x11f8 -+vendor.name PMC-Sierra Inc. - - vendor.id pci 0x11f8 -&device.id pci 0x7375 -+device.name PM7375 [LASAR-155 ATM SAR] - - vendor.id pci 0x11f9 -+vendor.name I-Cube Inc - - vendor.id pci 0x11fa -+vendor.name Kasan Electronics Company, Ltd. - - vendor.id pci 0x11fb -+vendor.name Datel Inc - - vendor.id pci 0x11fc -+vendor.name Silicon Magic - - vendor.id pci 0x11fd -+vendor.name High Street Consultants - - vendor.id pci 0x11fe -+vendor.name Comtrol Corporation - - vendor.id pci 0x11fe -&device.id pci 0x0001 -+device.name RocketPort 32 port w/external I/F - - vendor.id pci 0x11fe -&device.id pci 0x0002 -+device.name RocketPort 8 port w/external I/F - - vendor.id pci 0x11fe -&device.id pci 0x0003 -+device.name RocketPort 16 port w/external I/F - - vendor.id pci 0x11fe -&device.id pci 0x0004 -+device.name RocketPort 4 port w/quad cable - - vendor.id pci 0x11fe -&device.id pci 0x0005 -+device.name RocketPort 8 port w/octa cable - - vendor.id pci 0x11fe -&device.id pci 0x0006 -+device.name RocketPort 8 port w/RJ11 connectors - - vendor.id pci 0x11fe -&device.id pci 0x0007 -+device.name RocketPort 4 port w/RJ11 connectors - - vendor.id pci 0x11fe -&device.id pci 0x0008 -+device.name RocketPort 8 port w/ DB78 SNI (Siemens) connector - - vendor.id pci 0x11fe -&device.id pci 0x0009 -+device.name RocketPort 16 port w/ DB78 SNI (Siemens) connector - - vendor.id pci 0x11fe -&device.id pci 0x000a -+device.name RocketPort Plus 4 port - - vendor.id pci 0x11fe -&device.id pci 0x000b -+device.name RocketPort Plus 8 port - - vendor.id pci 0x11fe -&device.id pci 0x000c -+device.name RocketModem 6 port - - vendor.id pci 0x11fe -&device.id pci 0x000d -+device.name RocketModem 4-port - - vendor.id pci 0x11fe -&device.id pci 0x000e -+device.name RocketPort Plus 2 port RS232 - - vendor.id pci 0x11fe -&device.id pci 0x000f -+device.name RocketPort Plus 2 port RS422 - - vendor.id pci 0x11fe -&device.id pci 0x0801 -+device.name RocketPort UPCI 32 port w/external I/F - - vendor.id pci 0x11fe -&device.id pci 0x0802 -+device.name RocketPort UPCI 8 port w/external I/F - - vendor.id pci 0x11fe -&device.id pci 0x0803 -+device.name RocketPort UPCI 16 port w/external I/F - - vendor.id pci 0x11fe -&device.id pci 0x0805 -+device.name RocketPort UPCI 8 port w/octa cable - - vendor.id pci 0x11fe -&device.id pci 0x080c -+device.name RocketModem III 8 port - - vendor.id pci 0x11fe -&device.id pci 0x080d -+device.name RocketModem III 4 port - - vendor.id pci 0x11fe -&device.id pci 0x0903 -+device.name RocketPort Compact PCI 16 port w/external I/F - - vendor.id pci 0x11fe -&device.id pci 0x8015 -+device.name RocketPort 4-port UART 16954 - - vendor.id pci 0x11ff -+vendor.name Scion Corporation - - vendor.id pci 0x11ff -&device.id pci 0x0003 -+device.name AG-5 - - vendor.id pci 0x1200 -+vendor.name CSS Corporation - - vendor.id pci 0x1201 -+vendor.name Vista Controls Corp - - vendor.id pci 0x1202 -+vendor.name Network General Corp. - - vendor.id pci 0x1202 -&device.id pci 0x4300 -+device.name Gigabit Ethernet Adapter - - vendor.id pci 0x1202 -&device.id pci 0x4300 -&subvendor.id pci 0x1202 -&subdevice.id pci 0x9841 -+subdevice.name SK-9841 LX - - vendor.id pci 0x1202 -&device.id pci 0x4300 -&subvendor.id pci 0x1202 -&subdevice.id pci 0x9842 -+subdevice.name SK-9841 LX dual link - - vendor.id pci 0x1202 -&device.id pci 0x4300 -&subvendor.id pci 0x1202 -&subdevice.id pci 0x9843 -+subdevice.name SK-9843 SX - - vendor.id pci 0x1202 -&device.id pci 0x4300 -&subvendor.id pci 0x1202 -&subdevice.id pci 0x9844 -+subdevice.name SK-9843 SX dual link - - vendor.id pci 0x1203 -+vendor.name Bayer Corporation, Agfa Division - - vendor.id pci 0x1204 -+vendor.name Lattice Semiconductor Corporation - - vendor.id pci 0x1205 -+vendor.name Array Corporation - - vendor.id pci 0x1206 -+vendor.name Amdahl Corporation - - vendor.id pci 0x1208 -+vendor.name Parsytec GmbH - - vendor.id pci 0x1208 -&device.id pci 0x4853 -+device.name HS-Link Device - - vendor.id pci 0x1209 -+vendor.name SCI Systems Inc - - vendor.id pci 0x120a -+vendor.name Synaptel - - vendor.id pci 0x120b -+vendor.name Adaptive Solutions - - vendor.id pci 0x120c -+vendor.name Technical Corp. - - vendor.id pci 0x120d -+vendor.name Compression Labs, Inc. - - vendor.id pci 0x120e -+vendor.name Cyclades Corporation - - vendor.id pci 0x120e -&device.id pci 0x0100 -+device.name Cyclom-Y below first megabyte - - vendor.id pci 0x120e -&device.id pci 0x0101 -+device.name Cyclom-Y above first megabyte - - vendor.id pci 0x120e -&device.id pci 0x0102 -+device.name Cyclom-4Y below first megabyte - - vendor.id pci 0x120e -&device.id pci 0x0103 -+device.name Cyclom-4Y above first megabyte - - vendor.id pci 0x120e -&device.id pci 0x0104 -+device.name Cyclom-8Y below first megabyte - - vendor.id pci 0x120e -&device.id pci 0x0105 -+device.name Cyclom-8Y above first megabyte - - vendor.id pci 0x120e -&device.id pci 0x0200 -+device.name Cyclades-Z below first megabyte - - vendor.id pci 0x120e -&device.id pci 0x0201 -+device.name Cyclades-Z above first megabyte - - vendor.id pci 0x120e -&device.id pci 0x0300 -+device.name PC300/RSV or /X21 (2 ports) - - vendor.id pci 0x120e -&device.id pci 0x0301 -+device.name PC300/RSV or /X21 (1 port) - - vendor.id pci 0x120e -&device.id pci 0x0310 -+device.name PC300/TE (2 ports) - - vendor.id pci 0x120e -&device.id pci 0x0311 -+device.name PC300/TE (1 port) - - vendor.id pci 0x120e -&device.id pci 0x0320 -+device.name PC300/TE-M (2 ports) - - vendor.id pci 0x120e -&device.id pci 0x0321 -+device.name PC300/TE-M (1 port) - - vendor.id pci 0x120e -&device.id pci 0x0400 -+device.name PC400 - - vendor.id pci 0x120f -+vendor.name Essential Communications - - vendor.id pci 0x120f -&device.id pci 0x0001 -+device.name Roadrunner serial HIPPI - - vendor.id pci 0x1210 -+vendor.name Hyperparallel Technologies - - vendor.id pci 0x1211 -+vendor.name Braintech Inc - - vendor.id pci 0x1212 -+vendor.name Kingston Technology Corp. - - vendor.id pci 0x1213 -+vendor.name Applied Intelligent Systems, Inc. - - vendor.id pci 0x1214 -+vendor.name Performance Technologies, Inc. - - vendor.id pci 0x1215 -+vendor.name Interware Co., Ltd - - vendor.id pci 0x1216 -+vendor.name Purup Prepress A/S - - vendor.id pci 0x1217 -+vendor.name O2 Micro, Inc. - - vendor.id pci 0x1217 -&device.id pci 0x6729 -+device.name OZ6729 - - vendor.id pci 0x1217 -&device.id pci 0x673a -+device.name OZ6730 - - vendor.id pci 0x1217 -&device.id pci 0x6832 -+device.name OZ6832/6833 Cardbus Controller - - vendor.id pci 0x1217 -&device.id pci 0x6836 -+device.name OZ6836/6860 Cardbus Controller - - vendor.id pci 0x1217 -&device.id pci 0x6872 -+device.name OZ6812 Cardbus Controller - - vendor.id pci 0x1217 -&device.id pci 0x6925 -+device.name OZ6922 Cardbus Controller - - vendor.id pci 0x1217 -&device.id pci 0x6933 -+device.name OZ6933 Cardbus Controller - - vendor.id pci 0x1217 -&device.id pci 0x6933 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x1016 -+subdevice.name Travelmate 612 TX - - vendor.id pci 0x1217 -&device.id pci 0x6972 -+device.name OZ6912 Cardbus Controller - - vendor.id pci 0x1217 -&device.id pci 0x6972 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x020c -+subdevice.name ThinkPad R30 - - vendor.id pci 0x1217 -&device.id pci 0x6972 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Magnia Z310 - - vendor.id pci 0x1217 -&device.id pci 0x7110 -+device.name OZ711Mx MultiMediaBay Accelerator - - vendor.id pci 0x1217 -&device.id pci 0x7110 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x1217 -&device.id pci 0x7112 -+device.name OZ711EC1/M1 SmartCardBus MultiMediaBay Controller - - vendor.id pci 0x1217 -&device.id pci 0x7113 -+device.name OZ711EC1 SmartCardBus Controller - - vendor.id pci 0x1217 -&device.id pci 0x7114 -+device.name OZ711M1 SmartCardBus MultiMediaBay Controller - - vendor.id pci 0x1217 -&device.id pci 0x71e2 -+device.name OZ711E2 SmartCardBus Controller - - vendor.id pci 0x1217 -&device.id pci 0x7212 -+device.name OZ711M2 SmartCardBus MultiMediaBay Controller - - vendor.id pci 0x1217 -&device.id pci 0x7213 -+device.name OZ6933E CardBus Controller - - vendor.id pci 0x1217 -&device.id pci 0x7223 -+device.name OZ711M3 SmartCardBus MultiMediaBay Controller - - vendor.id pci 0x1217 -&device.id pci 0x7223 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x1218 -+vendor.name Hybricon Corp. - - vendor.id pci 0x1219 -+vendor.name First Virtual Corporation - - vendor.id pci 0x121a -+vendor.name 3Dfx Interactive, Inc. - - vendor.id pci 0x121a -&device.id pci 0x0001 -+device.name Voodoo - - vendor.id pci 0x121a -&device.id pci 0x0002 -+device.name Voodoo 2 - - vendor.id pci 0x121a -&device.id pci 0x0003 -+device.name Voodoo Banshee - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0003 -+subdevice.name Monster Fusion - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4000 -+subdevice.name Monster Fusion - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4002 -+subdevice.name Monster Fusion - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4801 -+subdevice.name Monster Fusion AGP - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4803 -+subdevice.name Monster Fusion AGP - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x8030 -+subdevice.name Monster Fusion - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x8035 -+subdevice.name Monster Fusion AGP - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x10b0 -&subdevice.id pci 0x0001 -+subdevice.name Dragon 4000 - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x1018 -+subdevice.name 3D Blaster Banshee VE - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0001 -+subdevice.name Voodoo Banshee AGP - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0003 -+subdevice.name Voodoo Banshee AGP SGRAM - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0004 -+subdevice.name Voodoo Banshee - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x139c -&subdevice.id pci 0x0016 -+subdevice.name Raven - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x139c -&subdevice.id pci 0x0017 -+subdevice.name Raven - - vendor.id pci 0x121a -&device.id pci 0x0003 -&subvendor.id pci 0x14af -&subdevice.id pci 0x0002 -+subdevice.name Maxi Gamer Phoenix - - vendor.id pci 0x121a -&device.id pci 0x0004 -+device.name Voodoo Banshee [Velocity 100] - - vendor.id pci 0x121a -&device.id pci 0x0005 -+device.name Voodoo 3 - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0004 -+subdevice.name Voodoo3 AGP - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0030 -+subdevice.name Voodoo3 AGP - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0031 -+subdevice.name Voodoo3 AGP - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0034 -+subdevice.name Voodoo3 AGP - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0036 -+subdevice.name Voodoo3 2000 PCI - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0037 -+subdevice.name Voodoo3 AGP - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0038 -+subdevice.name Voodoo3 AGP - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x003a -+subdevice.name Voodoo3 AGP - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0044 -+subdevice.name Voodoo3 - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x004b -+subdevice.name Velocity 100 - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x004c -+subdevice.name Velocity 200 - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x004d -+subdevice.name Voodoo3 AGP - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x004e -+subdevice.name Voodoo3 AGP - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0051 -+subdevice.name Voodoo3 AGP - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0052 -+subdevice.name Voodoo3 AGP - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0060 -+subdevice.name Voodoo3 3500 TV (NTSC) - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0061 -+subdevice.name Voodoo3 3500 TV (PAL) - - vendor.id pci 0x121a -&device.id pci 0x0005 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0062 -+subdevice.name Voodoo3 3500 TV (SECAM) - - vendor.id pci 0x121a -&device.id pci 0x0009 -+device.name Voodoo 4 / Voodoo 5 - - vendor.id pci 0x121a -&device.id pci 0x0009 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0003 -+subdevice.name Voodoo5 PCI 5500 - - vendor.id pci 0x121a -&device.id pci 0x0009 -&subvendor.id pci 0x121a -&subdevice.id pci 0x0009 -+subdevice.name Voodoo5 AGP 5500/6000 - - vendor.id pci 0x121a -&device.id pci 0x0057 -+device.name Voodoo 3/3000 [Avenger] - - vendor.id pci 0x121b -+vendor.name Advanced Telecommunications Modules - - vendor.id pci 0x121c -+vendor.name Nippon Texaco., Ltd - - vendor.id pci 0x121d -+vendor.name Lippert Automationstechnik GmbH - - vendor.id pci 0x121e -+vendor.name CSPI - - vendor.id pci 0x121f -+vendor.name Arcus Technology, Inc. - - vendor.id pci 0x1220 -+vendor.name Ariel Corporation - - vendor.id pci 0x1220 -&device.id pci 0x1220 -+device.name AMCC 5933 TMS320C80 DSP/Imaging board - - vendor.id pci 0x1221 -+vendor.name Contec Co., Ltd - - vendor.id pci 0x1222 -+vendor.name Ancor Communications, Inc. - - vendor.id pci 0x1223 -+vendor.name Artesyn Communication Products - - vendor.id pci 0x1223 -&device.id pci 0x0003 -+device.name PM/Link - - vendor.id pci 0x1223 -&device.id pci 0x0004 -+device.name PM/T1 - - vendor.id pci 0x1223 -&device.id pci 0x0005 -+device.name PM/E1 - - vendor.id pci 0x1223 -&device.id pci 0x0008 -+device.name PM/SLS - - vendor.id pci 0x1223 -&device.id pci 0x0009 -+device.name BajaSpan Resource Target - - vendor.id pci 0x1223 -&device.id pci 0x000a -+device.name BajaSpan Section 0 - - vendor.id pci 0x1223 -&device.id pci 0x000b -+device.name BajaSpan Section 1 - - vendor.id pci 0x1223 -&device.id pci 0x000c -+device.name BajaSpan Section 2 - - vendor.id pci 0x1223 -&device.id pci 0x000d -+device.name BajaSpan Section 3 - - vendor.id pci 0x1223 -&device.id pci 0x000e -+device.name PM/PPC - - vendor.id pci 0x1224 -+vendor.name Interactive Images - - vendor.id pci 0x1225 -+vendor.name Power I/O, Inc. - - vendor.id pci 0x1227 -+vendor.name Tech-Source - - vendor.id pci 0x1227 -&device.id pci 0x0006 -+device.name Raptor GFX 8P - - vendor.id pci 0x1228 -+vendor.name Norsk Elektro Optikk A/S - - vendor.id pci 0x1229 -+vendor.name Data Kinesis Inc. - - vendor.id pci 0x122a -+vendor.name Integrated Telecom - - vendor.id pci 0x122b -+vendor.name LG Industrial Systems Co., Ltd - - vendor.id pci 0x122c -+vendor.name Sican GmbH - - vendor.id pci 0x122d -+vendor.name Aztech System Ltd - - vendor.id pci 0x122d -&device.id pci 0x1206 -+device.name 368DSP - - vendor.id pci 0x122d -&device.id pci 0x1400 -+device.name Trident PCI288-Q3DII (NX) - - vendor.id pci 0x122d -&device.id pci 0x50dc -+device.name 3328 Audio - - vendor.id pci 0x122d -&device.id pci 0x50dc -&subvendor.id pci 0x122d -&subdevice.id pci 0x0001 -+subdevice.name 3328 Audio - - vendor.id pci 0x122d -&device.id pci 0x80da -+device.name 3328 Audio - - vendor.id pci 0x122d -&device.id pci 0x80da -&subvendor.id pci 0x122d -&subdevice.id pci 0x0001 -+subdevice.name 3328 Audio - - vendor.id pci 0x122e -+vendor.name Xyratex - - vendor.id pci 0x122f -+vendor.name Andrew Corporation - - vendor.id pci 0x1230 -+vendor.name Fishcamp Engineering - - vendor.id pci 0x1231 -+vendor.name Woodward McCoach, Inc. - - vendor.id pci 0x1232 -+vendor.name GPT Limited - - vendor.id pci 0x1233 -+vendor.name Bus-Tech, Inc. - - vendor.id pci 0x1234 -+vendor.name Technical Corp. - - vendor.id pci 0x1235 -+vendor.name Risq Modular Systems, Inc. - - vendor.id pci 0x1236 -+vendor.name Sigma Designs Corporation - - vendor.id pci 0x1236 -&device.id pci 0x0000 -+device.name RealMagic64/GX - - vendor.id pci 0x1236 -&device.id pci 0x6401 -+device.name REALmagic 64/GX (SD 6425) - - vendor.id pci 0x1237 -+vendor.name Alta Technology Corporation - - vendor.id pci 0x1238 -+vendor.name Adtran - - vendor.id pci 0x1239 -+vendor.name 3DO Company - - vendor.id pci 0x123a -+vendor.name Visicom Laboratories, Inc. - - vendor.id pci 0x123b -+vendor.name Seeq Technology, Inc. - - vendor.id pci 0x123c -+vendor.name Century Systems, Inc. - - vendor.id pci 0x123d -+vendor.name Engineering Design Team, Inc. - - vendor.id pci 0x123d -&device.id pci 0x0000 -+device.name EasyConnect 8/32 - - vendor.id pci 0x123d -&device.id pci 0x0002 -+device.name EasyConnect 8/64 - - vendor.id pci 0x123d -&device.id pci 0x0003 -+device.name EasyIO - - vendor.id pci 0x123e -+vendor.name Simutech, Inc. - - vendor.id pci 0x123f -+vendor.name C-Cube Microsystems - - vendor.id pci 0x123f -&device.id pci 0x00e4 -+device.name MPEG - - vendor.id pci 0x123f -&device.id pci 0x8120 -+device.name E4? - - vendor.id pci 0x123f -&device.id pci 0x8120 -&subvendor.id pci 0x11bd -&subdevice.id pci 0x0006 -+subdevice.name DV500 E4 - - vendor.id pci 0x123f -&device.id pci 0x8120 -&subvendor.id pci 0x11bd -&subdevice.id pci 0x000a -+subdevice.name DV500 E4 - - vendor.id pci 0x123f -&device.id pci 0x8888 -+device.name Cinemaster C 3.0 DVD Decoder - - vendor.id pci 0x123f -&device.id pci 0x8888 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0001 -+subdevice.name Cinemaster C 3.0 DVD Decoder - - vendor.id pci 0x123f -&device.id pci 0x8888 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0002 -+subdevice.name Cinemaster C 3.0 DVD Decoder - - vendor.id pci 0x123f -&device.id pci 0x8888 -&subvendor.id pci 0x1328 -&subdevice.id pci 0x0001 -+subdevice.name Cinemaster C 3.0 DVD Decoder - - vendor.id pci 0x1240 -+vendor.name Marathon Technologies Corp. - - vendor.id pci 0x1241 -+vendor.name DSC Communications - - vendor.id pci 0x1242 -+vendor.name JNI Corporation - - vendor.id pci 0x1242 -&device.id pci 0x1560 -+device.name JNIC-1560 PCI-X Fibre Channel Controller - - vendor.id pci 0x1242 -&device.id pci 0x1560 -&subvendor.id pci 0x1242 -&subdevice.id pci 0x6562 -+subdevice.name FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter - - vendor.id pci 0x1242 -&device.id pci 0x1560 -&subvendor.id pci 0x1242 -&subdevice.id pci 0x656a -+subdevice.name FCX-6562 PCI-X Fibre Channel Adapter - - vendor.id pci 0x1242 -&device.id pci 0x4643 -+device.name FCI-1063 Fibre Channel Adapter - - vendor.id pci 0x1242 -&device.id pci 0x6562 -+device.name FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter - - vendor.id pci 0x1242 -&device.id pci 0x656a -+device.name FCX-6562 PCI-X Fibre Channel Adapter - - vendor.id pci 0x1243 -+vendor.name Delphax - - vendor.id pci 0x1244 -+vendor.name AVM Audiovisuelles MKTG & Computer System GmbH - - vendor.id pci 0x1244 -&device.id pci 0x0700 -+device.name B1 ISDN - - vendor.id pci 0x1244 -&device.id pci 0x0800 -+device.name C4 ISDN - - vendor.id pci 0x1244 -&device.id pci 0x0a00 -+device.name A1 ISDN [Fritz] - - vendor.id pci 0x1244 -&device.id pci 0x0a00 -&subvendor.id pci 0x1244 -&subdevice.id pci 0x0a00 -+subdevice.name FRITZ!Card ISDN Controller - - vendor.id pci 0x1244 -&device.id pci 0x0e00 -+device.name Fritz!PCI v2.0 ISDN - - vendor.id pci 0x1244 -&device.id pci 0x1100 -+device.name C2 ISDN - - vendor.id pci 0x1244 -&device.id pci 0x1200 -+device.name T1 ISDN - - vendor.id pci 0x1244 -&device.id pci 0x2700 -+device.name Fritz!Card DSL SL - - vendor.id pci 0x1244 -&device.id pci 0x2900 -+device.name Fritz!Card DSL v2.0 - - vendor.id pci 0x1245 -+vendor.name A.P.D., S.A. - - vendor.id pci 0x1246 -+vendor.name Dipix Technologies, Inc. - - vendor.id pci 0x1247 -+vendor.name Xylon Research, Inc. - - vendor.id pci 0x1248 -+vendor.name Central Data Corporation - - vendor.id pci 0x1249 -+vendor.name Samsung Electronics Co., Ltd. - - vendor.id pci 0x124a -+vendor.name AEG Electrocom GmbH - - vendor.id pci 0x124b -+vendor.name SBS/Greenspring Modular I/O - - vendor.id pci 0x124b -&device.id pci 0x0040 -+device.name PCI-40A or cPCI-200 Quad IndustryPack carrier - - vendor.id pci 0x124b -&device.id pci 0x0040 -&subvendor.id pci 0x124b -&subdevice.id pci 0x9080 -+subdevice.name PCI9080 Bridge - - vendor.id pci 0x124c -+vendor.name Solitron Technologies, Inc. - - vendor.id pci 0x124d -+vendor.name Stallion Technologies, Inc. - - vendor.id pci 0x124d -&device.id pci 0x0000 -+device.name EasyConnection 8/32 - - vendor.id pci 0x124d -&device.id pci 0x0002 -+device.name EasyConnection 8/64 - - vendor.id pci 0x124d -&device.id pci 0x0003 -+device.name EasyIO - - vendor.id pci 0x124d -&device.id pci 0x0004 -+device.name EasyConnection/RA - - vendor.id pci 0x124e -+vendor.name Cylink - - vendor.id pci 0x124f -+vendor.name Infortrend Technology, Inc. - - vendor.id pci 0x124f -&device.id pci 0x0041 -+device.name IFT-2000 Series RAID Controller - - vendor.id pci 0x1250 -+vendor.name Hitachi Microcomputer System Ltd - - vendor.id pci 0x1251 -+vendor.name VLSI Solutions Oy - - vendor.id pci 0x1253 -+vendor.name Guzik Technical Enterprises - - vendor.id pci 0x1254 -+vendor.name Linear Systems Ltd. - - vendor.id pci 0x1255 -+vendor.name Optibase Ltd - - vendor.id pci 0x1255 -&device.id pci 0x1110 -+device.name MPEG Forge - - vendor.id pci 0x1255 -&device.id pci 0x1210 -+device.name MPEG Fusion - - vendor.id pci 0x1255 -&device.id pci 0x2110 -+device.name VideoPlex - - vendor.id pci 0x1255 -&device.id pci 0x2120 -+device.name VideoPlex CC - - vendor.id pci 0x1255 -&device.id pci 0x2130 -+device.name VideoQuest - - vendor.id pci 0x1256 -+vendor.name Perceptive Solutions, Inc. - - vendor.id pci 0x1256 -&device.id pci 0x4201 -+device.name PCI-2220I - - vendor.id pci 0x1256 -&device.id pci 0x4401 -+device.name PCI-2240I - - vendor.id pci 0x1256 -&device.id pci 0x5201 -+device.name PCI-2000 - - vendor.id pci 0x1257 -+vendor.name Vertex Networks, Inc. - - vendor.id pci 0x1258 -+vendor.name Gilbarco, Inc. - - vendor.id pci 0x1259 -+vendor.name Allied Telesyn International - - vendor.id pci 0x1259 -&device.id pci 0x2560 -+device.name AT-2560 Fast Ethernet Adapter (i82557B) - - vendor.id pci 0x1259 -&device.id pci 0xa117 -+device.name RTL81xx Fast Ethernet - - vendor.id pci 0x1259 -&device.id pci 0xa120 -+device.name 21x4x DEC-Tulip compatible 10/100 Ethernet - - vendor.id pci 0x125a -+vendor.name ABB Power Systems - - vendor.id pci 0x125b -+vendor.name Asix Electronics Corporation - - vendor.id pci 0x125b -&device.id pci 0x1400 -+device.name ALFA GFC2204 Fast Ethernet - - vendor.id pci 0x125c -+vendor.name Aurora Technologies, Inc. - - vendor.id pci 0x125c -&device.id pci 0x0101 -+device.name Saturn 4520P - - vendor.id pci 0x125c -&device.id pci 0x0640 -+device.name Aries 16000P - - vendor.id pci 0x125d -+vendor.name ESS Technology - - vendor.id pci 0x125d -&device.id pci 0x0000 -+device.name ES336H Fax Modem (Early Model) - - vendor.id pci 0x125d -&device.id pci 0x1948 -+device.name Solo? - - vendor.id pci 0x125d -&device.id pci 0x1968 -+device.name ES1968 Maestro 2 - - vendor.id pci 0x125d -&device.id pci 0x1968 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0085 -+subdevice.name ES1968 Maestro-2 PCI - - vendor.id pci 0x125d -&device.id pci 0x1968 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8051 -+subdevice.name ES1968 Maestro-2 Audiodrive - - vendor.id pci 0x125d -&device.id pci 0x1969 -+device.name ES1969 Solo-1 Audiodrive - - vendor.id pci 0x125d -&device.id pci 0x1969 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0166 -+subdevice.name ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard - - vendor.id pci 0x125d -&device.id pci 0x1969 -&subvendor.id pci 0x125d -&subdevice.id pci 0x8888 -+subdevice.name Solo-1 Audio Adapter - - vendor.id pci 0x125d -&device.id pci 0x1978 -+device.name ES1978 Maestro 2E - - vendor.id pci 0x125d -&device.id pci 0x1978 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb112 -+subdevice.name Armada M700/E500 - - vendor.id pci 0x125d -&device.id pci 0x1978 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x803c -+subdevice.name ES1978 Maestro-2E Audiodrive - - vendor.id pci 0x125d -&device.id pci 0x1978 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8058 -+subdevice.name ES1978 Maestro-2E Audiodrive - - vendor.id pci 0x125d -&device.id pci 0x1978 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4000 -+subdevice.name Monster Sound MX400 - - vendor.id pci 0x125d -&device.id pci 0x1978 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name ES1978 Maestro-2E Audiodrive - - vendor.id pci 0x125d -&device.id pci 0x1988 -+device.name ES1988 Allegro-1 - - vendor.id pci 0x125d -&device.id pci 0x1988 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4100 -+subdevice.name Sonic Impact S100 - - vendor.id pci 0x125d -&device.id pci 0x1988 -&subvendor.id pci 0x125d -&subdevice.id pci 0x1988 -+subdevice.name ESS Allegro-1 Audiodrive - - vendor.id pci 0x125d -&device.id pci 0x1989 -+device.name ESS Modem - - vendor.id pci 0x125d -&device.id pci 0x1989 -&subvendor.id pci 0x125d -&subdevice.id pci 0x1989 -+subdevice.name ESS Modem - - vendor.id pci 0x125d -&device.id pci 0x1998 -+device.name ES1983S Maestro-3i PCI Audio Accelerator - - vendor.id pci 0x125d -&device.id pci 0x1998 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00b1 -+subdevice.name Latitude C600 - - vendor.id pci 0x125d -&device.id pci 0x1998 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00e6 -+subdevice.name ES1983S Maestro-3i (Dell Inspiron 8100) - - vendor.id pci 0x125d -&device.id pci 0x1999 -+device.name ES1983S Maestro-3i PCI Modem Accelerator - - vendor.id pci 0x125d -&device.id pci 0x199a -+device.name ES1983S Maestro-3i PCI Audio Accelerator - - vendor.id pci 0x125d -&device.id pci 0x199b -+device.name ES1983S Maestro-3i PCI Modem Accelerator - - vendor.id pci 0x125d -&device.id pci 0x2808 -+device.name ES336H Fax Modem (Later Model) - - vendor.id pci 0x125d -&device.id pci 0x2838 -+device.name ES2838/2839 SuperLink Modem - - vendor.id pci 0x125d -&device.id pci 0x2898 -+device.name ES2898 Modem - - vendor.id pci 0x125d -&device.id pci 0x2898 -&subvendor.id pci 0x125d -&subdevice.id pci 0x0424 -+subdevice.name ES56-PI Data Fax Modem - - vendor.id pci 0x125d -&device.id pci 0x2898 -&subvendor.id pci 0x125d -&subdevice.id pci 0x0425 -+subdevice.name ES56T-PI Data Fax Modem - - vendor.id pci 0x125d -&device.id pci 0x2898 -&subvendor.id pci 0x125d -&subdevice.id pci 0x0426 -+subdevice.name ES56V-PI Data Fax Modem - - vendor.id pci 0x125d -&device.id pci 0x2898 -&subvendor.id pci 0x125d -&subdevice.id pci 0x0427 -+subdevice.name VW-PI Data Fax Modem - - vendor.id pci 0x125d -&device.id pci 0x2898 -&subvendor.id pci 0x125d -&subdevice.id pci 0x0428 -+subdevice.name ES56ST-PI Data Fax Modem - - vendor.id pci 0x125d -&device.id pci 0x2898 -&subvendor.id pci 0x125d -&subdevice.id pci 0x0429 -+subdevice.name ES56SV-PI Data Fax Modem - - vendor.id pci 0x125d -&device.id pci 0x2898 -&subvendor.id pci 0x147a -&subdevice.id pci 0xc001 -+subdevice.name ES56-PI Data Fax Modem - - vendor.id pci 0x125d -&device.id pci 0x2898 -&subvendor.id pci 0x14fe -&subdevice.id pci 0x0428 -+subdevice.name ES56-PI Data Fax Modem - - vendor.id pci 0x125d -&device.id pci 0x2898 -&subvendor.id pci 0x14fe -&subdevice.id pci 0x0429 -+subdevice.name ES56-PI Data Fax Modem - - vendor.id pci 0x125e -+vendor.name Specialvideo Engineering SRL - - vendor.id pci 0x125f -+vendor.name Concurrent Technologies, Inc. - - vendor.id pci 0x1260 -+vendor.name Intersil Corporation - - vendor.id pci 0x1260 -&device.id pci 0x3872 -+device.name Prism 2.5 Wavelan chipset - - vendor.id pci 0x1260 -&device.id pci 0x3872 -&subvendor.id pci 0x1468 -&subdevice.id pci 0x0202 -+subdevice.name LAN-Express IEEE 802.11b Wireless LAN - - vendor.id pci 0x1260 -&device.id pci 0x3873 -+device.name Prism 2.5 Wavelan chipset - - vendor.id pci 0x1260 -&device.id pci 0x3873 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x3501 -+subdevice.name DWL-520 Wireless PCI Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3873 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x3700 -+subdevice.name DWL-520 Wireless PCI Adapter, Rev E1 - - vendor.id pci 0x1260 -&device.id pci 0x3873 -&subvendor.id pci 0x1385 -&subdevice.id pci 0x4105 -+subdevice.name MA311 802.11b wireless adapter - - vendor.id pci 0x1260 -&device.id pci 0x3873 -&subvendor.id pci 0x1668 -&subdevice.id pci 0x0414 -+subdevice.name HWP01170-01 802.11b PCI Wireless Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3873 -&subvendor.id pci 0x16a5 -&subdevice.id pci 0x1601 -+subdevice.name AIR.mate PC-400 PCI Wireless LAN Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3873 -&subvendor.id pci 0x1737 -&subdevice.id pci 0x3874 -+subdevice.name WMP11 Wireless 802.11b PCI Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3873 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2513 -+subdevice.name Wireless 802.11b MiniPCI Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3886 -+device.name ISL3886 [Prism Javelin/Prism Xbow] - - vendor.id pci 0x1260 -&device.id pci 0x3886 -&subvendor.id pci 0x17cf -&subdevice.id pci 0x0037 -+subdevice.name Z-Com XG-901 and clones Wireless Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3890 -+device.name Intersil ISL3890 [Prism GT/Prism Duette] - - vendor.id pci 0x1260 -&device.id pci 0x3890 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0x2802 -+subdevice.name SMC2802W Wireless PCI Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3890 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0x2835 -+subdevice.name SMC2835W Wireless Cardbus Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3890 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0xa835 -+subdevice.name SMC2835W V2 Wireless Cardbus Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3890 -&subvendor.id pci 0x1113 -&subdevice.id pci 0xee03 -+subdevice.name SMC2802W V2 Wireless PCI Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3890 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x3202 -+subdevice.name DWL-G650 A1 Wireless Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3890 -&subvendor.id pci 0x1259 -&subdevice.id pci 0xc104 -+subdevice.name CG-WLCB54GT Wireless Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3890 -&subvendor.id pci 0x1385 -&subdevice.id pci 0x4800 -+subdevice.name WG511 Wireless Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3890 -&subvendor.id pci 0x16a5 -&subdevice.id pci 0x1605 -+subdevice.name ALLNET ALL0271 Wireless PCI Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3890 -&subvendor.id pci 0x17cf -&subdevice.id pci 0x0014 -+subdevice.name Z-Com XG-600 and clones Wireless Adapter - - vendor.id pci 0x1260 -&device.id pci 0x3890 -&subvendor.id pci 0x17cf -&subdevice.id pci 0x0020 -+subdevice.name Z-Com XG-900 and clones Wireless Adapter - - vendor.id pci 0x1260 -&device.id pci 0x8130 -+device.name HMP8130 NTSC/PAL Video Decoder - - vendor.id pci 0x1260 -&device.id pci 0x8131 -+device.name HMP8131 NTSC/PAL Video Decoder - - vendor.id pci 0x1261 -+vendor.name Matsushita-Kotobuki Electronics Industries, Ltd. - - vendor.id pci 0x1262 -+vendor.name ES Computer Company, Ltd. - - vendor.id pci 0x1263 -+vendor.name Sonic Solutions - - vendor.id pci 0x1264 -+vendor.name Aval Nagasaki Corporation - - vendor.id pci 0x1265 -+vendor.name Casio Computer Co., Ltd. - - vendor.id pci 0x1266 -+vendor.name Microdyne Corporation - - vendor.id pci 0x1266 -&device.id pci 0x0001 -+device.name NE10/100 Adapter (i82557B) - - vendor.id pci 0x1266 -&device.id pci 0x1910 -+device.name NE2000Plus (RT8029) Ethernet Adapter - - vendor.id pci 0x1266 -&device.id pci 0x1910 -&subvendor.id pci 0x1266 -&subdevice.id pci 0x1910 -+subdevice.name NE2000Plus Ethernet Adapter - - vendor.id pci 0x1267 -+vendor.name S. A. Telecommunications - - vendor.id pci 0x1267 -&device.id pci 0x5352 -+device.name PCR2101 - - vendor.id pci 0x1267 -&device.id pci 0x5a4b -+device.name Telsat Turbo - - vendor.id pci 0x1268 -+vendor.name Tektronix - - vendor.id pci 0x1269 -+vendor.name Thomson-CSF/TTM - - vendor.id pci 0x126a -+vendor.name Lexmark International, Inc. - - vendor.id pci 0x126b -+vendor.name Adax, Inc. - - vendor.id pci 0x126c -+vendor.name Northern Telecom - - vendor.id pci 0x126c -&device.id pci 0x1211 -+device.name 10/100BaseTX [RTL81xx] - - vendor.id pci 0x126c -&device.id pci 0x126c -+device.name 802.11b Wireless Ethernet Adapter - - vendor.id pci 0x126d -+vendor.name Splash Technology, Inc. - - vendor.id pci 0x126e -+vendor.name Sumitomo Metal Industries, Ltd. - - vendor.id pci 0x126f -+vendor.name Silicon Motion, Inc. - - vendor.id pci 0x126f -&device.id pci 0x0501 -+device.name SM501 VoyagerGX - - vendor.id pci 0x126f -&device.id pci 0x0710 -+device.name SM710 LynxEM - - vendor.id pci 0x126f -&device.id pci 0x0712 -+device.name SM712 LynxEM+ - - vendor.id pci 0x126f -&device.id pci 0x0720 -+device.name SM720 Lynx3DM - - vendor.id pci 0x126f -&device.id pci 0x0730 -+device.name SM731 Cougar3DR - - vendor.id pci 0x126f -&device.id pci 0x0810 -+device.name SM810 LynxE - - vendor.id pci 0x126f -&device.id pci 0x0811 -+device.name SM811 LynxE - - vendor.id pci 0x126f -&device.id pci 0x0820 -+device.name SM820 Lynx3D - - vendor.id pci 0x126f -&device.id pci 0x0910 -+device.name SM910 - - vendor.id pci 0x1270 -+vendor.name Olympus Optical Co., Ltd. - - vendor.id pci 0x1271 -+vendor.name GW Instruments - - vendor.id pci 0x1272 -+vendor.name Telematics International - - vendor.id pci 0x1273 -+vendor.name Hughes Network Systems - - vendor.id pci 0x1273 -&device.id pci 0x0002 -+device.name DirecPC - - vendor.id pci 0x1274 -+vendor.name Ensoniq - - vendor.id pci 0x1274 -&device.id pci 0x1171 -+device.name ES1373 [AudioPCI] (also Creative Labs CT5803) - - vendor.id pci 0x1274 -&device.id pci 0x1371 -+device.name ES1371 [AudioPCI-97] - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0024 -+subdevice.name AudioPCI on Motherboard Compaq Deskpro - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb1a7 -+subdevice.name ES1371, ES1373 AudioPCI - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x80ac -+subdevice.name ES1371, ES1373 AudioPCI - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1042 -&subdevice.id pci 0x1854 -+subdevice.name Tazer - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x107b -&subdevice.id pci 0x8054 -+subdevice.name Tabor2 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1274 -&subdevice.id pci 0x1371 -+subdevice.name Creative Sound Blaster AudioPCI64V, AudioPCI128 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6470 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6560 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6630 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6631 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6632 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6633 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6820 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6822 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6830 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6880 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6900 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6910 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6191 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6930 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6193 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6990 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6991 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x14a4 -&subdevice.id pci 0x2077 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard KR639 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x14a4 -&subdevice.id pci 0x2105 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MR800 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x14a4 -&subdevice.id pci 0x2107 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard MR801 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x14a4 -&subdevice.id pci 0x2172 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard DR739 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1509 -&subdevice.id pci 0x9902 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard KW11 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1509 -&subdevice.id pci 0x9903 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard KW31 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1509 -&subdevice.id pci 0x9904 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard KA11 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x1509 -&subdevice.id pci 0x9905 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard KC13 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x152d -&subdevice.id pci 0x8801 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard CP810E - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x152d -&subdevice.id pci 0x8802 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard CP810 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x152d -&subdevice.id pci 0x8803 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard P3810E - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x152d -&subdevice.id pci 0x8804 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard P3810-S - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x152d -&subdevice.id pci 0x8805 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard P3820-S - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x270f -&subdevice.id pci 0x2001 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard 6CTR - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x270f -&subdevice.id pci 0x2200 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard 6WTX - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x270f -&subdevice.id pci 0x3000 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard 6WSV - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x270f -&subdevice.id pci 0x3100 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard 6WIV2 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x270f -&subdevice.id pci 0x3102 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard 6WIV - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x270f -&subdevice.id pci 0x7060 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard 6ASA2 - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4249 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard BI440ZX - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x424c -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard BL440ZX - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x425a -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard BZ440ZX - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4341 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard Cayman - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4343 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard Cape Cod - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4649 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard Fire Island - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x464a -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard FJ440ZX - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4d4f -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard Montreal - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4f43 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard OC440LX - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x5243 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard RC440BX - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x5352 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard SunRiver - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x5643 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard Vancouver - - vendor.id pci 0x1274 -&device.id pci 0x1371 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x5753 -+subdevice.name ES1371, ES1373 AudioPCI On Motherboard WS440BX - - vendor.id pci 0x1274 -&device.id pci 0x5000 -+device.name ES1370 [AudioPCI] - - vendor.id pci 0x1274 -&device.id pci 0x5880 -+device.name 5880 AudioPCI - - vendor.id pci 0x1274 -&device.id pci 0x5880 -&subvendor.id pci 0x1274 -&subdevice.id pci 0x2000 -+subdevice.name Creative Sound Blaster AudioPCI128 - - vendor.id pci 0x1274 -&device.id pci 0x5880 -&subvendor.id pci 0x1274 -&subdevice.id pci 0x2003 -+subdevice.name Creative SoundBlaster AudioPCI 128 - - vendor.id pci 0x1274 -&device.id pci 0x5880 -&subvendor.id pci 0x1274 -&subdevice.id pci 0x5880 -+subdevice.name Creative Sound Blaster AudioPCI128 - - vendor.id pci 0x1274 -&device.id pci 0x5880 -&subvendor.id pci 0x1274 -&subdevice.id pci 0x8001 -+subdevice.name Sound Blaster 16PCI 4.1ch - - vendor.id pci 0x1274 -&device.id pci 0x5880 -&subvendor.id pci 0x1458 -&subdevice.id pci 0xa000 -+subdevice.name 5880 AudioPCI On Motherboard 6OXET - - vendor.id pci 0x1274 -&device.id pci 0x5880 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6880 -+subdevice.name 5880 AudioPCI On Motherboard MS-6188 1.00 - - vendor.id pci 0x1274 -&device.id pci 0x5880 -&subvendor.id pci 0x270f -&subdevice.id pci 0x2001 -+subdevice.name 5880 AudioPCI On Motherboard 6CTR - - vendor.id pci 0x1274 -&device.id pci 0x5880 -&subvendor.id pci 0x270f -&subdevice.id pci 0x2200 -+subdevice.name 5880 AudioPCI On Motherboard 6WTX - - vendor.id pci 0x1274 -&device.id pci 0x5880 -&subvendor.id pci 0x270f -&subdevice.id pci 0x7040 -+subdevice.name 5880 AudioPCI On Motherboard 6ATA4 - - vendor.id pci 0x1275 -+vendor.name Network Appliance Corporation - - vendor.id pci 0x1276 -+vendor.name Switched Network Technologies, Inc. - - vendor.id pci 0x1277 -+vendor.name Comstream - - vendor.id pci 0x1278 -+vendor.name Transtech Parallel Systems Ltd. - - vendor.id pci 0x1278 -&device.id pci 0x0701 -+device.name TPE3/TM3 PowerPC Node - - vendor.id pci 0x1278 -&device.id pci 0x0710 -+device.name TPE5 PowerPC PCI board - - vendor.id pci 0x1279 -+vendor.name Transmeta Corporation - - vendor.id pci 0x1279 -&device.id pci 0x0295 -+device.name Northbridge - - vendor.id pci 0x1279 -&device.id pci 0x0395 -+device.name LongRun Northbridge - - vendor.id pci 0x1279 -&device.id pci 0x0396 -+device.name SDRAM controller - - vendor.id pci 0x1279 -&device.id pci 0x0397 -+device.name BIOS scratchpad - - vendor.id pci 0x127a -+vendor.name Rockwell International - - vendor.id pci 0x127a -&device.id pci 0x1002 -+device.name HCF 56k Data/Fax Modem - - vendor.id pci 0x127a -&device.id pci 0x1002 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x094c -+subdevice.name SupraExpress 56i PRO [Diamond SUP2380] - - vendor.id pci 0x127a -&device.id pci 0x1002 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4002 -+subdevice.name HPG / MDP3858-U - - vendor.id pci 0x127a -&device.id pci 0x1002 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4005 -+subdevice.name MDP3858-E - - vendor.id pci 0x127a -&device.id pci 0x1002 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4007 -+subdevice.name MDP3858-A/-NZ - - vendor.id pci 0x127a -&device.id pci 0x1002 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4012 -+subdevice.name MDP3858-SA - - vendor.id pci 0x127a -&device.id pci 0x1002 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4017 -+subdevice.name MDP3858-W - - vendor.id pci 0x127a -&device.id pci 0x1002 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4018 -+subdevice.name MDP3858-W - - vendor.id pci 0x127a -&device.id pci 0x1002 -&subvendor.id pci 0x127a -&subdevice.id pci 0x1002 -+subdevice.name Rockwell 56K D/F HCF Modem - - vendor.id pci 0x127a -&device.id pci 0x1003 -+device.name HCF 56k Data/Fax Modem - - vendor.id pci 0x127a -&device.id pci 0x1003 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0bc -+subdevice.name 229-DF Zephyr - - vendor.id pci 0x127a -&device.id pci 0x1003 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb114 -+subdevice.name 229-DF Cheetah - - vendor.id pci 0x127a -&device.id pci 0x1003 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x802b -+subdevice.name 229-DF - - vendor.id pci 0x127a -&device.id pci 0x1003 -&subvendor.id pci 0x13df -&subdevice.id pci 0x1003 -+subdevice.name PCI56RX Modem - - vendor.id pci 0x127a -&device.id pci 0x1003 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0117 -+subdevice.name IBM - - vendor.id pci 0x127a -&device.id pci 0x1003 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0147 -+subdevice.name IBM F-1156IV+/R3 Spain V.90 Modem - - vendor.id pci 0x127a -&device.id pci 0x1003 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0197 -+subdevice.name IBM - - vendor.id pci 0x127a -&device.id pci 0x1003 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x01c7 -+subdevice.name IBM F-1156IV+/R3 WW V.90 Modem - - vendor.id pci 0x127a -&device.id pci 0x1003 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x01f7 -+subdevice.name IBM - - vendor.id pci 0x127a -&device.id pci 0x1003 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x1003 -+subdevice.name IBM - - vendor.id pci 0x127a -&device.id pci 0x1003 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x1103 -+subdevice.name IBM 5614PM3G V.90 Modem - - vendor.id pci 0x127a -&device.id pci 0x1003 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x1602 -+subdevice.name Compaq 229-DF Ducati - - vendor.id pci 0x127a -&device.id pci 0x1004 -+device.name HCF 56k Data/Fax/Voice Modem - - vendor.id pci 0x127a -&device.id pci 0x1004 -&subvendor.id pci 0x1048 -&subdevice.id pci 0x1500 -+subdevice.name MicroLink 56k Modem - - vendor.id pci 0x127a -&device.id pci 0x1004 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1059 -+subdevice.name Fujitsu 229-DFRT - - vendor.id pci 0x127a -&device.id pci 0x1005 -+device.name HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8029 -+subdevice.name 229-DFSV - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8054 -+subdevice.name Modem - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x103c -+subdevice.name Fujitsu - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1055 -+subdevice.name Fujitsu 229-DFSV - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1056 -+subdevice.name Fujitsu 229-DFSV - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4003 -+subdevice.name MDP3858SP-U - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4006 -+subdevice.name Packard Bell MDP3858V-E - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4008 -+subdevice.name MDP3858SP-A/SP-NZ - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4009 -+subdevice.name MDP3858SP-E - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4010 -+subdevice.name MDP3858V-U - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4011 -+subdevice.name MDP3858SP-SA - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4013 -+subdevice.name MDP3858V-A/V-NZ - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4015 -+subdevice.name MDP3858SP-W - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4016 -+subdevice.name MDP3858V-W - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4019 -+subdevice.name MDP3858V-SA - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x13df -&subdevice.id pci 0x1005 -+subdevice.name PCI56RVP Modem - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0187 -+subdevice.name IBM - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x01a7 -+subdevice.name IBM - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x01b7 -+subdevice.name IBM DF-1156IV+/R3 Spain V.90 Modem - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x01d7 -+subdevice.name IBM DF-1156IV+/R3 WW V.90 Modem - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x1005 -+subdevice.name IBM - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x1105 -+subdevice.name IBM - - vendor.id pci 0x127a -&device.id pci 0x1005 -&subvendor.id pci 0x1437 -&subdevice.id pci 0x1105 -+subdevice.name IBM 5614PS3G V.90 Modem - - vendor.id pci 0x127a -&device.id pci 0x1022 -+device.name HCF 56k Modem - - vendor.id pci 0x127a -&device.id pci 0x1022 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x1303 -+subdevice.name M3-5614PM3G V.90 Modem - - vendor.id pci 0x127a -&device.id pci 0x1023 -+device.name HCF 56k Data/Fax Modem - - vendor.id pci 0x127a -&device.id pci 0x1023 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4020 -+subdevice.name Packard Bell MDP3858-WE - - vendor.id pci 0x127a -&device.id pci 0x1023 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4023 -+subdevice.name MDP3858-UE - - vendor.id pci 0x127a -&device.id pci 0x1023 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0247 -+subdevice.name IBM F-1156IV+/R6 Spain V.90 Modem - - vendor.id pci 0x127a -&device.id pci 0x1023 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0297 -+subdevice.name IBM - - vendor.id pci 0x127a -&device.id pci 0x1023 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x02c7 -+subdevice.name IBM F-1156IV+/R6 WW V.90 Modem - - vendor.id pci 0x127a -&device.id pci 0x1023 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x1203 -+subdevice.name IBM - - vendor.id pci 0x127a -&device.id pci 0x1023 -&subvendor.id pci 0x1436 -&subdevice.id pci 0x1303 -+subdevice.name IBM - - vendor.id pci 0x127a -&device.id pci 0x1024 -+device.name HCF 56k Data/Fax/Voice Modem - - vendor.id pci 0x127a -&device.id pci 0x1025 -+device.name HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - - vendor.id pci 0x127a -&device.id pci 0x1025 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x106a -+subdevice.name Fujitsu 235-DFSV - - vendor.id pci 0x127a -&device.id pci 0x1025 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4021 -+subdevice.name Packard Bell MDP3858V-WE - - vendor.id pci 0x127a -&device.id pci 0x1025 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4022 -+subdevice.name MDP3858SP-WE - - vendor.id pci 0x127a -&device.id pci 0x1025 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4024 -+subdevice.name MDP3858V-UE - - vendor.id pci 0x127a -&device.id pci 0x1025 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4025 -+subdevice.name MDP3858SP-UE - - vendor.id pci 0x127a -&device.id pci 0x1026 -+device.name HCF 56k PCI Speakerphone Modem - - vendor.id pci 0x127a -&device.id pci 0x1032 -+device.name HCF 56k Modem - - vendor.id pci 0x127a -&device.id pci 0x1033 -+device.name HCF 56k Modem - - vendor.id pci 0x127a -&device.id pci 0x1034 -+device.name HCF 56k Modem - - vendor.id pci 0x127a -&device.id pci 0x1035 -+device.name HCF 56k PCI Speakerphone Modem - - vendor.id pci 0x127a -&device.id pci 0x1036 -+device.name HCF 56k Modem - - vendor.id pci 0x127a -&device.id pci 0x1085 -+device.name HCF 56k Volcano PCI Modem - - vendor.id pci 0x127a -&device.id pci 0x2005 -+device.name HCF 56k Data/Fax Modem - - vendor.id pci 0x127a -&device.id pci 0x2005 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8044 -+subdevice.name 229-DFSV - - vendor.id pci 0x127a -&device.id pci 0x2005 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8045 -+subdevice.name 229-DFSV - - vendor.id pci 0x127a -&device.id pci 0x2005 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8055 -+subdevice.name PBE/Aztech 235W-DFSV - - vendor.id pci 0x127a -&device.id pci 0x2005 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8056 -+subdevice.name 235-DFSV - - vendor.id pci 0x127a -&device.id pci 0x2005 -&subvendor.id pci 0x104d -&subdevice.id pci 0x805a -+subdevice.name Modem - - vendor.id pci 0x127a -&device.id pci 0x2005 -&subvendor.id pci 0x104d -&subdevice.id pci 0x805f -+subdevice.name Modem - - vendor.id pci 0x127a -&device.id pci 0x2005 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8074 -+subdevice.name Modem - - vendor.id pci 0x127a -&device.id pci 0x2013 -+device.name HSF 56k Data/Fax Modem - - vendor.id pci 0x127a -&device.id pci 0x2013 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Modem - - vendor.id pci 0x127a -&device.id pci 0x2013 -&subvendor.id pci 0x1179 -&subdevice.id pci 0xff00 -+subdevice.name Modem - - vendor.id pci 0x127a -&device.id pci 0x2014 -+device.name HSF 56k Data/Fax/Voice Modem - - vendor.id pci 0x127a -&device.id pci 0x2014 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1057 -+subdevice.name Fujitsu Citicorp III - - vendor.id pci 0x127a -&device.id pci 0x2014 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4050 -+subdevice.name MSP3880-U - - vendor.id pci 0x127a -&device.id pci 0x2014 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4055 -+subdevice.name MSP3880-W - - vendor.id pci 0x127a -&device.id pci 0x2015 -+device.name HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - - vendor.id pci 0x127a -&device.id pci 0x2015 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1063 -+subdevice.name Fujitsu - - vendor.id pci 0x127a -&device.id pci 0x2015 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1064 -+subdevice.name Fujitsu - - vendor.id pci 0x127a -&device.id pci 0x2015 -&subvendor.id pci 0x1468 -&subdevice.id pci 0x2015 -+subdevice.name Fujitsu - - vendor.id pci 0x127a -&device.id pci 0x2016 -+device.name HSF 56k Data/Fax/Voice/Spkp Modem - - vendor.id pci 0x127a -&device.id pci 0x2016 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4051 -+subdevice.name MSP3880V-W - - vendor.id pci 0x127a -&device.id pci 0x2016 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4052 -+subdevice.name MSP3880SP-W - - vendor.id pci 0x127a -&device.id pci 0x2016 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4054 -+subdevice.name MSP3880V-U - - vendor.id pci 0x127a -&device.id pci 0x2016 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4056 -+subdevice.name MSP3880SP-U - - vendor.id pci 0x127a -&device.id pci 0x2016 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4057 -+subdevice.name MSP3880SP-A - - vendor.id pci 0x127a -&device.id pci 0x4311 -+device.name Riptide HSF 56k PCI Modem - - vendor.id pci 0x127a -&device.id pci 0x4311 -&subvendor.id pci 0x127a -&subdevice.id pci 0x4311 -+subdevice.name Ring Modular? Riptide HSF RT HP Dom - - vendor.id pci 0x127a -&device.id pci 0x4311 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0210 -+subdevice.name HP-GVC - - vendor.id pci 0x127a -&device.id pci 0x4320 -+device.name Riptide PCI Audio Controller - - vendor.id pci 0x127a -&device.id pci 0x4320 -&subvendor.id pci 0x1235 -&subdevice.id pci 0x4320 -+subdevice.name Riptide PCI Audio Controller - - vendor.id pci 0x127a -&device.id pci 0x4321 -+device.name Riptide HCF 56k PCI Modem - - vendor.id pci 0x127a -&device.id pci 0x4321 -&subvendor.id pci 0x1235 -&subdevice.id pci 0x4321 -+subdevice.name Hewlett Packard DF - - vendor.id pci 0x127a -&device.id pci 0x4321 -&subvendor.id pci 0x1235 -&subdevice.id pci 0x4324 -+subdevice.name Hewlett Packard DF - - vendor.id pci 0x127a -&device.id pci 0x4321 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0210 -+subdevice.name Hewlett Packard DF - - vendor.id pci 0x127a -&device.id pci 0x4321 -&subvendor.id pci 0x144d -&subdevice.id pci 0x2321 -+subdevice.name Riptide - - vendor.id pci 0x127a -&device.id pci 0x4322 -+device.name Riptide PCI Game Controller - - vendor.id pci 0x127a -&device.id pci 0x4322 -&subvendor.id pci 0x1235 -&subdevice.id pci 0x4322 -+subdevice.name Riptide PCI Game Controller - - vendor.id pci 0x127a -&device.id pci 0x8234 -+device.name RapidFire 616X ATM155 Adapter - - vendor.id pci 0x127a -&device.id pci 0x8234 -&subvendor.id pci 0x108d -&subdevice.id pci 0x0022 -+subdevice.name RapidFire 616X ATM155 Adapter - - vendor.id pci 0x127a -&device.id pci 0x8234 -&subvendor.id pci 0x108d -&subdevice.id pci 0x0027 -+subdevice.name RapidFire 616X ATM155 Adapter - - vendor.id pci 0x127b -+vendor.name Pixera Corporation - - vendor.id pci 0x127c -+vendor.name Crosspoint Solutions, Inc. - - vendor.id pci 0x127d -+vendor.name Vela Research - - vendor.id pci 0x127e -+vendor.name Winnov, L.P. - - vendor.id pci 0x127f -+vendor.name Fujifilm - - vendor.id pci 0x1280 -+vendor.name Photoscript Group Ltd. - - vendor.id pci 0x1281 -+vendor.name Yokogawa Electric Corporation - - vendor.id pci 0x1282 -+vendor.name Davicom Semiconductor, Inc. - - vendor.id pci 0x1282 -&device.id pci 0x9009 -+device.name Ethernet 100/10 MBit - - vendor.id pci 0x1282 -&device.id pci 0x9100 -+device.name 21x4x DEC-Tulip compatible 10/100 Ethernet - - vendor.id pci 0x1282 -&device.id pci 0x9102 -+device.name 21x4x DEC-Tulip compatible 10/100 Ethernet - - vendor.id pci 0x1282 -&device.id pci 0x9132 -+device.name Ethernet 100/10 MBit - - vendor.id pci 0x1283 -+vendor.name Integrated Technology Express, Inc. - - vendor.id pci 0x1283 -&device.id pci 0x673a -+device.name IT8330G - - vendor.id pci 0x1283 -&device.id pci 0x8212 -+device.name IT/ITE8212 Dual channel ATA RAID controller (PCI version seems to be IT8212, embedded seems to be ITE8212) - - vendor.id pci 0x1283 -&device.id pci 0x8212 -&subvendor.id pci 0x1283 -&subdevice.id pci 0x0001 -+subdevice.name IT/ITE8212 Dual channel ATA RAID controller - - vendor.id pci 0x1283 -&device.id pci 0x8330 -+device.name IT8330G - - vendor.id pci 0x1283 -&device.id pci 0x8872 -+device.name IT8874F PCI Dual Serial Port Controller - - vendor.id pci 0x1283 -&device.id pci 0x8888 -+device.name IT8888F PCI to ISA Bridge with SMB - - vendor.id pci 0x1283 -&device.id pci 0x8889 -+device.name IT8889F PCI to ISA Bridge - - vendor.id pci 0x1283 -&device.id pci 0xe886 -+device.name IT8330G - - vendor.id pci 0x1284 -+vendor.name Sahara Networks, Inc. - - vendor.id pci 0x1285 -+vendor.name Platform Technologies, Inc. - - vendor.id pci 0x1285 -&device.id pci 0x0100 -+device.name AGOGO sound chip (aka ESS Maestro 1) - - vendor.id pci 0x1286 -+vendor.name Mazet GmbH - - vendor.id pci 0x1287 -+vendor.name M-Pact, Inc. - - vendor.id pci 0x1287 -&device.id pci 0x001e -+device.name LS220D DVD Decoder - - vendor.id pci 0x1287 -&device.id pci 0x001f -+device.name LS220C DVD Decoder - - vendor.id pci 0x1288 -+vendor.name Timestep Corporation - - vendor.id pci 0x1289 -+vendor.name AVC Technology, Inc. - - vendor.id pci 0x128a -+vendor.name Asante Technologies, Inc. - - vendor.id pci 0x128b -+vendor.name Transwitch Corporation - - vendor.id pci 0x128c -+vendor.name Retix Corporation - - vendor.id pci 0x128d -+vendor.name G2 Networks, Inc. - - vendor.id pci 0x128d -&device.id pci 0x0021 -+device.name ATM155 Adapter - - vendor.id pci 0x128e -+vendor.name Hoontech Corporation/Samho Multi Tech Ltd. - - vendor.id pci 0x128e -&device.id pci 0x0008 -+device.name ST128 WSS/SB - - vendor.id pci 0x128e -&device.id pci 0x0009 -+device.name ST128 SAM9407 - - vendor.id pci 0x128e -&device.id pci 0x000a -+device.name ST128 Game Port - - vendor.id pci 0x128e -&device.id pci 0x000b -+device.name ST128 MPU Port - - vendor.id pci 0x128e -&device.id pci 0x000c -+device.name ST128 Ctrl Port - - vendor.id pci 0x128f -+vendor.name Tateno Dennou, Inc. - - vendor.id pci 0x1290 -+vendor.name Sord Computer Corporation - - vendor.id pci 0x1291 -+vendor.name NCS Computer Italia - - vendor.id pci 0x1292 -+vendor.name Tritech Microelectronics Inc - - vendor.id pci 0x1293 -+vendor.name Media Reality Technology - - vendor.id pci 0x1294 -+vendor.name Rhetorex, Inc. - - vendor.id pci 0x1295 -+vendor.name Imagenation Corporation - - vendor.id pci 0x1296 -+vendor.name Kofax Image Products - - vendor.id pci 0x1297 -+vendor.name Holco Enterprise Co, Ltd/Shuttle Computer - - vendor.id pci 0x1298 -+vendor.name Spellcaster Telecommunications Inc. - - vendor.id pci 0x1299 -+vendor.name Knowledge Technology Lab. - - vendor.id pci 0x129a -+vendor.name VMetro, inc. - - vendor.id pci 0x129a -&device.id pci 0x0615 -+device.name PBT-615 PCI-X Bus Analyzer - - vendor.id pci 0x129b -+vendor.name Image Access - - vendor.id pci 0x129c -+vendor.name Jaycor - - vendor.id pci 0x129d -+vendor.name Compcore Multimedia, Inc. - - vendor.id pci 0x129e -+vendor.name Victor Company of Japan, Ltd. - - vendor.id pci 0x129f -+vendor.name OEC Medical Systems, Inc. - - vendor.id pci 0x12a0 -+vendor.name Allen-Bradley Company - - vendor.id pci 0x12a1 -+vendor.name Simpact Associates, Inc. - - vendor.id pci 0x12a2 -+vendor.name Newgen Systems Corporation - - vendor.id pci 0x12a3 -+vendor.name Lucent Technologies - - vendor.id pci 0x12a3 -&device.id pci 0x8105 -+device.name T8105 H100 Digital Switch - - vendor.id pci 0x12a4 -+vendor.name NTT Electronics Technology Company - - vendor.id pci 0x12a5 -+vendor.name Vision Dynamics Ltd. - - vendor.id pci 0x12a6 -+vendor.name Scalable Networks, Inc. - - vendor.id pci 0x12a7 -+vendor.name AMO GmbH - - vendor.id pci 0x12a8 -+vendor.name News Datacom - - vendor.id pci 0x12a9 -+vendor.name Xiotech Corporation - - vendor.id pci 0x12aa -+vendor.name SDL Communications, Inc. - - vendor.id pci 0x12ab -+vendor.name Yuan Yuan Enterprise Co., Ltd. - - vendor.id pci 0x12ab -&device.id pci 0x0002 -+device.name AU8830 [Vortex2] Based Sound Card With A3D Support - - vendor.id pci 0x12ab -&device.id pci 0x3000 -+device.name MPG-200C PCI DVD Decoder Card - - vendor.id pci 0x12ac -+vendor.name Measurex Corporation - - vendor.id pci 0x12ad -+vendor.name Multidata GmbH - - vendor.id pci 0x12ae -+vendor.name Alteon Networks Inc. - - vendor.id pci 0x12ae -&device.id pci 0x0001 -+device.name AceNIC Gigabit Ethernet - - vendor.id pci 0x12ae -&device.id pci 0x0001 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0104 -+subdevice.name Gigabit Ethernet-SX PCI Adapter - - vendor.id pci 0x12ae -&device.id pci 0x0001 -&subvendor.id pci 0x12ae -&subdevice.id pci 0x0001 -+subdevice.name Gigabit Ethernet-SX (Universal) - - vendor.id pci 0x12ae -&device.id pci 0x0001 -&subvendor.id pci 0x1410 -&subdevice.id pci 0x0104 -+subdevice.name Gigabit Ethernet-SX PCI Adapter - - vendor.id pci 0x12ae -&device.id pci 0x0002 -+device.name AceNIC Gigabit Ethernet (Copper) - - vendor.id pci 0x12ae -&device.id pci 0x0002 -&subvendor.id pci 0x10a9 -&subdevice.id pci 0x8002 -+subdevice.name Acenic Gigabit Ethernet - - vendor.id pci 0x12ae -&device.id pci 0x0002 -&subvendor.id pci 0x12ae -&subdevice.id pci 0x0002 -+subdevice.name Gigabit Ethernet-T (3C986-T) - - vendor.id pci 0x12ae -&device.id pci 0x00fa -+device.name Farallon PN9100-T Gigabit Ethernet - - vendor.id pci 0x12af -+vendor.name TDK USA Corp - - vendor.id pci 0x12b0 -+vendor.name Jorge Scientific Corp - - vendor.id pci 0x12b1 -+vendor.name GammaLink - - vendor.id pci 0x12b2 -+vendor.name General Signal Networks - - vendor.id pci 0x12b3 -+vendor.name Inter-Face Co Ltd - - vendor.id pci 0x12b4 -+vendor.name FutureTel Inc - - vendor.id pci 0x12b5 -+vendor.name Granite Systems Inc. - - vendor.id pci 0x12b6 -+vendor.name Natural Microsystems - - vendor.id pci 0x12b7 -+vendor.name Cognex Modular Vision Systems Div. - Acumen Inc. - - vendor.id pci 0x12b8 -+vendor.name Korg - - vendor.id pci 0x12b9 -+vendor.name 3Com Corp, Modem Division (formerly US Robotics) - - vendor.id pci 0x12b9 -&device.id pci 0x1006 -+device.name WinModem - - vendor.id pci 0x12b9 -&device.id pci 0x1006 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x005c -+subdevice.name USR 56k Internal Voice WinModem (Model 3472) - - vendor.id pci 0x12b9 -&device.id pci 0x1006 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x005e -+subdevice.name USR 56k Internal WinModem (Models 662975) - - vendor.id pci 0x12b9 -&device.id pci 0x1006 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x0062 -+subdevice.name USR 56k Internal Voice WinModem (Model 662978) - - vendor.id pci 0x12b9 -&device.id pci 0x1006 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x0068 -+subdevice.name USR 56k Internal Voice WinModem (Model 5690) - - vendor.id pci 0x12b9 -&device.id pci 0x1006 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x007a -+subdevice.name USR 56k Internal Voice WinModem (Model 662974) - - vendor.id pci 0x12b9 -&device.id pci 0x1006 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x007f -+subdevice.name USR 56k Internal WinModem (Models 5698, 5699) - - vendor.id pci 0x12b9 -&device.id pci 0x1006 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x0080 -+subdevice.name USR 56k Internal WinModem (Models 2975, 3528) - - vendor.id pci 0x12b9 -&device.id pci 0x1006 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x0081 -+subdevice.name USR 56k Internal Voice WinModem (Models 2974, 3529) - - vendor.id pci 0x12b9 -&device.id pci 0x1006 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x0091 -+subdevice.name USR 56k Internal Voice WinModem (Model 2978) - - vendor.id pci 0x12b9 -&device.id pci 0x1007 -+device.name USR 56k Internal WinModem - - vendor.id pci 0x12b9 -&device.id pci 0x1007 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x00a3 -+subdevice.name USR 56k Internal WinModem (Model 3595) - - vendor.id pci 0x12b9 -&device.id pci 0x1008 -+device.name 56K FaxModem Model 5610 - - vendor.id pci 0x12b9 -&device.id pci 0x1008 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x00a2 -+subdevice.name USR 56k Internal FAX Modem (Model 2977) - - vendor.id pci 0x12b9 -&device.id pci 0x1008 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x00aa -+subdevice.name USR 56k Internal Voice Modem (Model 2976) - - vendor.id pci 0x12b9 -&device.id pci 0x1008 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x00ab -+subdevice.name USR 56k Internal Voice Modem (Model 5609) - - vendor.id pci 0x12b9 -&device.id pci 0x1008 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x00ac -+subdevice.name USR 56k Internal Voice Modem (Model 3298) - - vendor.id pci 0x12b9 -&device.id pci 0x1008 -&subvendor.id pci 0x12b9 -&subdevice.id pci 0x00ad -+subdevice.name USR 56k Internal FAX Modem (Model 5610) - - vendor.id pci 0x12ba -+vendor.name BittWare, Inc. - - vendor.id pci 0x12bb -+vendor.name Nippon Unisoft Corporation - - vendor.id pci 0x12bc -+vendor.name Array Microsystems - - vendor.id pci 0x12bd -+vendor.name Computerm Corp. - - vendor.id pci 0x12be -+vendor.name Anchor Chips Inc. - - vendor.id pci 0x12be -&device.id pci 0x3041 -+device.name AN3041Q CO-MEM - - vendor.id pci 0x12be -&device.id pci 0x3042 -+device.name AN3042Q CO-MEM Lite - - vendor.id pci 0x12be -&device.id pci 0x3042 -&subvendor.id pci 0x12be -&subdevice.id pci 0x3042 -+subdevice.name Anchor Chips Lite Evaluation Board - - vendor.id pci 0x12bf -+vendor.name Fujifilm Microdevices - - vendor.id pci 0x12c0 -+vendor.name Infimed - - vendor.id pci 0x12c1 -+vendor.name GMM Research Corp - - vendor.id pci 0x12c2 -+vendor.name Mentec Limited - - vendor.id pci 0x12c3 -+vendor.name Holtek Microelectronics Inc - - vendor.id pci 0x12c3 -&device.id pci 0x0058 -+device.name PCI NE2K Ethernet - - vendor.id pci 0x12c3 -&device.id pci 0x5598 -+device.name PCI NE2K Ethernet - - vendor.id pci 0x12c4 -+vendor.name Connect Tech Inc - - vendor.id pci 0x12c5 -+vendor.name Picture Elements Incorporated - - vendor.id pci 0x12c5 -&device.id pci 0x007e -+device.name Imaging/Scanning Subsystem Engine - - vendor.id pci 0x12c5 -&device.id pci 0x007f -+device.name Imaging/Scanning Subsystem Engine - - vendor.id pci 0x12c5 -&device.id pci 0x0081 -+device.name PCIVST [Grayscale Thresholding Engine] - - vendor.id pci 0x12c5 -&device.id pci 0x0085 -+device.name Video Simulator/Sender - - vendor.id pci 0x12c5 -&device.id pci 0x0086 -+device.name THR2 Multi-scale Thresholder - - vendor.id pci 0x12c6 -+vendor.name Mitani Corporation - - vendor.id pci 0x12c7 -+vendor.name Dialogic Corp - - vendor.id pci 0x12c8 -+vendor.name G Force Co, Ltd - - vendor.id pci 0x12c9 -+vendor.name Gigi Operations - - vendor.id pci 0x12ca -+vendor.name Integrated Computing Engines - - vendor.id pci 0x12cb -+vendor.name Antex Electronics Corporation - - vendor.id pci 0x12cc -+vendor.name Pluto Technologies International - - vendor.id pci 0x12cd -+vendor.name Aims Lab - - vendor.id pci 0x12ce -+vendor.name Netspeed Inc. - - vendor.id pci 0x12cf -+vendor.name Prophet Systems, Inc. - - vendor.id pci 0x12d0 -+vendor.name GDE Systems, Inc. - - vendor.id pci 0x12d1 -+vendor.name PSITech - - vendor.id pci 0x12d2 -+vendor.name NVidia / SGS Thomson (Joint Venture) - - vendor.id pci 0x12d2 -&device.id pci 0x0008 -+device.name NV1 - - vendor.id pci 0x12d2 -&device.id pci 0x0009 -+device.name DAC64 - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -+device.name Riva128 - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x1048 -&subdevice.id pci 0x0c10 -+subdevice.name VICTORY Erazor - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x107b -&subdevice.id pci 0x8030 -+subdevice.name STB Velocity 128 - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0350 -+subdevice.name Viper V330 - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x1092 -+subdevice.name Viper V330 - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x1b1b -+subdevice.name STB Velocity 128 - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x1b1d -+subdevice.name STB Velocity 128 - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x1b1e -+subdevice.name STB Velocity 128, PAL TV-Out - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x1b20 -+subdevice.name STB Velocity 128 Sapphire - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x1b21 -+subdevice.name STB Velocity 128 - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x1b22 -+subdevice.name STB Velocity 128 AGP, NTSC TV-Out - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x1b23 -+subdevice.name STB Velocity 128 AGP, PAL TV-Out - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x1b27 -+subdevice.name STB Velocity 128 DVD - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x1b88 -+subdevice.name MVP Pro 128 - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x222a -+subdevice.name STB Velocity 128 AGP - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x2230 -+subdevice.name STB Velocity 128 - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x2232 -+subdevice.name STB Velocity 128 - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x2235 -+subdevice.name STB Velocity 128 AGP - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -&subvendor.id pci 0x2a15 -&subdevice.id pci 0x54a3 -+subdevice.name 3DVision-SAGP / 3DexPlorer 3000 - - vendor.id pci 0x12d2 -&device.id pci 0x0019 -+device.name Riva128ZX - - vendor.id pci 0x12d2 -&device.id pci 0x0020 -+device.name TNT - - vendor.id pci 0x12d2 -&device.id pci 0x0028 -+device.name TNT2 - - vendor.id pci 0x12d2 -&device.id pci 0x0029 -+device.name UTNT2 - - vendor.id pci 0x12d2 -&device.id pci 0x002c -+device.name VTNT2 - - vendor.id pci 0x12d2 -&device.id pci 0x00a0 -+device.name ITNT2 - - vendor.id pci 0x12d3 -+vendor.name Vingmed Sound A/S - - vendor.id pci 0x12d4 -+vendor.name Ulticom (Formerly DGM&S) - - vendor.id pci 0x12d4 -&device.id pci 0x0200 -+device.name T1 Card - - vendor.id pci 0x12d5 -+vendor.name Equator Technologies Inc - - vendor.id pci 0x12d6 -+vendor.name Analogic Corp - - vendor.id pci 0x12d7 -+vendor.name Biotronic SRL - - vendor.id pci 0x12d8 -+vendor.name Pericom Semiconductor - - vendor.id pci 0x12d9 -+vendor.name Aculab PLC - - vendor.id pci 0x12d9 -&device.id pci 0x0002 -+device.name PCI Prosody - - vendor.id pci 0x12d9 -&device.id pci 0x0004 -+device.name cPCI Prosody - - vendor.id pci 0x12d9 -&device.id pci 0x0005 -+device.name Aculab E1/T1 PCI card - - vendor.id pci 0x12da -+vendor.name True Time Inc. - - vendor.id pci 0x12db -+vendor.name Annapolis Micro Systems, Inc - - vendor.id pci 0x12dc -+vendor.name Symicron Computer Communication Ltd. - - vendor.id pci 0x12dd -+vendor.name Management Graphics - - vendor.id pci 0x12de -+vendor.name Rainbow Technologies - - vendor.id pci 0x12de -&device.id pci 0x0200 -+device.name CryptoSwift CS200 - - vendor.id pci 0x12df -+vendor.name SBS Technologies Inc - - vendor.id pci 0x12e0 -+vendor.name Chase Research - - vendor.id pci 0x12e0 -&device.id pci 0x0010 -+device.name ST16C654 Quad UART - - vendor.id pci 0x12e0 -&device.id pci 0x0020 -+device.name ST16C654 Quad UART - - vendor.id pci 0x12e0 -&device.id pci 0x0030 -+device.name ST16C654 Quad UART - - vendor.id pci 0x12e1 -+vendor.name Nintendo Co, Ltd - - vendor.id pci 0x12e2 -+vendor.name Datum Inc. Bancomm-Timing Division - - vendor.id pci 0x12e3 -+vendor.name Imation Corp - Medical Imaging Systems - - vendor.id pci 0x12e4 -+vendor.name Brooktrout Technology Inc - - vendor.id pci 0x12e5 -+vendor.name Apex Semiconductor Inc - - vendor.id pci 0x12e6 -+vendor.name Cirel Systems - - vendor.id pci 0x12e7 -+vendor.name Sunsgroup Corporation - - vendor.id pci 0x12e8 -+vendor.name Crisc Corp - - vendor.id pci 0x12e9 -+vendor.name GE Spacenet - - vendor.id pci 0x12ea -+vendor.name Zuken - - vendor.id pci 0x12eb -+vendor.name Aureal Semiconductor - - vendor.id pci 0x12eb -&device.id pci 0x0001 -+device.name Vortex 1 - - vendor.id pci 0x12eb -&device.id pci 0x0001 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8036 -+subdevice.name AU8820 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0001 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x2000 -+subdevice.name Sonic Impact A3D - - vendor.id pci 0x12eb -&device.id pci 0x0001 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x2100 -+subdevice.name Sonic Impact A3D - - vendor.id pci 0x12eb -&device.id pci 0x0001 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x2110 -+subdevice.name Sonic Impact A3D - - vendor.id pci 0x12eb -&device.id pci 0x0001 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x2200 -+subdevice.name Sonic Impact A3D - - vendor.id pci 0x12eb -&device.id pci 0x0001 -&subvendor.id pci 0x122d -&subdevice.id pci 0x1002 -+subdevice.name AU8820 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0001 -&subvendor.id pci 0x12eb -&subdevice.id pci 0x0001 -+subdevice.name AU8820 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0001 -&subvendor.id pci 0x5053 -&subdevice.id pci 0x3355 -+subdevice.name Montego - - vendor.id pci 0x12eb -&device.id pci 0x0002 -+device.name Vortex 2 - - vendor.id pci 0x12eb -&device.id pci 0x0002 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8049 -+subdevice.name AU8830 Vortex 3D Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0002 -&subvendor.id pci 0x104d -&subdevice.id pci 0x807b -+subdevice.name AU8830 Vortex 3D Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0002 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x3000 -+subdevice.name Monster Sound II - - vendor.id pci 0x12eb -&device.id pci 0x0002 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x3001 -+subdevice.name Monster Sound II - - vendor.id pci 0x12eb -&device.id pci 0x0002 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x3002 -+subdevice.name Monster Sound II - - vendor.id pci 0x12eb -&device.id pci 0x0002 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x3003 -+subdevice.name Monster Sound II - - vendor.id pci 0x12eb -&device.id pci 0x0002 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x3004 -+subdevice.name Monster Sound II - - vendor.id pci 0x12eb -&device.id pci 0x0002 -&subvendor.id pci 0x12eb -&subdevice.id pci 0x0001 -+subdevice.name AU8830 Vortex 3D Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0002 -&subvendor.id pci 0x12eb -&subdevice.id pci 0x0002 -+subdevice.name AU8830 Vortex 3D Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0002 -&subvendor.id pci 0x12eb -&subdevice.id pci 0x0088 -+subdevice.name AU8830 Vortex 3D Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0002 -&subvendor.id pci 0x144d -&subdevice.id pci 0x3510 -+subdevice.name AU8830 Vortex 3D Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0002 -&subvendor.id pci 0x5053 -&subdevice.id pci 0x3356 -+subdevice.name Montego II - - vendor.id pci 0x12eb -&device.id pci 0x0003 -+device.name AU8810 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0003 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8049 -+subdevice.name AU8810 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0003 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8077 -+subdevice.name AU8810 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0003 -&subvendor.id pci 0x109f -&subdevice.id pci 0x1000 -+subdevice.name AU8810 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0003 -&subvendor.id pci 0x12eb -&subdevice.id pci 0x0003 -+subdevice.name AU8810 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0003 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x6780 -+subdevice.name AU8810 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0003 -&subvendor.id pci 0x14a4 -&subdevice.id pci 0x2073 -+subdevice.name AU8810 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0003 -&subvendor.id pci 0x14a4 -&subdevice.id pci 0x2091 -+subdevice.name AU8810 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0003 -&subvendor.id pci 0x14a4 -&subdevice.id pci 0x2104 -+subdevice.name AU8810 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x0003 -&subvendor.id pci 0x14a4 -&subdevice.id pci 0x2106 -+subdevice.name AU8810 Vortex Digital Audio Processor - - vendor.id pci 0x12eb -&device.id pci 0x8803 -+device.name Vortex 56k Software Modem - - vendor.id pci 0x12eb -&device.id pci 0x8803 -&subvendor.id pci 0x12eb -&subdevice.id pci 0x8803 -+subdevice.name Vortex 56k Software Modem - - vendor.id pci 0x12ec -+vendor.name 3A International, Inc. - - vendor.id pci 0x12ed -+vendor.name Optivision Inc. - - vendor.id pci 0x12ee -+vendor.name Orange Micro - - vendor.id pci 0x12ef -+vendor.name Vienna Systems - - vendor.id pci 0x12f0 -+vendor.name Pentek - - vendor.id pci 0x12f1 -+vendor.name Sorenson Vision Inc - - vendor.id pci 0x12f2 -+vendor.name Gammagraphx, Inc. - - vendor.id pci 0x12f3 -+vendor.name Radstone Technology - - vendor.id pci 0x12f4 -+vendor.name Megatel - - vendor.id pci 0x12f5 -+vendor.name Forks - - vendor.id pci 0x12f6 -+vendor.name Dawson France - - vendor.id pci 0x12f7 -+vendor.name Cognex - - vendor.id pci 0x12f8 -+vendor.name Electronic Design GmbH - - vendor.id pci 0x12f8 -&device.id pci 0x0002 -+device.name VideoMaker - - vendor.id pci 0x12f9 -+vendor.name Four Fold Ltd - - vendor.id pci 0x12fb -+vendor.name Spectrum Signal Processing - - vendor.id pci 0x12fc -+vendor.name Capital Equipment Corp - - vendor.id pci 0x12fd -+vendor.name I2S - - vendor.id pci 0x12fe -+vendor.name ESD Electronic System Design GmbH - - vendor.id pci 0x12ff -+vendor.name Lexicon - - vendor.id pci 0x1300 -+vendor.name Harman International Industries Inc - - vendor.id pci 0x1302 -+vendor.name Computer Sciences Corp - - vendor.id pci 0x1303 -+vendor.name Innovative Integration - - vendor.id pci 0x1304 -+vendor.name Juniper Networks - - vendor.id pci 0x1305 -+vendor.name Netphone, Inc - - vendor.id pci 0x1306 -+vendor.name Duet Technologies - - vendor.id pci 0x1307 -+vendor.name Measurement Computing - - vendor.id pci 0x1307 -&device.id pci 0x0001 -+device.name PCI-DAS1602/16 - - vendor.id pci 0x1307 -&device.id pci 0x000b -+device.name PCI-DIO48H - - vendor.id pci 0x1307 -&device.id pci 0x000c -+device.name PCI-PDISO8 - - vendor.id pci 0x1307 -&device.id pci 0x000d -+device.name PCI-PDISO16 - - vendor.id pci 0x1307 -&device.id pci 0x000f -+device.name PCI-DAS1200 - - vendor.id pci 0x1307 -&device.id pci 0x0010 -+device.name PCI-DAS1602/12 - - vendor.id pci 0x1307 -&device.id pci 0x0014 -+device.name PCI-DIO24H - - vendor.id pci 0x1307 -&device.id pci 0x0015 -+device.name PCI-DIO24H/CTR3 - - vendor.id pci 0x1307 -&device.id pci 0x0016 -+device.name PCI-DIO48H/CTR15 - - vendor.id pci 0x1307 -&device.id pci 0x0017 -+device.name PCI-DIO96H - - vendor.id pci 0x1307 -&device.id pci 0x0018 -+device.name PCI-CTR05 - - vendor.id pci 0x1307 -&device.id pci 0x0019 -+device.name PCI-DAS1200/JR - - vendor.id pci 0x1307 -&device.id pci 0x001a -+device.name PCI-DAS1001 - - vendor.id pci 0x1307 -&device.id pci 0x001b -+device.name PCI-DAS1002 - - vendor.id pci 0x1307 -&device.id pci 0x001c -+device.name PCI-DAS1602JR/16 - - vendor.id pci 0x1307 -&device.id pci 0x001d -+device.name PCI-DAS6402/16 - - vendor.id pci 0x1307 -&device.id pci 0x001e -+device.name PCI-DAS6402/12 - - vendor.id pci 0x1307 -&device.id pci 0x001f -+device.name PCI-DAS16/M1 - - vendor.id pci 0x1307 -&device.id pci 0x0020 -+device.name PCI-DDA02/12 - - vendor.id pci 0x1307 -&device.id pci 0x0021 -+device.name PCI-DDA04/12 - - vendor.id pci 0x1307 -&device.id pci 0x0022 -+device.name PCI-DDA08/12 - - vendor.id pci 0x1307 -&device.id pci 0x0023 -+device.name PCI-DDA02/16 - - vendor.id pci 0x1307 -&device.id pci 0x0024 -+device.name PCI-DDA04/16 - - vendor.id pci 0x1307 -&device.id pci 0x0025 -+device.name PCI-DDA08/16 - - vendor.id pci 0x1307 -&device.id pci 0x0026 -+device.name PCI-DAC04/12-HS - - vendor.id pci 0x1307 -&device.id pci 0x0027 -+device.name PCI-DAC04/16-HS - - vendor.id pci 0x1307 -&device.id pci 0x0028 -+device.name PCI-DIO24 - - vendor.id pci 0x1307 -&device.id pci 0x0029 -+device.name PCI-DAS08 - - vendor.id pci 0x1307 -&device.id pci 0x002c -+device.name PCI-INT32 - - vendor.id pci 0x1307 -&device.id pci 0x0033 -+device.name PCI-DUAL-AC5 - - vendor.id pci 0x1307 -&device.id pci 0x0034 -+device.name PCI-DAS-TC - - vendor.id pci 0x1307 -&device.id pci 0x0035 -+device.name PCI-DAS64/M1/16 - - vendor.id pci 0x1307 -&device.id pci 0x0036 -+device.name PCI-DAS64/M2/16 - - vendor.id pci 0x1307 -&device.id pci 0x0037 -+device.name PCI-DAS64/M3/16 - - vendor.id pci 0x1307 -&device.id pci 0x004c -+device.name PCI-DAS1000 - - vendor.id pci 0x1307 -&device.id pci 0x004d -+device.name PCI-QUAD04 - - vendor.id pci 0x1307 -&device.id pci 0x0052 -+device.name PCI-DAS4020/12 - - vendor.id pci 0x1307 -&device.id pci 0x005e -+device.name PCI-DAS6025 - - vendor.id pci 0x1308 -+vendor.name Jato Technologies Inc. - - vendor.id pci 0x1308 -&device.id pci 0x0001 -+device.name NetCelerator Adapter - - vendor.id pci 0x1308 -&device.id pci 0x0001 -&subvendor.id pci 0x1308 -&subdevice.id pci 0x0001 -+subdevice.name NetCelerator Adapter - - vendor.id pci 0x1309 -+vendor.name AB Semiconductor Ltd - - vendor.id pci 0x130a -+vendor.name Mitsubishi Electric Microcomputer - - vendor.id pci 0x130b -+vendor.name Colorgraphic Communications Corp - - vendor.id pci 0x130c -+vendor.name Ambex Technologies, Inc - - vendor.id pci 0x130d -+vendor.name Accelerix Inc - - vendor.id pci 0x130e -+vendor.name Yamatake-Honeywell Co. Ltd - - vendor.id pci 0x130f -+vendor.name Advanet Inc - - vendor.id pci 0x1310 -+vendor.name Gespac - - vendor.id pci 0x1311 -+vendor.name Videoserver, Inc - - vendor.id pci 0x1312 -+vendor.name Acuity Imaging, Inc - - vendor.id pci 0x1313 -+vendor.name Yaskawa Electric Co. - - vendor.id pci 0x1316 -+vendor.name Teradyne Inc - - vendor.id pci 0x1317 -+vendor.name Linksys - - vendor.id pci 0x1317 -&device.id pci 0x0981 -+device.name 21x4x DEC-Tulip compatible 10/100 Ethernet - - vendor.id pci 0x1317 -&device.id pci 0x0985 -+device.name NC100 Network Everywhere Fast Ethernet 10/100 - - vendor.id pci 0x1317 -&device.id pci 0x1985 -+device.name 21x4x DEC-Tulip compatible 10/100 Ethernet - - vendor.id pci 0x1317 -&device.id pci 0x2850 -+device.name HSP MicroModem 56 - - vendor.id pci 0x1317 -&device.id pci 0x8201 -+device.name ADMtek ADM8211 802.11b Wireless Interface - - vendor.id pci 0x1317 -&device.id pci 0x8201 -&subvendor.id pci 0x10b8 -&subdevice.id pci 0x2635 -+subdevice.name SMC2635W 802.11b (11Mbps) wireless lan pcmcia (cardbus) card - - vendor.id pci 0x1317 -&device.id pci 0x8201 -&subvendor.id pci 0x1317 -&subdevice.id pci 0x8201 -+subdevice.name SMC2635W 802.11b (11mbps) wireless lan pcmcia (cardbus) card - - vendor.id pci 0x1317 -&device.id pci 0x8211 -+device.name ADMtek ADM8211 802.11b Wireless Interface - - vendor.id pci 0x1317 -&device.id pci 0x9511 -+device.name 21x4x DEC-Tulip compatible 10/100 Ethernet - - vendor.id pci 0x1318 -+vendor.name Packet Engines Inc. - - vendor.id pci 0x1318 -&device.id pci 0x0911 -+device.name GNIC-II PCI Gigabit Ethernet [Hamachi] - - vendor.id pci 0x1319 -+vendor.name Fortemedia, Inc - - vendor.id pci 0x1319 -&device.id pci 0x0801 -+device.name Xwave QS3000A [FM801] - - vendor.id pci 0x1319 -&device.id pci 0x0802 -+device.name Xwave QS3000A [FM801 game port] - - vendor.id pci 0x1319 -&device.id pci 0x1000 -+device.name FM801 PCI Audio - - vendor.id pci 0x1319 -&device.id pci 0x1001 -+device.name FM801 PCI Joystick - - vendor.id pci 0x131a -+vendor.name Finisar Corp. - - vendor.id pci 0x131c -+vendor.name Nippon Electro-Sensory Devices Corp - - vendor.id pci 0x131d -+vendor.name Sysmic, Inc. - - vendor.id pci 0x131e -+vendor.name Xinex Networks Inc - - vendor.id pci 0x131f -+vendor.name Siig Inc - - vendor.id pci 0x131f -&device.id pci 0x1000 -+device.name CyberSerial (1-port) 16550 - - vendor.id pci 0x131f -&device.id pci 0x1001 -+device.name CyberSerial (1-port) 16650 - - vendor.id pci 0x131f -&device.id pci 0x1002 -+device.name CyberSerial (1-port) 16850 - - vendor.id pci 0x131f -&device.id pci 0x1010 -+device.name Duet 1S(16550)+1P - - vendor.id pci 0x131f -&device.id pci 0x1011 -+device.name Duet 1S(16650)+1P - - vendor.id pci 0x131f -&device.id pci 0x1012 -+device.name Duet 1S(16850)+1P - - vendor.id pci 0x131f -&device.id pci 0x1020 -+device.name CyberParallel (1-port) - - vendor.id pci 0x131f -&device.id pci 0x1021 -+device.name CyberParallel (2-port) - - vendor.id pci 0x131f -&device.id pci 0x1030 -+device.name CyberSerial (2-port) 16550 - - vendor.id pci 0x131f -&device.id pci 0x1031 -+device.name CyberSerial (2-port) 16650 - - vendor.id pci 0x131f -&device.id pci 0x1032 -+device.name CyberSerial (2-port) 16850 - - vendor.id pci 0x131f -&device.id pci 0x1034 -+device.name Trio 2S(16550)+1P - - vendor.id pci 0x131f -&device.id pci 0x1035 -+device.name Trio 2S(16650)+1P - - vendor.id pci 0x131f -&device.id pci 0x1036 -+device.name Trio 2S(16850)+1P - - vendor.id pci 0x131f -&device.id pci 0x1050 -+device.name CyberSerial (4-port) 16550 - - vendor.id pci 0x131f -&device.id pci 0x1051 -+device.name CyberSerial (4-port) 16650 - - vendor.id pci 0x131f -&device.id pci 0x1052 -+device.name CyberSerial (4-port) 16850 - - vendor.id pci 0x131f -&device.id pci 0x2000 -+device.name CyberSerial (1-port) 16550 - - vendor.id pci 0x131f -&device.id pci 0x2001 -+device.name CyberSerial (1-port) 16650 - - vendor.id pci 0x131f -&device.id pci 0x2002 -+device.name CyberSerial (1-port) 16850 - - vendor.id pci 0x131f -&device.id pci 0x2010 -+device.name Duet 1S(16550)+1P - - vendor.id pci 0x131f -&device.id pci 0x2011 -+device.name Duet 1S(16650)+1P - - vendor.id pci 0x131f -&device.id pci 0x2012 -+device.name Duet 1S(16850)+1P - - vendor.id pci 0x131f -&device.id pci 0x2020 -+device.name CyberParallel (1-port) - - vendor.id pci 0x131f -&device.id pci 0x2021 -+device.name CyberParallel (2-port) - - vendor.id pci 0x131f -&device.id pci 0x2030 -+device.name CyberSerial (2-port) 16550 - - vendor.id pci 0x131f -&device.id pci 0x2030 -&subvendor.id pci 0x131f -&subdevice.id pci 0x2030 -+subdevice.name PCI Serial Card - - vendor.id pci 0x131f -&device.id pci 0x2031 -+device.name CyberSerial (2-port) 16650 - - vendor.id pci 0x131f -&device.id pci 0x2032 -+device.name CyberSerial (2-port) 16850 - - vendor.id pci 0x131f -&device.id pci 0x2040 -+device.name Trio 1S(16550)+2P - - vendor.id pci 0x131f -&device.id pci 0x2041 -+device.name Trio 1S(16650)+2P - - vendor.id pci 0x131f -&device.id pci 0x2042 -+device.name Trio 1S(16850)+2P - - vendor.id pci 0x131f -&device.id pci 0x2050 -+device.name CyberSerial (4-port) 16550 - - vendor.id pci 0x131f -&device.id pci 0x2051 -+device.name CyberSerial (4-port) 16650 - - vendor.id pci 0x131f -&device.id pci 0x2052 -+device.name CyberSerial (4-port) 16850 - - vendor.id pci 0x131f -&device.id pci 0x2060 -+device.name Trio 2S(16550)+1P - - vendor.id pci 0x131f -&device.id pci 0x2061 -+device.name Trio 2S(16650)+1P - - vendor.id pci 0x131f -&device.id pci 0x2062 -+device.name Trio 2S(16850)+1P - - vendor.id pci 0x131f -&device.id pci 0x2081 -+device.name CyberSerial (8-port) ST16654 - - vendor.id pci 0x1320 -+vendor.name Crypto AG - - vendor.id pci 0x1321 -+vendor.name Arcobel Graphics BV - - vendor.id pci 0x1322 -+vendor.name MTT Co., Ltd - - vendor.id pci 0x1323 -+vendor.name Dome Inc - - vendor.id pci 0x1324 -+vendor.name Sphere Communications - - vendor.id pci 0x1325 -+vendor.name Salix Technologies, Inc - - vendor.id pci 0x1326 -+vendor.name Seachange international - - vendor.id pci 0x1327 -+vendor.name Voss scientific - - vendor.id pci 0x1328 -+vendor.name quadrant international - - vendor.id pci 0x1329 -+vendor.name Productivity Enhancement - - vendor.id pci 0x132a -+vendor.name Microcom Inc. - - vendor.id pci 0x132b -+vendor.name Broadband Technologies - - vendor.id pci 0x132c -+vendor.name Micrel Inc - - vendor.id pci 0x132d -+vendor.name Integrated Silicon Solution, Inc. - - vendor.id pci 0x1330 -+vendor.name MMC Networks - - vendor.id pci 0x1331 -+vendor.name Radisys Corp. - - vendor.id pci 0x1331 -&device.id pci 0x0030 -+device.name ENP-2611 - - vendor.id pci 0x1331 -&device.id pci 0x8200 -+device.name 82600 Host Bridge - - vendor.id pci 0x1331 -&device.id pci 0x8201 -+device.name 82600 IDE - - vendor.id pci 0x1331 -&device.id pci 0x8202 -+device.name 82600 USB - - vendor.id pci 0x1331 -&device.id pci 0x8210 -+device.name 82600 PCI Bridge - - vendor.id pci 0x1332 -+vendor.name Micro Memory - - vendor.id pci 0x1332 -&device.id pci 0x5415 -+device.name MM-5415CN PCI Memory Module with Battery Backup - - vendor.id pci 0x1332 -&device.id pci 0x5425 -+device.name MM-5425CN PCI 64/66 Memory Module with Battery Backup - - vendor.id pci 0x1334 -+vendor.name Redcreek Communications, Inc - - vendor.id pci 0x1335 -+vendor.name Videomail, Inc - - vendor.id pci 0x1337 -+vendor.name Third Planet Publishing - - vendor.id pci 0x1338 -+vendor.name BT Electronics - - vendor.id pci 0x133a -+vendor.name Vtel Corp - - vendor.id pci 0x133b -+vendor.name Softcom Microsystems - - vendor.id pci 0x133c -+vendor.name Holontech Corp - - vendor.id pci 0x133d -+vendor.name SS Technologies - - vendor.id pci 0x133e -+vendor.name Virtual Computer Corp - - vendor.id pci 0x133f -+vendor.name SCM Microsystems - - vendor.id pci 0x1340 -+vendor.name Atalla Corp - - vendor.id pci 0x1341 -+vendor.name Kyoto Microcomputer Co - - vendor.id pci 0x1342 -+vendor.name Promax Systems Inc - - vendor.id pci 0x1343 -+vendor.name Phylon Communications Inc - - vendor.id pci 0x1344 -+vendor.name Crucial Technology - - vendor.id pci 0x1345 -+vendor.name Arescom Inc - - vendor.id pci 0x1347 -+vendor.name Odetics - - vendor.id pci 0x1349 -+vendor.name Sumitomo Electric Industries, Ltd. - - vendor.id pci 0x134a -+vendor.name DTC Technology Corp. - - vendor.id pci 0x134a -&device.id pci 0x0001 -+device.name Domex 536 - - vendor.id pci 0x134a -&device.id pci 0x0002 -+device.name Domex DMX3194UP SCSI Adapter - - vendor.id pci 0x134b -+vendor.name ARK Research Corp. - - vendor.id pci 0x134c -+vendor.name Chori Joho System Co. Ltd - - vendor.id pci 0x134d -+vendor.name PCTel Inc - - vendor.id pci 0x134d -&device.id pci 0x2189 -+device.name HSP56 MicroModem - - vendor.id pci 0x134d -&device.id pci 0x2486 -+device.name 2304WT V.92 MDC Modem - - vendor.id pci 0x134d -&device.id pci 0x7890 -+device.name HSP MicroModem 56 - - vendor.id pci 0x134d -&device.id pci 0x7890 -&subvendor.id pci 0x134d -&subdevice.id pci 0x0001 -+subdevice.name PCT789 adapter - - vendor.id pci 0x134d -&device.id pci 0x7891 -+device.name HSP MicroModem 56 - - vendor.id pci 0x134d -&device.id pci 0x7891 -&subvendor.id pci 0x134d -&subdevice.id pci 0x0001 -+subdevice.name HSP MicroModem 56 - - vendor.id pci 0x134d -&device.id pci 0x7892 -+device.name HSP MicroModem 56 - - vendor.id pci 0x134d -&device.id pci 0x7893 -+device.name HSP MicroModem 56 - - vendor.id pci 0x134d -&device.id pci 0x7894 -+device.name HSP MicroModem 56 - - vendor.id pci 0x134d -&device.id pci 0x7895 -+device.name HSP MicroModem 56 - - vendor.id pci 0x134d -&device.id pci 0x7896 -+device.name HSP MicroModem 56 - - vendor.id pci 0x134d -&device.id pci 0x7897 -+device.name HSP MicroModem 56 - - vendor.id pci 0x134e -+vendor.name CSTI - - vendor.id pci 0x134f -+vendor.name Algo System Co Ltd - - vendor.id pci 0x1350 -+vendor.name Systec Co. Ltd - - vendor.id pci 0x1351 -+vendor.name Sonix Inc - - vendor.id pci 0x1353 -+vendor.name Thales Idatys - - vendor.id pci 0x1353 -&device.id pci 0x0002 -+device.name Proserver - - vendor.id pci 0x1353 -&device.id pci 0x0003 -+device.name PCI-FUT - - vendor.id pci 0x1353 -&device.id pci 0x0004 -+device.name PCI-S0 - - vendor.id pci 0x1353 -&device.id pci 0x0005 -+device.name PCI-FUT-S0 - - vendor.id pci 0x1354 -+vendor.name Dwave System Inc - - vendor.id pci 0x1355 -+vendor.name Kratos Analytical Ltd - - vendor.id pci 0x1356 -+vendor.name The Logical Co - - vendor.id pci 0x1359 -+vendor.name Prisa Networks - - vendor.id pci 0x135a -+vendor.name Brain Boxes - - vendor.id pci 0x135b -+vendor.name Giganet Inc - - vendor.id pci 0x135c -+vendor.name Quatech Inc - - vendor.id pci 0x135c -&device.id pci 0x0010 -+device.name QSC-100 - - vendor.id pci 0x135c -&device.id pci 0x0020 -+device.name DSC-100 - - vendor.id pci 0x135c -&device.id pci 0x0030 -+device.name DSC-200/300 - - vendor.id pci 0x135c -&device.id pci 0x0040 -+device.name QSC-200/300 - - vendor.id pci 0x135c -&device.id pci 0x0050 -+device.name ESC-100D - - vendor.id pci 0x135c -&device.id pci 0x0060 -+device.name ESC-100M - - vendor.id pci 0x135c -&device.id pci 0x00f0 -+device.name MPAC-100 Syncronous Serial Card (Zilog 85230) - - vendor.id pci 0x135c -&device.id pci 0x0170 -+device.name QSCLP-100 - - vendor.id pci 0x135c -&device.id pci 0x0180 -+device.name DSCLP-100 - - vendor.id pci 0x135c -&device.id pci 0x0190 -+device.name SSCLP-100 - - vendor.id pci 0x135c -&device.id pci 0x01a0 -+device.name QSCLP-200/300 - - vendor.id pci 0x135c -&device.id pci 0x01b0 -+device.name DSCLP-200/300 - - vendor.id pci 0x135c -&device.id pci 0x01c0 -+device.name SSCLP-200/300 - - vendor.id pci 0x135d -+vendor.name ABB Network Partner AB - - vendor.id pci 0x135e -+vendor.name Sealevel Systems Inc - - vendor.id pci 0x135e -&device.id pci 0x5101 -+device.name Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32) - - vendor.id pci 0x135e -&device.id pci 0x7101 -+device.name Single Port RS-232/422/485/530 - - vendor.id pci 0x135e -&device.id pci 0x7201 -+device.name Dual Port RS-232/422/485 Interface - - vendor.id pci 0x135e -&device.id pci 0x7202 -+device.name Dual Port RS-232 Interface - - vendor.id pci 0x135e -&device.id pci 0x7401 -+device.name Four Port RS-232 Interface - - vendor.id pci 0x135e -&device.id pci 0x7402 -+device.name Four Port RS-422/485 Interface - - vendor.id pci 0x135e -&device.id pci 0x7801 -+device.name Eight Port RS-232 Interface - - vendor.id pci 0x135e -&device.id pci 0x8001 -+device.name 8001 Digital I/O Adapter - - vendor.id pci 0x135f -+vendor.name I-Data International A-S - - vendor.id pci 0x1360 -+vendor.name Meinberg Funkuhren - - vendor.id pci 0x1360 -&device.id pci 0x0101 -+device.name PCI32 DCF77 Radio Clock - - vendor.id pci 0x1360 -&device.id pci 0x0102 -+device.name PCI509 DCF77 Radio Clock - - vendor.id pci 0x1360 -&device.id pci 0x0103 -+device.name PCI510 DCF77 Radio Clock - - vendor.id pci 0x1360 -&device.id pci 0x0201 -+device.name GPS167PCI GPS Receiver - - vendor.id pci 0x1360 -&device.id pci 0x0202 -+device.name GPS168PCI GPS Receiver - - vendor.id pci 0x1360 -&device.id pci 0x0203 -+device.name GPS169PCI GPS Receiver - - vendor.id pci 0x1360 -&device.id pci 0x0301 -+device.name TCR510PCI IRIG Receiver - - vendor.id pci 0x1361 -+vendor.name Soliton Systems K.K. - - vendor.id pci 0x1362 -+vendor.name Fujifacom Corporation - - vendor.id pci 0x1363 -+vendor.name Phoenix Technology Ltd - - vendor.id pci 0x1364 -+vendor.name ATM Communications Inc - - vendor.id pci 0x1365 -+vendor.name Hypercope GmbH - - vendor.id pci 0x1366 -+vendor.name Teijin Seiki Co. Ltd - - vendor.id pci 0x1367 -+vendor.name Hitachi Zosen Corporation - - vendor.id pci 0x1368 -+vendor.name Skyware Corporation - - vendor.id pci 0x1369 -+vendor.name Digigram - - vendor.id pci 0x136a -+vendor.name High Soft Tech - - vendor.id pci 0x136b -+vendor.name Kawasaki Steel Corporation - - vendor.id pci 0x136b -&device.id pci 0xff01 -+device.name KL5A72002 Motion JPEG - - vendor.id pci 0x136c -+vendor.name Adtek System Science Co Ltd - - vendor.id pci 0x136d -+vendor.name Gigalabs Inc - - vendor.id pci 0x136f -+vendor.name Applied Magic Inc - - vendor.id pci 0x1370 -+vendor.name ATL Products - - vendor.id pci 0x1371 -+vendor.name CNet Technology Inc - - vendor.id pci 0x1371 -&device.id pci 0x434e -+device.name GigaCard Network Adapter - - vendor.id pci 0x1371 -&device.id pci 0x434e -&subvendor.id pci 0x1371 -&subdevice.id pci 0x434e -+subdevice.name N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L) - - vendor.id pci 0x1373 -+vendor.name Silicon Vision Inc - - vendor.id pci 0x1374 -+vendor.name Silicom Ltd - - vendor.id pci 0x1375 -+vendor.name Argosystems Inc - - vendor.id pci 0x1376 -+vendor.name LMC - - vendor.id pci 0x1377 -+vendor.name Electronic Equipment Production & Distribution GmbH - - vendor.id pci 0x1378 -+vendor.name Telemann Co. Ltd - - vendor.id pci 0x1379 -+vendor.name Asahi Kasei Microsystems Co Ltd - - vendor.id pci 0x137a -+vendor.name Mark of the Unicorn Inc - - vendor.id pci 0x137a -&device.id pci 0x0001 -+device.name PCI-324 Audiowire Interface - - vendor.id pci 0x137b -+vendor.name PPT Vision - - vendor.id pci 0x137c -+vendor.name Iwatsu Electric Co Ltd - - vendor.id pci 0x137d -+vendor.name Dynachip Corporation - - vendor.id pci 0x137e -+vendor.name Patriot Scientific Corporation - - vendor.id pci 0x137f -+vendor.name Japan Satellite Systems Inc - - vendor.id pci 0x1380 -+vendor.name Sanritz Automation Co Ltd - - vendor.id pci 0x1381 -+vendor.name Brains Co. Ltd - - vendor.id pci 0x1382 -+vendor.name Marian - Electronic & Software - - vendor.id pci 0x1382 -&device.id pci 0x0001 -+device.name ARC88 audio recording card - - vendor.id pci 0x1382 -&device.id pci 0x2088 -+device.name Marc-8 MIDI 8 channel audio card - - vendor.id pci 0x1383 -+vendor.name Controlnet Inc - - vendor.id pci 0x1384 -+vendor.name Reality Simulation Systems Inc - - vendor.id pci 0x1385 -+vendor.name Netgear - - vendor.id pci 0x1385 -&device.id pci 0x0013 -+device.name WG311T - - vendor.id pci 0x1385 -&device.id pci 0x4100 -+device.name 802.11b Wireless Adapter (MA301) - - vendor.id pci 0x1385 -&device.id pci 0x4105 -+device.name MA311 802.11b wireless adapter - - vendor.id pci 0x1385 -&device.id pci 0x4400 -+device.name WAG511 802.11a/b/g Dual Band Wireless PC Card - - vendor.id pci 0x1385 -&device.id pci 0x4600 -+device.name WAG511 802.11a/b/g Dual Band Wireless PC Card - - vendor.id pci 0x1385 -&device.id pci 0x4601 -+device.name WAG511 802.11a/b/g Dual Band Wireless PC Card - - vendor.id pci 0x1385 -&device.id pci 0x4610 -+device.name WAG511 802.11a/b/g Dual Band Wireless PC Card - - vendor.id pci 0x1385 -&device.id pci 0x4a00 -+device.name WAG311 802.11a/g Wireless PCI Adapter - - vendor.id pci 0x1385 -&device.id pci 0x4c00 -+device.name WG311v2 54 Mbps Wireless PCI Adapter - - vendor.id pci 0x1385 -&device.id pci 0x620a -+device.name GA620 Gigabit Ethernet - - vendor.id pci 0x1385 -&device.id pci 0x622a -+device.name GA622 - - vendor.id pci 0x1385 -&device.id pci 0x630a -+device.name GA630 Gigabit Ethernet - - vendor.id pci 0x1385 -&device.id pci 0xf004 -+device.name FA310TX - - vendor.id pci 0x1386 -+vendor.name Video Domain Technologies - - vendor.id pci 0x1387 -+vendor.name Systran Corp - - vendor.id pci 0x1388 -+vendor.name Hitachi Information Technology Co Ltd - - vendor.id pci 0x1389 -+vendor.name Applicom International - - vendor.id pci 0x1389 -&device.id pci 0x0001 -+device.name PCI1500PFB [Intelligent fieldbus adaptor] - - vendor.id pci 0x138a -+vendor.name Fusion Micromedia Corp - - vendor.id pci 0x138b -+vendor.name Tokimec Inc - - vendor.id pci 0x138c -+vendor.name Silicon Reality - - vendor.id pci 0x138d -+vendor.name Future Techno Designs pte Ltd - - vendor.id pci 0x138e -+vendor.name Basler GmbH - - vendor.id pci 0x138f -+vendor.name Patapsco Designs Inc - - vendor.id pci 0x1390 -+vendor.name Concept Development Inc - - vendor.id pci 0x1391 -+vendor.name Development Concepts Inc - - vendor.id pci 0x1392 -+vendor.name Medialight Inc - - vendor.id pci 0x1393 -+vendor.name Moxa Technologies Co Ltd - - vendor.id pci 0x1393 -&device.id pci 0x1040 -+device.name Smartio C104H/PCI - - vendor.id pci 0x1393 -&device.id pci 0x1141 -+device.name Industrio CP-114 - - vendor.id pci 0x1393 -&device.id pci 0x1680 -+device.name Smartio C168H/PCI - - vendor.id pci 0x1393 -&device.id pci 0x2040 -+device.name Intellio CP-204J - - vendor.id pci 0x1393 -&device.id pci 0x2180 -+device.name Intellio C218 Turbo PCI - - vendor.id pci 0x1393 -&device.id pci 0x3200 -+device.name Intellio C320 Turbo PCI - - vendor.id pci 0x1394 -+vendor.name Level One Communications - - vendor.id pci 0x1394 -&device.id pci 0x0001 -+device.name LXT1001 Gigabit Ethernet - - vendor.id pci 0x1394 -&device.id pci 0x0001 -&subvendor.id pci 0x1394 -&subdevice.id pci 0x0001 -+subdevice.name NetCelerator Adapter - - vendor.id pci 0x1395 -+vendor.name Ambicom Inc - - vendor.id pci 0x1396 -+vendor.name Cipher Systems Inc - - vendor.id pci 0x1397 -+vendor.name Cologne Chip Designs GmbH - - vendor.id pci 0x1397 -&device.id pci 0x2bd0 -+device.name ISDN network controller [HFC-PCI] - - vendor.id pci 0x1397 -&device.id pci 0x2bd0 -&subvendor.id pci 0x1397 -&subdevice.id pci 0x2bd0 -+subdevice.name ISDN Board - - vendor.id pci 0x1397 -&device.id pci 0x2bd0 -&subvendor.id pci 0xe4bf -&subdevice.id pci 0x1000 -+subdevice.name CI1-1-Harp - - vendor.id pci 0x1398 -+vendor.name Clarion co. Ltd - - vendor.id pci 0x1399 -+vendor.name Rios systems Co Ltd - - vendor.id pci 0x139a -+vendor.name Alacritech Inc - - vendor.id pci 0x139a -&device.id pci 0x0001 -+device.name Quad Port 10/100 Server Accelerator - - vendor.id pci 0x139a -&device.id pci 0x0003 -+device.name Single Port 10/100 Server Accelerator - - vendor.id pci 0x139a -&device.id pci 0x0005 -+device.name Single Port Gigabit Server Accelerator - - vendor.id pci 0x139b -+vendor.name Mediasonic Multimedia Systems Ltd - - vendor.id pci 0x139c -+vendor.name Quantum 3d Inc - - vendor.id pci 0x139d -+vendor.name EPL limited - - vendor.id pci 0x139e -+vendor.name Media4 - - vendor.id pci 0x139f -+vendor.name Aethra s.r.l. - - vendor.id pci 0x13a0 -+vendor.name Crystal Group Inc - - vendor.id pci 0x13a1 -+vendor.name Kawasaki Heavy Industries Ltd - - vendor.id pci 0x13a2 -+vendor.name Ositech Communications Inc - - vendor.id pci 0x13a3 -+vendor.name Hifn Inc. - - vendor.id pci 0x13a3 -&device.id pci 0x0005 -+device.name 7751 Security Processor - - vendor.id pci 0x13a3 -&device.id pci 0x0006 -+device.name 6500 Public Key Processor - - vendor.id pci 0x13a3 -&device.id pci 0x0007 -+device.name 7811 Security Processor - - vendor.id pci 0x13a3 -&device.id pci 0x0012 -+device.name 7951 Security Processor - - vendor.id pci 0x13a3 -&device.id pci 0x0014 -+device.name 78XX Security Processor - - vendor.id pci 0x13a3 -&device.id pci 0x0016 -+device.name 8065 Security Processor - - vendor.id pci 0x13a3 -&device.id pci 0x0017 -+device.name 8165 Security Processor - - vendor.id pci 0x13a3 -&device.id pci 0x0018 -+device.name 8154 Security Processor - - vendor.id pci 0x13a4 -+vendor.name Rascom Inc - - vendor.id pci 0x13a5 -+vendor.name Audio Digital Imaging Inc - - vendor.id pci 0x13a6 -+vendor.name Videonics Inc - - vendor.id pci 0x13a7 -+vendor.name Teles AG - - vendor.id pci 0x13a8 -+vendor.name Exar Corp. - - vendor.id pci 0x13a8 -&device.id pci 0x0154 -+device.name XR17C154 Quad UART - - vendor.id pci 0x13a8 -&device.id pci 0x0158 -+device.name XR17C158 Octal UART - - vendor.id pci 0x13a9 -+vendor.name Siemens Medical Systems, Ultrasound Group - - vendor.id pci 0x13aa -+vendor.name Broadband Networks Inc - - vendor.id pci 0x13ab -+vendor.name Arcom Control Systems Ltd - - vendor.id pci 0x13ac -+vendor.name Motion Media Technology Ltd - - vendor.id pci 0x13ad -+vendor.name Nexus Inc - - vendor.id pci 0x13ae -+vendor.name ALD Technology Ltd - - vendor.id pci 0x13af -+vendor.name T.Sqware - - vendor.id pci 0x13b0 -+vendor.name Maxspeed Corp - - vendor.id pci 0x13b1 -+vendor.name Tamura corporation - - vendor.id pci 0x13b2 -+vendor.name Techno Chips Co. Ltd - - vendor.id pci 0x13b3 -+vendor.name Lanart Corporation - - vendor.id pci 0x13b4 -+vendor.name Wellbean Co Inc - - vendor.id pci 0x13b5 -+vendor.name ARM - - vendor.id pci 0x13b6 -+vendor.name Dlog GmbH - - vendor.id pci 0x13b7 -+vendor.name Logic Devices Inc - - vendor.id pci 0x13b8 -+vendor.name Nokia Telecommunications oy - - vendor.id pci 0x13b9 -+vendor.name Elecom Co Ltd - - vendor.id pci 0x13ba -+vendor.name Oxford Instruments - - vendor.id pci 0x13bb -+vendor.name Sanyo Technosound Co Ltd - - vendor.id pci 0x13bc -+vendor.name Bitran Corporation - - vendor.id pci 0x13bd -+vendor.name Sharp corporation - - vendor.id pci 0x13be -+vendor.name Miroku Jyoho Service Co. Ltd - - vendor.id pci 0x13bf -+vendor.name Sharewave Inc - - vendor.id pci 0x13c0 -+vendor.name Microgate Corporation - - vendor.id pci 0x13c0 -&device.id pci 0x0010 -+device.name SyncLink Adapter v1 - - vendor.id pci 0x13c0 -&device.id pci 0x0020 -+device.name SyncLink SCC Adapter - - vendor.id pci 0x13c0 -&device.id pci 0x0030 -+device.name SyncLink Multiport Adapter - - vendor.id pci 0x13c0 -&device.id pci 0x0210 -+device.name SyncLink Adapter v2 - - vendor.id pci 0x13c1 -+vendor.name 3ware Inc - - vendor.id pci 0x13c1 -&device.id pci 0x1000 -+device.name 3ware Inc 3ware 5xxx/6xxx-series PATA-RAID - - vendor.id pci 0x13c1 -&device.id pci 0x1001 -+device.name 3ware Inc 3ware 7xxx/8xxx-series PATA/SATA-RAID - - vendor.id pci 0x13c1 -&device.id pci 0x1001 -&subvendor.id pci 0x13c1 -&subdevice.id pci 0x1001 -+subdevice.name 3ware Inc 3ware 7xxx/8xxx-series PATA/SATA-RAID - - vendor.id pci 0x13c1 -&device.id pci 0x1002 -+device.name 3ware Inc 3ware 9xxx-series SATA-RAID - - vendor.id pci 0x13c2 -+vendor.name Technotrend Systemtechnik GmbH - - vendor.id pci 0x13c3 -+vendor.name Janz Computer AG - - vendor.id pci 0x13c4 -+vendor.name Phase Metrics - - vendor.id pci 0x13c5 -+vendor.name Alphi Technology Corp - - vendor.id pci 0x13c6 -+vendor.name Condor Engineering Inc - - vendor.id pci 0x13c6 -&device.id pci 0x0520 -+device.name CEI-520 A429 Card - - vendor.id pci 0x13c6 -&device.id pci 0x0620 -+device.name CEI-620 A429 Card - - vendor.id pci 0x13c6 -&device.id pci 0x0820 -+device.name CEI-820 A429 Card - - vendor.id pci 0x13c7 -+vendor.name Blue Chip Technology Ltd - - vendor.id pci 0x13c8 -+vendor.name Apptech Inc - - vendor.id pci 0x13c9 -+vendor.name Eaton Corporation - - vendor.id pci 0x13ca -+vendor.name Iomega Corporation - - vendor.id pci 0x13cb -+vendor.name Yano Electric Co Ltd - - vendor.id pci 0x13cc -+vendor.name Metheus Corporation - - vendor.id pci 0x13cd -+vendor.name Compatible Systems Corporation - - vendor.id pci 0x13ce -+vendor.name Cocom A/S - - vendor.id pci 0x13cf -+vendor.name Studio Audio & Video Ltd - - vendor.id pci 0x13d0 -+vendor.name Techsan Electronics Co Ltd - - vendor.id pci 0x13d0 -&device.id pci 0x2103 -+device.name B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card - - vendor.id pci 0x13d0 -&device.id pci 0x2200 -+device.name B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card - - vendor.id pci 0x13d1 -+vendor.name Abocom Systems Inc - - vendor.id pci 0x13d1 -&device.id pci 0xab02 -+device.name ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter - - vendor.id pci 0x13d1 -&device.id pci 0xab03 -+device.name 21x4x DEC-Tulip compatible 10/100 Ethernet - - vendor.id pci 0x13d1 -&device.id pci 0xab06 -+device.name RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter - - vendor.id pci 0x13d1 -&device.id pci 0xab08 -+device.name 21x4x DEC-Tulip compatible 10/100 Ethernet - - vendor.id pci 0x13d2 -+vendor.name Shark Multimedia Inc - - vendor.id pci 0x13d3 -+vendor.name IMC Networks - - vendor.id pci 0x13d4 -+vendor.name Graphics Microsystems Inc - - vendor.id pci 0x13d5 -+vendor.name Media 100 Inc - - vendor.id pci 0x13d6 -+vendor.name K.I. Technology Co Ltd - - vendor.id pci 0x13d7 -+vendor.name Toshiba Engineering Corporation - - vendor.id pci 0x13d8 -+vendor.name Phobos corporation - - vendor.id pci 0x13d9 -+vendor.name Apex PC Solutions Inc - - vendor.id pci 0x13da -+vendor.name Intresource Systems pte Ltd - - vendor.id pci 0x13db -+vendor.name Janich & Klass Computertechnik GmbH - - vendor.id pci 0x13dc -+vendor.name Netboost Corporation - - vendor.id pci 0x13dd -+vendor.name Multimedia Bundle Inc - - vendor.id pci 0x13de -+vendor.name ABB Robotics Products AB - - vendor.id pci 0x13df -+vendor.name E-Tech Inc - - vendor.id pci 0x13df -&device.id pci 0x0001 -+device.name PCI56RVP Modem - - vendor.id pci 0x13df -&device.id pci 0x0001 -&subvendor.id pci 0x13df -&subdevice.id pci 0x0001 -+subdevice.name PCI56RVP Modem - - vendor.id pci 0x13e0 -+vendor.name GVC Corporation - - vendor.id pci 0x13e1 -+vendor.name Silicom Multimedia Systems Inc - - vendor.id pci 0x13e2 -+vendor.name Dynamics Research Corporation - - vendor.id pci 0x13e3 -+vendor.name Nest Inc - - vendor.id pci 0x13e4 -+vendor.name Calculex Inc - - vendor.id pci 0x13e5 -+vendor.name Telesoft Design Ltd - - vendor.id pci 0x13e6 -+vendor.name Argosy research Inc - - vendor.id pci 0x13e7 -+vendor.name NAC Incorporated - - vendor.id pci 0x13e8 -+vendor.name Chip Express Corporation - - vendor.id pci 0x13e9 -+vendor.name Intraserver Technology Inc - - vendor.id pci 0x13ea -+vendor.name Dallas Semiconductor - - vendor.id pci 0x13eb -+vendor.name Hauppauge Computer Works Inc - - vendor.id pci 0x13ec -+vendor.name Zydacron Inc - - vendor.id pci 0x13ed -+vendor.name Raytheion E-Systems - - vendor.id pci 0x13ee -+vendor.name Hayes Microcomputer Products Inc - - vendor.id pci 0x13ef -+vendor.name Coppercom Inc - - vendor.id pci 0x13f0 -+vendor.name Sundance Technology Inc - - vendor.id pci 0x13f0 -&device.id pci 0x0201 -+device.name ST201 Sundance Ethernet - - vendor.id pci 0x13f1 -+vendor.name Oce' - Technologies B.V. - - vendor.id pci 0x13f2 -+vendor.name Ford Microelectronics Inc - - vendor.id pci 0x13f3 -+vendor.name Mcdata Corporation - - vendor.id pci 0x13f4 -+vendor.name Troika Networks, Inc. - - vendor.id pci 0x13f4 -&device.id pci 0x1401 -+device.name Zentai Fibre Channel Adapter - - vendor.id pci 0x13f5 -+vendor.name Kansai Electric Co. Ltd - - vendor.id pci 0x13f6 -+vendor.name C-Media Electronics Inc - - vendor.id pci 0x13f6 -&device.id pci 0x0011 -+device.name CMI8738 - - vendor.id pci 0x13f6 -&device.id pci 0x0100 -+device.name CM8338A - - vendor.id pci 0x13f6 -&device.id pci 0x0100 -&subvendor.id pci 0x13f6 -&subdevice.id pci 0xffff -+subdevice.name CMI8338/C3DX PCI Audio Device - - vendor.id pci 0x13f6 -&device.id pci 0x0101 -+device.name CM8338B - - vendor.id pci 0x13f6 -&device.id pci 0x0101 -&subvendor.id pci 0x13f6 -&subdevice.id pci 0x0101 -+subdevice.name CMI8338-031 PCI Audio Device - - vendor.id pci 0x13f6 -&device.id pci 0x0111 -+device.name CM8738 - - vendor.id pci 0x13f6 -&device.id pci 0x0111 -&subvendor.id pci 0x1019 -&subdevice.id pci 0x0970 -+subdevice.name P6STP-FL motherboard - - vendor.id pci 0x13f6 -&device.id pci 0x0111 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8035 -+subdevice.name CUSI-FX motherboard - - vendor.id pci 0x13f6 -&device.id pci 0x0111 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8077 -+subdevice.name CMI8738 6-channel audio controller - - vendor.id pci 0x13f6 -&device.id pci 0x0111 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80e2 -+subdevice.name CMI8738 6ch-MX - - vendor.id pci 0x13f6 -&device.id pci 0x0111 -&subvendor.id pci 0x13f6 -&subdevice.id pci 0x0111 -+subdevice.name CMI8738/C3DX PCI Audio Device - - vendor.id pci 0x13f6 -&device.id pci 0x0111 -&subvendor.id pci 0x1681 -&subdevice.id pci 0xa000 -+subdevice.name Gamesurround MUSE XL - - vendor.id pci 0x13f6 -&device.id pci 0x0211 -+device.name CM8738 - - vendor.id pci 0x13f7 -+vendor.name Wildfire Communications - - vendor.id pci 0x13f8 -+vendor.name Ad Lib Multimedia Inc - - vendor.id pci 0x13f9 -+vendor.name NTT Advanced Technology Corp. - - vendor.id pci 0x13fa -+vendor.name Pentland Systems Ltd - - vendor.id pci 0x13fb -+vendor.name Aydin Corp - - vendor.id pci 0x13fc -+vendor.name Computer Peripherals International - - vendor.id pci 0x13fd -+vendor.name Micro Science Inc - - vendor.id pci 0x13fe -+vendor.name Advantech Co. Ltd - - vendor.id pci 0x13fe -&device.id pci 0x1240 -+device.name PCI-1240 4-channel stepper motor controller card w. Nova Electronics MCX314 - - vendor.id pci 0x13fe -&device.id pci 0x1600 -+device.name PCI-1612 4-port RS-232/422/485 PCI Communication Card - - vendor.id pci 0x13fe -&device.id pci 0x1752 -+device.name PCI-1752 - - vendor.id pci 0x13fe -&device.id pci 0x1754 -+device.name PCI-1754 - - vendor.id pci 0x13fe -&device.id pci 0x1756 -+device.name PCI-1756 - - vendor.id pci 0x13ff -+vendor.name Silicon Spice Inc - - vendor.id pci 0x1400 -+vendor.name Artx Inc - - vendor.id pci 0x1400 -&device.id pci 0x1401 -+device.name 9432 TX - - vendor.id pci 0x1401 -+vendor.name CR-Systems A/S - - vendor.id pci 0x1402 -+vendor.name Meilhaus Electronic GmbH - - vendor.id pci 0x1403 -+vendor.name Ascor Inc - - vendor.id pci 0x1404 -+vendor.name Fundamental Software Inc - - vendor.id pci 0x1405 -+vendor.name Excalibur Systems Inc - - vendor.id pci 0x1406 -+vendor.name Oce' Printing Systems GmbH - - vendor.id pci 0x1407 -+vendor.name Lava Computer mfg Inc - - vendor.id pci 0x1407 -&device.id pci 0x0100 -+device.name Lava Dual Serial - - vendor.id pci 0x1407 -&device.id pci 0x0101 -+device.name Lava Quatro A - - vendor.id pci 0x1407 -&device.id pci 0x0102 -+device.name Lava Quatro B - - vendor.id pci 0x1407 -&device.id pci 0x0120 -+device.name Quattro-PCI A - - vendor.id pci 0x1407 -&device.id pci 0x0121 -+device.name Quattro-PCI B - - vendor.id pci 0x1407 -&device.id pci 0x0180 -+device.name Lava Octo A - - vendor.id pci 0x1407 -&device.id pci 0x0181 -+device.name Lava Octo B - - vendor.id pci 0x1407 -&device.id pci 0x0200 -+device.name Lava Port Plus - - vendor.id pci 0x1407 -&device.id pci 0x0201 -+device.name Lava Quad A - - vendor.id pci 0x1407 -&device.id pci 0x0202 -+device.name Lava Quad B - - vendor.id pci 0x1407 -&device.id pci 0x0220 -+device.name Lava Quattro PCI Ports A/B - - vendor.id pci 0x1407 -&device.id pci 0x0221 -+device.name Lava Quattro PCI Ports C/D - - vendor.id pci 0x1407 -&device.id pci 0x0500 -+device.name Lava Single Serial - - vendor.id pci 0x1407 -&device.id pci 0x0600 -+device.name Lava Port 650 - - vendor.id pci 0x1407 -&device.id pci 0x8000 -+device.name Lava Parallel - - vendor.id pci 0x1407 -&device.id pci 0x8001 -+device.name Dual parallel port controller A - - vendor.id pci 0x1407 -&device.id pci 0x8002 -+device.name Lava Dual Parallel port A - - vendor.id pci 0x1407 -&device.id pci 0x8003 -+device.name Lava Dual Parallel port B - - vendor.id pci 0x1407 -&device.id pci 0x8800 -+device.name BOCA Research IOPPAR - - vendor.id pci 0x1408 -+vendor.name Aloka Co. Ltd - - vendor.id pci 0x1409 -+vendor.name Timedia Technology Co Ltd - - vendor.id pci 0x1409 -&device.id pci 0x7168 -+device.name PCI2S550 (Dual 16550 UART) - - vendor.id pci 0x140a -+vendor.name DSP Research Inc - - vendor.id pci 0x140b -+vendor.name Ramix Inc - - vendor.id pci 0x140c -+vendor.name Elmic Systems Inc - - vendor.id pci 0x140d -+vendor.name Matsushita Electric Works Ltd - - vendor.id pci 0x140e -+vendor.name Goepel Electronic GmbH - - vendor.id pci 0x140f -+vendor.name Salient Systems Corp - - vendor.id pci 0x1410 -+vendor.name Midas lab Inc - - vendor.id pci 0x1411 -+vendor.name Ikos Systems Inc - - vendor.id pci 0x1412 -+vendor.name VIA Technologies Inc. - - vendor.id pci 0x1412 -&device.id pci 0x1712 -+device.name ICE1712 [Envy24] PCI Multi-Channel I/O Controller - - vendor.id pci 0x1412 -&device.id pci 0x1712 -&subvendor.id pci 0x1412 -&subdevice.id pci 0xd638 -+subdevice.name M-Audio Delta 410 - - vendor.id pci 0x1412 -&device.id pci 0x1724 -+device.name VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller - - vendor.id pci 0x1413 -+vendor.name Addonics - - vendor.id pci 0x1414 -+vendor.name Microsoft Corporation - - vendor.id pci 0x1415 -+vendor.name Oxford Semiconductor Ltd - - vendor.id pci 0x1415 -&device.id pci 0x8403 -+device.name VScom 011H-EP1 1 port parallel adaptor - - vendor.id pci 0x1415 -&device.id pci 0x9501 -+device.name OX16PCI954 (Quad 16950 UART) function 0 - - vendor.id pci 0x1415 -&device.id pci 0x9501 -&subvendor.id pci 0x131f -&subdevice.id pci 0x2050 -+subdevice.name CyberPro (4-port) - - vendor.id pci 0x1415 -&device.id pci 0x9501 -&subvendor.id pci 0x15ed -&subdevice.id pci 0x2000 -+subdevice.name MCCR Serial p0-3 of 8 - - vendor.id pci 0x1415 -&device.id pci 0x9501 -&subvendor.id pci 0x15ed -&subdevice.id pci 0x2001 -+subdevice.name MCCR Serial p0-3 of 16 - - vendor.id pci 0x1415 -&device.id pci 0x950a -+device.name EXSYS EX-41092 Dual 16950 Serial adapter - - vendor.id pci 0x1415 -&device.id pci 0x950b -+device.name OXCB950 Cardbus 16950 UART - - vendor.id pci 0x1415 -&device.id pci 0x9511 -+device.name OX16PCI954 (Quad 16950 UART) function 1 - - vendor.id pci 0x1415 -&device.id pci 0x9511 -&subvendor.id pci 0x15ed -&subdevice.id pci 0x2000 -+subdevice.name MCCR Serial p4-7 of 8 - - vendor.id pci 0x1415 -&device.id pci 0x9511 -&subvendor.id pci 0x15ed -&subdevice.id pci 0x2001 -+subdevice.name MCCR Serial p4-15 of 16 - - vendor.id pci 0x1415 -&device.id pci 0x9521 -+device.name OX16PCI952 (Dual 16950 UART) - - vendor.id pci 0x1416 -+vendor.name Multiwave Innovation pte Ltd - - vendor.id pci 0x1417 -+vendor.name Convergenet Technologies Inc - - vendor.id pci 0x1418 -+vendor.name Kyushu electronics systems Inc - - vendor.id pci 0x1419 -+vendor.name Excel Switching Corp - - vendor.id pci 0x141a -+vendor.name Apache Micro Peripherals Inc - - vendor.id pci 0x141b -+vendor.name Zoom Telephonics Inc - - vendor.id pci 0x141d -+vendor.name Digitan Systems Inc - - vendor.id pci 0x141e -+vendor.name Fanuc Ltd - - vendor.id pci 0x141f -+vendor.name Visiontech Ltd - - vendor.id pci 0x1420 -+vendor.name Psion Dacom plc - - vendor.id pci 0x1420 -&device.id pci 0x8002 -+device.name Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part) - - vendor.id pci 0x1420 -&device.id pci 0x8003 -+device.name Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part) - - vendor.id pci 0x1421 -+vendor.name Ads Technologies Inc - - vendor.id pci 0x1422 -+vendor.name Ygrec Systems Co Ltd - - vendor.id pci 0x1423 -+vendor.name Custom Technology Corp. - - vendor.id pci 0x1424 -+vendor.name Videoserver Connections - - vendor.id pci 0x1425 -+vendor.name Chelsio Communications Inc - - vendor.id pci 0x1426 -+vendor.name Storage Technology Corp. - - vendor.id pci 0x1427 -+vendor.name Better On-Line Solutions - - vendor.id pci 0x1428 -+vendor.name Edec Co Ltd - - vendor.id pci 0x1429 -+vendor.name Unex Technology Corp. - - vendor.id pci 0x142a -+vendor.name Kingmax Technology Inc - - vendor.id pci 0x142b -+vendor.name Radiolan - - vendor.id pci 0x142c -+vendor.name Minton Optic Industry Co Ltd - - vendor.id pci 0x142d -+vendor.name Pix stream Inc - - vendor.id pci 0x142e -+vendor.name Vitec Multimedia - - vendor.id pci 0x142e -&device.id pci 0x4020 -+device.name VM2-2 [Video Maker 2] MPEG1/2 Encoder - - vendor.id pci 0x142f -+vendor.name Radicom Research Inc - - vendor.id pci 0x1430 -+vendor.name ITT Aerospace/Communications Division - - vendor.id pci 0x1431 -+vendor.name Gilat Satellite Networks - - vendor.id pci 0x1432 -+vendor.name Edimax Computer Co. - - vendor.id pci 0x1432 -&device.id pci 0x9130 -+device.name RTL81xx Fast Ethernet - - vendor.id pci 0x1433 -+vendor.name Eltec Elektronik GmbH - - vendor.id pci 0x1435 -+vendor.name Real Time Devices US Inc. - - vendor.id pci 0x1436 -+vendor.name CIS Technology Inc - - vendor.id pci 0x1437 -+vendor.name Nissin Inc Co - - vendor.id pci 0x1438 -+vendor.name Atmel-dream - - vendor.id pci 0x1439 -+vendor.name Outsource Engineering & Mfg. Inc - - vendor.id pci 0x143a -+vendor.name Stargate Solutions Inc - - vendor.id pci 0x143b -+vendor.name Canon Research Center, America - - vendor.id pci 0x143c -+vendor.name Amlogic Inc - - vendor.id pci 0x143d -+vendor.name Tamarack Microelectronics Inc - - vendor.id pci 0x143e -+vendor.name Jones Futurex Inc - - vendor.id pci 0x143f -+vendor.name Lightwell Co Ltd - Zax Division - - vendor.id pci 0x1440 -+vendor.name ALGOL Corp. - - vendor.id pci 0x1441 -+vendor.name AGIE Ltd - - vendor.id pci 0x1442 -+vendor.name Phoenix Contact GmbH & Co. - - vendor.id pci 0x1443 -+vendor.name Unibrain S.A. - - vendor.id pci 0x1444 -+vendor.name TRW - - vendor.id pci 0x1445 -+vendor.name Logical DO Ltd - - vendor.id pci 0x1446 -+vendor.name Graphin Co Ltd - - vendor.id pci 0x1447 -+vendor.name AIM GmBH - - vendor.id pci 0x1448 -+vendor.name Alesis Studio Electronics - - vendor.id pci 0x1449 -+vendor.name TUT Systems Inc - - vendor.id pci 0x144a -+vendor.name Adlink Technology - - vendor.id pci 0x144a -&device.id pci 0x7296 -+device.name PCI-7296 - - vendor.id pci 0x144a -&device.id pci 0x7432 -+device.name PCI-7432 - - vendor.id pci 0x144a -&device.id pci 0x7433 -+device.name PCI-7433 - - vendor.id pci 0x144a -&device.id pci 0x7434 -+device.name PCI-7434 - - vendor.id pci 0x144a -&device.id pci 0x7841 -+device.name PCI-7841 - - vendor.id pci 0x144a -&device.id pci 0x8133 -+device.name PCI-8133 - - vendor.id pci 0x144a -&device.id pci 0x8164 -+device.name PCI-8164 - - vendor.id pci 0x144a -&device.id pci 0x8554 -+device.name PCI-8554 - - vendor.id pci 0x144a -&device.id pci 0x9111 -+device.name PCI-9111 - - vendor.id pci 0x144a -&device.id pci 0x9113 -+device.name PCI-9113 - - vendor.id pci 0x144a -&device.id pci 0x9114 -+device.name PCI-9114 - - vendor.id pci 0x144b -+vendor.name Loronix Information Systems Inc - - vendor.id pci 0x144c -+vendor.name Catalina Research Inc - - vendor.id pci 0x144d -+vendor.name Samsung Electronics Co Ltd - - vendor.id pci 0x144e -+vendor.name OLITEC - - vendor.id pci 0x144f -+vendor.name Askey Computer Corp. - - vendor.id pci 0x1450 -+vendor.name Octave Communications Ind. - - vendor.id pci 0x1451 -+vendor.name SP3D Chip Design GmBH - - vendor.id pci 0x1453 -+vendor.name MYCOM Inc - - vendor.id pci 0x1454 -+vendor.name Altiga Networks - - vendor.id pci 0x1455 -+vendor.name Logic Plus Plus Inc - - vendor.id pci 0x1456 -+vendor.name Advanced Hardware Architectures - - vendor.id pci 0x1457 -+vendor.name Nuera Communications Inc - - vendor.id pci 0x1458 -+vendor.name Giga-byte Technology - - vendor.id pci 0x1459 -+vendor.name DOOIN Electronics - - vendor.id pci 0x145a -+vendor.name Escalate Networks Inc - - vendor.id pci 0x145b -+vendor.name PRAIM SRL - - vendor.id pci 0x145c -+vendor.name Cryptek - - vendor.id pci 0x145d -+vendor.name Gallant Computer Inc - - vendor.id pci 0x145e -+vendor.name Aashima Technology B.V. - - vendor.id pci 0x145f -+vendor.name Baldor Electric Company - - vendor.id pci 0x145f -&device.id pci 0x0001 -+device.name NextMove PCI - - vendor.id pci 0x1460 -+vendor.name DYNARC INC - - vendor.id pci 0x1461 -+vendor.name Avermedia Technologies Inc - - vendor.id pci 0x1462 -+vendor.name Micro-Star International Co., Ltd. - - vendor.id pci 0x1462 -&device.id pci 0x6825 -+device.name PCI Card wireless 11g [PC54G] - - vendor.id pci 0x1462 -&device.id pci 0x8725 -+device.name NVIDIA NV25 [GeForce4 Ti 4600] VGA Adapter - - vendor.id pci 0x1462 -&device.id pci 0x9000 -+device.name NVIDIA NV28 [GeForce4 Ti 4800] VGA Adapter - - vendor.id pci 0x1462 -&device.id pci 0x9119 -+device.name NVIDIA NV31 [GeForce FX 5600XT] VGA Adapter - - vendor.id pci 0x1463 -+vendor.name Fast Corporation - - vendor.id pci 0x1464 -+vendor.name Interactive Circuits & Systems Ltd - - vendor.id pci 0x1465 -+vendor.name GN NETTEST Telecom DIV. - - vendor.id pci 0x1466 -+vendor.name Designpro Inc. - - vendor.id pci 0x1467 -+vendor.name DIGICOM SPA - - vendor.id pci 0x1468 -+vendor.name AMBIT Microsystem Corp. - - vendor.id pci 0x1469 -+vendor.name Cleveland Motion Controls - - vendor.id pci 0x146a -+vendor.name IFR - - vendor.id pci 0x146b -+vendor.name Parascan Technologies Ltd - - vendor.id pci 0x146c -+vendor.name Ruby Tech Corp. - - vendor.id pci 0x146c -&device.id pci 0x1430 -+device.name FE-1430TX Fast Ethernet PCI Adapter - - vendor.id pci 0x146d -+vendor.name Tachyon, INC. - - vendor.id pci 0x146e -+vendor.name Williams Electronics Games, Inc. - - vendor.id pci 0x146f -+vendor.name Multi Dimensional Consulting Inc - - vendor.id pci 0x1470 -+vendor.name Bay Networks - - vendor.id pci 0x1471 -+vendor.name Integrated Telecom Express Inc - - vendor.id pci 0x1472 -+vendor.name DAIKIN Industries, Ltd - - vendor.id pci 0x1473 -+vendor.name ZAPEX Technologies Inc - - vendor.id pci 0x1474 -+vendor.name Doug Carson & Associates - - vendor.id pci 0x1475 -+vendor.name PICAZO Communications - - vendor.id pci 0x1476 -+vendor.name MORTARA Instrument Inc - - vendor.id pci 0x1477 -+vendor.name Net Insight - - vendor.id pci 0x1478 -+vendor.name DIATREND Corporation - - vendor.id pci 0x1479 -+vendor.name TORAY Industries Inc - - vendor.id pci 0x147a -+vendor.name FORMOSA Industrial Computing - - vendor.id pci 0x147b -+vendor.name ABIT Computer Corp. - - vendor.id pci 0x147c -+vendor.name AWARE, Inc. - - vendor.id pci 0x147d -+vendor.name Interworks Computer Products - - vendor.id pci 0x147e -+vendor.name Matsushita Graphic Communication Systems, Inc. - - vendor.id pci 0x147f -+vendor.name NIHON UNISYS, Ltd. - - vendor.id pci 0x1480 -+vendor.name SCII Telecom - - vendor.id pci 0x1481 -+vendor.name BIOPAC Systems Inc - - vendor.id pci 0x1482 -+vendor.name ISYTEC - Integrierte Systemtechnik GmBH - - vendor.id pci 0x1483 -+vendor.name LABWAY Corporation - - vendor.id pci 0x1484 -+vendor.name Logic Corporation - - vendor.id pci 0x1485 -+vendor.name ERMA - Electronic GmBH - - vendor.id pci 0x1486 -+vendor.name L3 Communications Telemetry & Instrumentation - - vendor.id pci 0x1487 -+vendor.name MARQUETTE Medical Systems - - vendor.id pci 0x1488 -+vendor.name KONTRON Electronik GmBH - - vendor.id pci 0x1489 -+vendor.name KYE Systems Corporation - - vendor.id pci 0x148a -+vendor.name OPTO - - vendor.id pci 0x148b -+vendor.name INNOMEDIALOGIC Inc. - - vendor.id pci 0x148c -+vendor.name C.P. Technology Co. Ltd - - vendor.id pci 0x148d -+vendor.name DIGICOM Systems, Inc. - - vendor.id pci 0x148d -&device.id pci 0x1003 -+device.name HCF 56k Data/Fax Modem - - vendor.id pci 0x148e -+vendor.name OSI Plus Corporation - - vendor.id pci 0x148f -+vendor.name Plant Equipment, Inc. - - vendor.id pci 0x1490 -+vendor.name Stone Microsystems PTY Ltd. - - vendor.id pci 0x1491 -+vendor.name ZEAL Corporation - - vendor.id pci 0x1492 -+vendor.name Time Logic Corporation - - vendor.id pci 0x1493 -+vendor.name MAKER Communications - - vendor.id pci 0x1494 -+vendor.name WINTOP Technology, Inc. - - vendor.id pci 0x1495 -+vendor.name TOKAI Communications Industry Co. Ltd - - vendor.id pci 0x1496 -+vendor.name JOYTECH Computer Co., Ltd. - - vendor.id pci 0x1497 -+vendor.name SMA Regelsysteme GmBH - - vendor.id pci 0x1498 -+vendor.name TEWS Datentechnik GmBH - - vendor.id pci 0x1498 -&device.id pci 0x30c8 -+device.name TPCI200 - - vendor.id pci 0x1499 -+vendor.name EMTEC CO., Ltd - - vendor.id pci 0x149a -+vendor.name ANDOR Technology Ltd - - vendor.id pci 0x149b -+vendor.name SEIKO Instruments Inc - - vendor.id pci 0x149c -+vendor.name OVISLINK Corp. - - vendor.id pci 0x149d -+vendor.name NEWTEK Inc - - vendor.id pci 0x149d -&device.id pci 0x0001 -+device.name Video Toaster for PC - - vendor.id pci 0x149e -+vendor.name Mapletree Networks Inc. - - vendor.id pci 0x149f -+vendor.name LECTRON Co Ltd - - vendor.id pci 0x14a0 -+vendor.name SOFTING GmBH - - vendor.id pci 0x14a1 -+vendor.name Systembase Co Ltd - - vendor.id pci 0x14a2 -+vendor.name Millennium Engineering Inc - - vendor.id pci 0x14a3 -+vendor.name Maverick Networks - - vendor.id pci 0x14a4 -+vendor.name GVC/BCM Advanced Research - - vendor.id pci 0x14a5 -+vendor.name XIONICS Document Technologies Inc - - vendor.id pci 0x14a6 -+vendor.name INOVA Computers GmBH & Co KG - - vendor.id pci 0x14a7 -+vendor.name MYTHOS Systems Inc - - vendor.id pci 0x14a8 -+vendor.name FEATRON Technologies Corporation - - vendor.id pci 0x14a9 -+vendor.name HIVERTEC Inc - - vendor.id pci 0x14aa -+vendor.name Advanced MOS Technology Inc - - vendor.id pci 0x14ab -+vendor.name Mentor Graphics Corp. - - vendor.id pci 0x14ac -+vendor.name Novaweb Technologies Inc - - vendor.id pci 0x14ad -+vendor.name Time Space Radio AB - - vendor.id pci 0x14ae -+vendor.name CTI, Inc - - vendor.id pci 0x14af -+vendor.name Guillemot Corporation - - vendor.id pci 0x14af -&device.id pci 0x7102 -+device.name 3D Prophet II MX - - vendor.id pci 0x14b0 -+vendor.name BST Communication Technology Ltd - - vendor.id pci 0x14b1 -+vendor.name Nextcom K.K. - - vendor.id pci 0x14b2 -+vendor.name ENNOVATE Networks Inc - - vendor.id pci 0x14b3 -+vendor.name XPEED Inc - - vendor.id pci 0x14b3 -&device.id pci 0x0000 -+device.name DSL NIC - - vendor.id pci 0x14b4 -+vendor.name PHILIPS Business Electronics B.V. - - vendor.id pci 0x14b5 -+vendor.name Creamware GmBH - - vendor.id pci 0x14b5 -&device.id pci 0x0200 -+device.name Scope - - vendor.id pci 0x14b5 -&device.id pci 0x0300 -+device.name Pulsar - - vendor.id pci 0x14b5 -&device.id pci 0x0400 -+device.name PulsarSRB - - vendor.id pci 0x14b5 -&device.id pci 0x0600 -+device.name Pulsar2 - - vendor.id pci 0x14b5 -&device.id pci 0x0800 -+device.name DSP-Board - - vendor.id pci 0x14b5 -&device.id pci 0x0900 -+device.name DSP-Board - - vendor.id pci 0x14b5 -&device.id pci 0x0a00 -+device.name DSP-Board - - vendor.id pci 0x14b5 -&device.id pci 0x0b00 -+device.name DSP-Board - - vendor.id pci 0x14b6 -+vendor.name Quantum Data Corp. - - vendor.id pci 0x14b7 -+vendor.name PROXIM Inc - - vendor.id pci 0x14b7 -&device.id pci 0x0001 -+device.name Symphony 4110 - - vendor.id pci 0x14b8 -+vendor.name Techsoft Technology Co Ltd - - vendor.id pci 0x14b9 -+vendor.name AIRONET Wireless Communications - - vendor.id pci 0x14b9 -&device.id pci 0x0001 -+device.name PC4800 - - vendor.id pci 0x14b9 -&device.id pci 0x0340 -+device.name PC4800 - - vendor.id pci 0x14b9 -&device.id pci 0x0350 -+device.name PC4800 - - vendor.id pci 0x14b9 -&device.id pci 0x4500 -+device.name PC4500 - - vendor.id pci 0x14b9 -&device.id pci 0x4800 -+device.name Cisco Aironet 340 802.11b Wireless LAN Adapter/Aironet PC4800 - - vendor.id pci 0x14b9 -&device.id pci 0xa504 -+device.name Cisco Aironet Wireless 802.11b - - vendor.id pci 0x14b9 -&device.id pci 0xa505 -+device.name Cisco Aironet CB20a 802.11a Wireless LAN Adapter - - vendor.id pci 0x14b9 -&device.id pci 0xa506 -+device.name Cisco Aironet Mini PCI b/g - - vendor.id pci 0x14ba -+vendor.name INTERNIX Inc. - - vendor.id pci 0x14bb -+vendor.name SEMTECH Corporation - - vendor.id pci 0x14bc -+vendor.name Globespan Semiconductor Inc. - - vendor.id pci 0x14bd -+vendor.name CARDIO Control N.V. - - vendor.id pci 0x14be -+vendor.name L3 Communications - - vendor.id pci 0x14bf -+vendor.name SPIDER Communications Inc. - - vendor.id pci 0x14c0 -+vendor.name COMPAL Electronics Inc - - vendor.id pci 0x14c1 -+vendor.name MYRICOM Inc. - - vendor.id pci 0x14c1 -&device.id pci 0x8043 -+device.name Myrinet 2000 Scalable Cluster Interconnect - - vendor.id pci 0x14c2 -+vendor.name DTK Computer - - vendor.id pci 0x14c3 -+vendor.name MEDIATEK Corp. - - vendor.id pci 0x14c4 -+vendor.name IWASAKI Information Systems Co Ltd - - vendor.id pci 0x14c5 -+vendor.name Automation Products AB - - vendor.id pci 0x14c6 -+vendor.name Data Race Inc - - vendor.id pci 0x14c7 -+vendor.name Modular Technology Holdings Ltd - - vendor.id pci 0x14c8 -+vendor.name Turbocomm Tech. Inc. - - vendor.id pci 0x14c9 -+vendor.name ODIN Telesystems Inc - - vendor.id pci 0x14ca -+vendor.name PE Logic Corp. - - vendor.id pci 0x14cb -+vendor.name Billionton Systems Inc - - vendor.id pci 0x14cc -+vendor.name NAKAYO Telecommunications Inc - - vendor.id pci 0x14cd -+vendor.name Universal Scientific Ind. - - vendor.id pci 0x14ce -+vendor.name Whistle Communications - - vendor.id pci 0x14cf -+vendor.name TEK Microsystems Inc. - - vendor.id pci 0x14d0 -+vendor.name Ericsson Axe R & D - - vendor.id pci 0x14d1 -+vendor.name Computer Hi-Tech Co Ltd - - vendor.id pci 0x14d2 -+vendor.name Titan Electronics Inc - - vendor.id pci 0x14d2 -&device.id pci 0x8001 -+device.name VScom 010L 1 port parallel adaptor - - vendor.id pci 0x14d2 -&device.id pci 0x8002 -+device.name VScom 020L 2 port parallel adaptor - - vendor.id pci 0x14d2 -&device.id pci 0x8010 -+device.name VScom 100L 1 port serial adaptor - - vendor.id pci 0x14d2 -&device.id pci 0x8011 -+device.name VScom 110L 1 port serial and 1 port parallel adaptor - - vendor.id pci 0x14d2 -&device.id pci 0x8020 -+device.name VScom 200L 1 port serial adaptor - - vendor.id pci 0x14d2 -&device.id pci 0x8021 -+device.name VScom 210L 2 port serial and 1 port parallel adaptor - - vendor.id pci 0x14d2 -&device.id pci 0x8040 -+device.name VScom 400L 4 port serial adaptor - - vendor.id pci 0x14d2 -&device.id pci 0x8080 -+device.name VScom 800L 8 port serial adaptor - - vendor.id pci 0x14d2 -&device.id pci 0xa000 -+device.name VScom 010H 1 port parallel adaptor - - vendor.id pci 0x14d2 -&device.id pci 0xa001 -+device.name VScom 100H 1 port serial adaptor - - vendor.id pci 0x14d2 -&device.id pci 0xa003 -+device.name VScom 400H 4 port serial adaptor - - vendor.id pci 0x14d2 -&device.id pci 0xa004 -+device.name VScom 400HF1 4 port serial adaptor - - vendor.id pci 0x14d2 -&device.id pci 0xa005 -+device.name VScom 200H 2 port serial adaptor - - vendor.id pci 0x14d2 -&device.id pci 0xe001 -+device.name VScom 010HV2 1 port parallel adaptor - - vendor.id pci 0x14d2 -&device.id pci 0xe010 -+device.name VScom 100HV2 1 port serial adaptor - - vendor.id pci 0x14d2 -&device.id pci 0xe020 -+device.name VScom 200HV2 2 port serial adaptor - - vendor.id pci 0x14d3 -+vendor.name CIRTECH (UK) Ltd - - vendor.id pci 0x14d4 -+vendor.name Panacom Technology Corp - - vendor.id pci 0x14d5 -+vendor.name Nitsuko Corporation - - vendor.id pci 0x14d6 -+vendor.name Accusys Inc - - vendor.id pci 0x14d7 -+vendor.name Hirakawa Hewtech Corp - - vendor.id pci 0x14d8 -+vendor.name HOPF Elektronik GmBH - - vendor.id pci 0x14d9 -+vendor.name Alliance Semiconductor Corporation - - vendor.id pci 0x14d9 -&device.id pci 0x0010 -+device.name AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon] - - vendor.id pci 0x14d9 -&device.id pci 0x9000 -+device.name AS90L10204/10208 HyperTransport to PCI-X Bridge - - vendor.id pci 0x14da -+vendor.name National Aerospace Laboratories - - vendor.id pci 0x14db -+vendor.name AFAVLAB Technology Inc - - vendor.id pci 0x14db -&device.id pci 0x2120 -+device.name TK9902 - - vendor.id pci 0x14dc -+vendor.name Amplicon Liveline Ltd - - vendor.id pci 0x14dc -&device.id pci 0x0000 -+device.name PCI230 - - vendor.id pci 0x14dc -&device.id pci 0x0001 -+device.name PCI242 - - vendor.id pci 0x14dc -&device.id pci 0x0002 -+device.name PCI244 - - vendor.id pci 0x14dc -&device.id pci 0x0003 -+device.name PCI247 - - vendor.id pci 0x14dc -&device.id pci 0x0004 -+device.name PCI248 - - vendor.id pci 0x14dc -&device.id pci 0x0005 -+device.name PCI249 - - vendor.id pci 0x14dc -&device.id pci 0x0006 -+device.name PCI260 - - vendor.id pci 0x14dc -&device.id pci 0x0007 -+device.name PCI224 - - vendor.id pci 0x14dc -&device.id pci 0x0008 -+device.name PCI234 - - vendor.id pci 0x14dc -&device.id pci 0x0009 -+device.name PCI236 - - vendor.id pci 0x14dc -&device.id pci 0x000a -+device.name PCI272 - - vendor.id pci 0x14dc -&device.id pci 0x000b -+device.name PCI215 - - vendor.id pci 0x14dd -+vendor.name Boulder Design Labs Inc - - vendor.id pci 0x14de -+vendor.name Applied Integration Corporation - - vendor.id pci 0x14df -+vendor.name ASIC Communications Corp - - vendor.id pci 0x14e1 -+vendor.name INVERTEX - - vendor.id pci 0x14e2 -+vendor.name INFOLIBRIA - - vendor.id pci 0x14e3 -+vendor.name AMTELCO - - vendor.id pci 0x14e4 -+vendor.name Broadcom Corporation - - vendor.id pci 0x14e4 -&device.id pci 0x0800 -+device.name Sentry5 Chipcommon I/O Controller - - vendor.id pci 0x14e4 -&device.id pci 0x0804 -+device.name Sentry5 PCI Bridge - - vendor.id pci 0x14e4 -&device.id pci 0x0805 -+device.name Sentry5 MIPS32 CPU - - vendor.id pci 0x14e4 -&device.id pci 0x0806 -+device.name Sentry5 Ethernet Controller - - vendor.id pci 0x14e4 -&device.id pci 0x080b -+device.name Sentry5 Crypto Accelerator - - vendor.id pci 0x14e4 -&device.id pci 0x080f -+device.name Sentry5 DDR/SDR RAM Controller - - vendor.id pci 0x14e4 -&device.id pci 0x0811 -+device.name Sentry5 External Interface Core - - vendor.id pci 0x14e4 -&device.id pci 0x0816 -+device.name BCM3302 Sentry5 MIPS32 CPU - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -+device.name NetXtreme BCM5700 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0277 -+subdevice.name Broadcom Vigil B5700 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00d1 -+subdevice.name Broadcom BCM5700 - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0106 -+subdevice.name Broadcom BCM5700 - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0109 -+subdevice.name Broadcom BCM5700 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x010a -+subdevice.name Broadcom BCM5700 1000BaseTX - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1000 -+subdevice.name 3C996-T 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1001 -+subdevice.name 3C996B-T 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1002 -+subdevice.name 3C996C-T 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1003 -+subdevice.name 3C997-T 1000Base-T Dual Port - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1004 -+subdevice.name 3C996-SX 1000Base-SX - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1005 -+subdevice.name 3C997-SX 1000Base-SX Dual Port - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1008 -+subdevice.name 3C942 Gigabit LOM (31X31) - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x0002 -+subdevice.name NetXtreme 1000Base-SX - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x0003 -+subdevice.name NetXtreme 1000Base-SX - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x0004 -+subdevice.name NetXtreme 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x1028 -+subdevice.name NetXtreme 1000BaseTX - - vendor.id pci 0x14e4 -&device.id pci 0x1644 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x1644 -+subdevice.name BCM5700 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -+device.name NetXtreme BCM5701 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x007c -+subdevice.name Compaq NC7770 Gigabit Server Adapter - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x007d -+subdevice.name Compaq NC6770 Gigabit Server Adapter - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0085 -+subdevice.name Compaq NC7780 Gigabit Server Adapter - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0099 -+subdevice.name NC7780 Gigabit Server Adapter (embedded, WOL) - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x009a -+subdevice.name NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00c1 -+subdevice.name NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0121 -+subdevice.name Broadcom BCM5701 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x103c -&subdevice.id pci 0x128a -+subdevice.name HP 1000Base-T (PCI) [A7061A] - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x103c -&subdevice.id pci 0x128b -+subdevice.name HP 1000Base-SX (PCI) [A7073A] - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x103c -&subdevice.id pci 0x12a4 -+subdevice.name HP Core Lan 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x103c -&subdevice.id pci 0x12c1 -+subdevice.name HP IOX Core Lan 1000Base-T [A7109AX] - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x10a9 -&subdevice.id pci 0x8010 -+subdevice.name SGI IO9/IO10 Gigabit Ethernet (Copper) - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x10a9 -&subdevice.id pci 0x8011 -+subdevice.name SGI Gigabit Ethernet (Copper) - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x10a9 -&subdevice.id pci 0x8012 -+subdevice.name SGI Gigabit Ethernet (Fiber) - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1004 -+subdevice.name 3C996-SX 1000Base-SX - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1006 -+subdevice.name 3C996B-T 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1007 -+subdevice.name 3C1000-T 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1008 -+subdevice.name 3C940-BR01 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x0001 -+subdevice.name BCM5701 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x0005 -+subdevice.name BCM5701 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x0006 -+subdevice.name BCM5701 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x0007 -+subdevice.name BCM5701 1000Base-SX - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x0008 -+subdevice.name BCM5701 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1645 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x8008 -+subdevice.name BCM5701 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x1646 -+device.name NetXtreme BCM5702 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x1646 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00bb -+subdevice.name Compaq NC7760 Gigabit Server Adapter - - vendor.id pci 0x14e4 -&device.id pci 0x1646 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0126 -+subdevice.name Broadcom BCM5702 1000BaseTX - - vendor.id pci 0x14e4 -&device.id pci 0x1646 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x8009 -+subdevice.name BCM5702 1000BaseTX - - vendor.id pci 0x14e4 -&device.id pci 0x1647 -+device.name NetXtreme BCM5703 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x1647 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0099 -+subdevice.name Compaq NC7780 Gigabit Server Adapter - - vendor.id pci 0x14e4 -&device.id pci 0x1647 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x009a -+subdevice.name Compaq NC7770 Gigabit Server Adapter - - vendor.id pci 0x14e4 -&device.id pci 0x1647 -&subvendor.id pci 0x10a9 -&subdevice.id pci 0x8010 -+subdevice.name SGI IO9/IO10 Gigabit Ethernet (Copper) - - vendor.id pci 0x14e4 -&device.id pci 0x1647 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x0009 -+subdevice.name BCM5703 1000BaseTX - - vendor.id pci 0x14e4 -&device.id pci 0x1647 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x000a -+subdevice.name BCM5703 1000BaseSX - - vendor.id pci 0x14e4 -&device.id pci 0x1647 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x000b -+subdevice.name BCM5703 1000BaseTX - - vendor.id pci 0x14e4 -&device.id pci 0x1647 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x8009 -+subdevice.name BCM5703 1000BaseTX - - vendor.id pci 0x14e4 -&device.id pci 0x1647 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x800a -+subdevice.name BCM5703 1000BaseTX - - vendor.id pci 0x14e4 -&device.id pci 0x1648 -+device.name NetXtreme BCM5704 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x1648 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00cf -+subdevice.name NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - - vendor.id pci 0x14e4 -&device.id pci 0x1648 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00d0 -+subdevice.name NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - - vendor.id pci 0x14e4 -&device.id pci 0x1648 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00d1 -+subdevice.name NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - - vendor.id pci 0x14e4 -&device.id pci 0x1648 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x2000 -+subdevice.name 3C998-T Dual Port 10/100/1000 PCI-X - - vendor.id pci 0x14e4 -&device.id pci 0x1648 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x3000 -+subdevice.name 3C999-T Quad Port 10/100/1000 PCI-X - - vendor.id pci 0x14e4 -&device.id pci 0x1648 -&subvendor.id pci 0x1166 -&subdevice.id pci 0x1648 -+subdevice.name NetXtreme CIOB-E 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x164a -+device.name NetXtreme II BCM5706 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x164d -+device.name NetXtreme BCM5702FE Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x1653 -+device.name NetXtreme BCM5705 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x1653 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00e3 -+subdevice.name NC7761 Gigabit Server Adapter - - vendor.id pci 0x14e4 -&device.id pci 0x1654 -+device.name NetXtreme BCM5705_2 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x1654 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00e3 -+subdevice.name NC7761 Gigabit Server Adapter - - vendor.id pci 0x14e4 -&device.id pci 0x1654 -&subvendor.id pci 0x103c -&subdevice.id pci 0x3100 -+subdevice.name NC1020 HP ProLiant Gigabit Server Adapter 32 PCI - - vendor.id pci 0x14e4 -&device.id pci 0x1659 -+device.name NetXtreme BCM5721 Gigabit Ethernet PCI Express - - vendor.id pci 0x14e4 -&device.id pci 0x165d -+device.name NetXtreme BCM5705M Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x165e -+device.name NetXtreme BCM5705M_2 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x165e -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x14e4 -&device.id pci 0x166e -+device.name 570x 10/100 Integrated Controller - - vendor.id pci 0x14e4 -&device.id pci 0x1677 -+device.name NetXtreme BCM5751 Gigabit Ethernet PCI Express - - vendor.id pci 0x14e4 -&device.id pci 0x1677 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0179 -+subdevice.name Optiplex GX280 - - vendor.id pci 0x14e4 -&device.id pci 0x167d -+device.name NetXtreme BCM5751M Gigabit Ethernet PCI Express - - vendor.id pci 0x14e4 -&device.id pci 0x167e -+device.name NetXtreme BCM5751F Fast Ethernet PCI Express - - vendor.id pci 0x14e4 -&device.id pci 0x1696 -+device.name NetXtreme BCM5782 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x1696 -&subvendor.id pci 0x103c -&subdevice.id pci 0x12bc -+subdevice.name HP d530 CMT (DG746A) - - vendor.id pci 0x14e4 -&device.id pci 0x1696 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x000d -+subdevice.name NetXtreme BCM5782 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x169c -+device.name NetXtreme BCM5788 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x169d -+device.name NetLink BCM5789 Gigabit Ethernet PCI Express - - vendor.id pci 0x14e4 -&device.id pci 0x16a6 -+device.name NetXtreme BCM5702X Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x16a6 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00bb -+subdevice.name NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T) - - vendor.id pci 0x14e4 -&device.id pci 0x16a6 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0126 -+subdevice.name BCM5702 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x16a6 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x000c -+subdevice.name BCM5702 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x16a6 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x8009 -+subdevice.name BCM5702 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x16a7 -+device.name NetXtreme BCM5703X Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x16a7 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00ca -+subdevice.name NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - - vendor.id pci 0x14e4 -&device.id pci 0x16a7 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00cb -+subdevice.name NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - - vendor.id pci 0x14e4 -&device.id pci 0x16a7 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x0009 -+subdevice.name NetXtreme BCM5703 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x16a7 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x000a -+subdevice.name NetXtreme BCM5703 1000Base-SX - - vendor.id pci 0x14e4 -&device.id pci 0x16a7 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x000b -+subdevice.name NetXtreme BCM5703 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x16a7 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x800a -+subdevice.name NetXtreme BCM5703 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x16a8 -+device.name NetXtreme BCM5704S Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x16a8 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x2001 -+subdevice.name 3C998-SX Dual Port 1000-SX PCI-X - - vendor.id pci 0x14e4 -&device.id pci 0x16aa -+device.name NetXtreme II BCM5706S Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x16c6 -+device.name NetXtreme BCM5702A3 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x16c6 -&subvendor.id pci 0x10b7 -&subdevice.id pci 0x1100 -+subdevice.name 3C1000B-T 10/100/1000 PCI - - vendor.id pci 0x14e4 -&device.id pci 0x16c6 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x000c -+subdevice.name BCM5702 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x16c6 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x8009 -+subdevice.name BCM5702 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x16c7 -+device.name NetXtreme BCM5703 Gigabit Ethernet - - vendor.id pci 0x14e4 -&device.id pci 0x16c7 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00ca -+subdevice.name NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - - vendor.id pci 0x14e4 -&device.id pci 0x16c7 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00cb -+subdevice.name NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - - vendor.id pci 0x14e4 -&device.id pci 0x16c7 -&subvendor.id pci 0x103c -&subdevice.id pci 0x12c3 -+subdevice.name HP Combo FC/GigE-SX [A9782A] - - vendor.id pci 0x14e4 -&device.id pci 0x16c7 -&subvendor.id pci 0x103c -&subdevice.id pci 0x12ca -+subdevice.name HP Combo FC/GigE-T [A9784A] - - vendor.id pci 0x14e4 -&device.id pci 0x16c7 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x0009 -+subdevice.name NetXtreme BCM5703 1000Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x16c7 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x000a -+subdevice.name NetXtreme BCM5703 1000Base-SX - - vendor.id pci 0x14e4 -&device.id pci 0x16dd -+device.name NetLink BCM5781 Gigabit Ethernet PCI Express - - vendor.id pci 0x14e4 -&device.id pci 0x16f7 -+device.name NetXtreme BCM5753 Gigabit Ethernet PCI Express - - vendor.id pci 0x14e4 -&device.id pci 0x16fd -+device.name NetXtreme BCM5753M Gigabit Ethernet PCI Express - - vendor.id pci 0x14e4 -&device.id pci 0x16fe -+device.name NetXtreme BCM5753F Fast Ethernet PCI Express - - vendor.id pci 0x14e4 -&device.id pci 0x170c -+device.name BCM4401-B0 100Base-TX - - vendor.id pci 0x14e4 -&device.id pci 0x170d -+device.name NetXtreme BCM5901 100Base-TX - - vendor.id pci 0x14e4 -&device.id pci 0x170d -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0545 -+subdevice.name ThinkPad R40e (2684-HVG) builtin ethernet controller - - vendor.id pci 0x14e4 -&device.id pci 0x170e -+device.name NetXtreme BCM5901 100Base-TX - - vendor.id pci 0x14e4 -&device.id pci 0x3352 -+device.name BCM3352 - - vendor.id pci 0x14e4 -&device.id pci 0x3360 -+device.name BCM3360 - - vendor.id pci 0x14e4 -&device.id pci 0x4210 -+device.name BCM4210 iLine10 HomePNA 2.0 - - vendor.id pci 0x14e4 -&device.id pci 0x4211 -+device.name BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem - - vendor.id pci 0x14e4 -&device.id pci 0x4212 -+device.name BCM4212 v.90 56k modem - - vendor.id pci 0x14e4 -&device.id pci 0x4301 -+device.name BCM4303 802.11b Wireless LAN Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4301 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0407 -+subdevice.name TrueMobile 1180 Onboard WLAN - - vendor.id pci 0x14e4 -&device.id pci 0x4301 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x0120 -+subdevice.name WL-103b Wireless LAN PC Card - - vendor.id pci 0x14e4 -&device.id pci 0x4305 -+device.name BCM4307 V.90 56k Modem - - vendor.id pci 0x14e4 -&device.id pci 0x4306 -+device.name BCM4307 Ethernet Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4307 -+device.name BCM4307 802.11b Wireless LAN Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4310 -+device.name BCM4310 Chipcommon I/OController - - vendor.id pci 0x14e4 -&device.id pci 0x4312 -+device.name BCM4310 UART - - vendor.id pci 0x14e4 -&device.id pci 0x4313 -+device.name BCM4310 Ethernet Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4315 -+device.name BCM4310 USB Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4320 -+device.name BCM4306 802.11b/g Wireless LAN Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4320 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0001 -+subdevice.name TrueMobile 1300 WLAN Mini-PCI Card - - vendor.id pci 0x14e4 -&device.id pci 0x4320 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0003 -+subdevice.name Wireless 1350 WLAN Mini-PCI Card - - vendor.id pci 0x14e4 -&device.id pci 0x4320 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x100f -+subdevice.name WL-100G - - vendor.id pci 0x14e4 -&device.id pci 0x4320 -&subvendor.id pci 0x14e4 -&subdevice.id pci 0x4320 -+subdevice.name Linksys WMP54G PCI - - vendor.id pci 0x14e4 -&device.id pci 0x4320 -&subvendor.id pci 0x1737 -&subdevice.id pci 0x4320 -+subdevice.name WPC54G - - vendor.id pci 0x14e4 -&device.id pci 0x4320 -&subvendor.id pci 0x1799 -&subdevice.id pci 0x7010 -+subdevice.name Belkin F5D7010 54g Wireless Network card - - vendor.id pci 0x14e4 -&device.id pci 0x4321 -+device.name BCM4306 802.11a Wireless LAN Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4322 -+device.name BCM4306 UART - - vendor.id pci 0x14e4 -&device.id pci 0x4324 -+device.name BCM4309 802.11a/b/g - - vendor.id pci 0x14e4 -&device.id pci 0x4324 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0001 -+subdevice.name Truemobile 1400 - - vendor.id pci 0x14e4 -&device.id pci 0x4324 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0003 -+subdevice.name Truemobile 1450 MiniPCI - - vendor.id pci 0x14e4 -&device.id pci 0x4325 -+device.name BCM43xG 802.11b/g - - vendor.id pci 0x14e4 -&device.id pci 0x4325 -&subvendor.id pci 0x1414 -&subdevice.id pci 0x0003 -+subdevice.name Wireless Notebook Adapter MN-720 - - vendor.id pci 0x14e4 -&device.id pci 0x4325 -&subvendor.id pci 0x1414 -&subdevice.id pci 0x0004 -+subdevice.name Wireless PCI Adapter MN-730 - - vendor.id pci 0x14e4 -&device.id pci 0x4326 -+device.name BCM4307 Chipcommon I/O Controller? - - vendor.id pci 0x14e4 -&device.id pci 0x4401 -+device.name BCM4401 100Base-T - - vendor.id pci 0x14e4 -&device.id pci 0x4401 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a8 -+subdevice.name A7V8X motherboard - - vendor.id pci 0x14e4 -&device.id pci 0x4402 -+device.name BCM4402 Integrated 10/100BaseT - - vendor.id pci 0x14e4 -&device.id pci 0x4403 -+device.name BCM4402 V.90 56k Modem - - vendor.id pci 0x14e4 -&device.id pci 0x4410 -+device.name BCM4413 iLine32 HomePNA 2.0 - - vendor.id pci 0x14e4 -&device.id pci 0x4411 -+device.name BCM4413 V.90 56k modem - - vendor.id pci 0x14e4 -&device.id pci 0x4412 -+device.name BCM4412 10/100BaseT - - vendor.id pci 0x14e4 -&device.id pci 0x4430 -+device.name BCM44xx CardBus iLine32 HomePNA 2.0 - - vendor.id pci 0x14e4 -&device.id pci 0x4432 -+device.name BCM4432 CardBus 10/100BaseT - - vendor.id pci 0x14e4 -&device.id pci 0x4610 -+device.name BCM4610 Sentry5 PCI to SB Bridge - - vendor.id pci 0x14e4 -&device.id pci 0x4611 -+device.name BCM4610 Sentry5 iLine32 HomePNA 1.0 - - vendor.id pci 0x14e4 -&device.id pci 0x4612 -+device.name BCM4610 Sentry5 V.90 56k Modem - - vendor.id pci 0x14e4 -&device.id pci 0x4613 -+device.name BCM4610 Sentry5 Ethernet Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4614 -+device.name BCM4610 Sentry5 External Interface - - vendor.id pci 0x14e4 -&device.id pci 0x4615 -+device.name BCM4610 Sentry5 USB Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4704 -+device.name BCM4704 PCI to SB Bridge - - vendor.id pci 0x14e4 -&device.id pci 0x4705 -+device.name BCM4704 Sentry5 802.11b Wireless LAN Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4706 -+device.name BCM4704 Sentry5 Ethernet Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4707 -+device.name BCM4704 Sentry5 USB Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4708 -+device.name BCM4704 Crypto Accelerator - - vendor.id pci 0x14e4 -&device.id pci 0x4710 -+device.name BCM4710 Sentry5 PCI to SB Bridge - - vendor.id pci 0x14e4 -&device.id pci 0x4711 -+device.name BCM47xx Sentry5 iLine32 HomePNA 2.0 - - vendor.id pci 0x14e4 -&device.id pci 0x4712 -+device.name BCM47xx V.92 56k modem - - vendor.id pci 0x14e4 -&device.id pci 0x4713 -+device.name Sentry5 Ethernet Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4714 -+device.name BCM47xx Sentry5 External Interface - - vendor.id pci 0x14e4 -&device.id pci 0x4715 -+device.name Sentry5 USB Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4716 -+device.name BCM47xx Sentry5 USB Host Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4717 -+device.name BCM47xx Sentry5 USB Device Controller - - vendor.id pci 0x14e4 -&device.id pci 0x4718 -+device.name Sentry5 Crypto Accelerator - - vendor.id pci 0x14e4 -&device.id pci 0x4720 -+device.name BCM4712 MIPS CPU - - vendor.id pci 0x14e4 -&device.id pci 0x5365 -+device.name BCM5365P Sentry5 Host Bridge - - vendor.id pci 0x14e4 -&device.id pci 0x5600 -+device.name BCM5600 StrataSwitch 24+2 Ethernet Switch Controller - - vendor.id pci 0x14e4 -&device.id pci 0x5605 -+device.name BCM5605 StrataSwitch 24+2 Ethernet Switch Controller - - vendor.id pci 0x14e4 -&device.id pci 0x5615 -+device.name BCM5615 StrataSwitch 24+2 Ethernet Switch Controller - - vendor.id pci 0x14e4 -&device.id pci 0x5625 -+device.name BCM5625 StrataSwitch 24+2 Ethernet Switch Controller - - vendor.id pci 0x14e4 -&device.id pci 0x5645 -+device.name BCM5645 StrataSwitch 24+2 Ethernet Switch Controller - - vendor.id pci 0x14e4 -&device.id pci 0x5670 -+device.name BCM5670 8-Port 10GE Ethernet Switch Fabric - - vendor.id pci 0x14e4 -&device.id pci 0x5680 -+device.name BCM5680 G-Switch 8 Port Gigabit Ethernet Switch Controller - - vendor.id pci 0x14e4 -&device.id pci 0x5690 -+device.name BCM5690 12-port Multi-Layer Gigabit Ethernet Switch - - vendor.id pci 0x14e4 -&device.id pci 0x5691 -+device.name BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller - - vendor.id pci 0x14e4 -&device.id pci 0x5820 -+device.name BCM5820 Crypto Accelerator - - vendor.id pci 0x14e4 -&device.id pci 0x5821 -+device.name BCM5821 Crypto Accelerator - - vendor.id pci 0x14e4 -&device.id pci 0x5822 -+device.name BCM5822 Crypto Accelerator - - vendor.id pci 0x14e4 -&device.id pci 0x5823 -+device.name BCM5823 Crypto Accelerator - - vendor.id pci 0x14e4 -&device.id pci 0x5824 -+device.name BCM5824 Crypto Accelerator - - vendor.id pci 0x14e4 -&device.id pci 0x5840 -+device.name BCM5840 Crypto Accelerator - - vendor.id pci 0x14e4 -&device.id pci 0x5841 -+device.name BCM5841 Crypto Accelerator - - vendor.id pci 0x14e4 -&device.id pci 0x5850 -+device.name BCM5850 Crypto Accelerator - - vendor.id pci 0x14e5 -+vendor.name Pixelfusion Ltd - - vendor.id pci 0x14e6 -+vendor.name SHINING Technology Inc - - vendor.id pci 0x14e7 -+vendor.name 3CX - - vendor.id pci 0x14e8 -+vendor.name RAYCER Inc - - vendor.id pci 0x14e9 -+vendor.name GARNETS System CO Ltd - - vendor.id pci 0x14ea -+vendor.name Planex Communications, Inc - - vendor.id pci 0x14ea -&device.id pci 0xab06 -+device.name FNW-3603-TX CardBus Fast Ethernet - - vendor.id pci 0x14ea -&device.id pci 0xab07 -+device.name RTL81xx RealTek Ethernet - - vendor.id pci 0x14eb -+vendor.name SEIKO EPSON Corp - - vendor.id pci 0x14ec -+vendor.name ACQIRIS - - vendor.id pci 0x14ed -+vendor.name DATAKINETICS Ltd - - vendor.id pci 0x14ee -+vendor.name MASPRO KENKOH Corp - - vendor.id pci 0x14ef -+vendor.name CARRY Computer ENG. CO Ltd - - vendor.id pci 0x14f0 -+vendor.name CANON RESEACH CENTRE FRANCE - - vendor.id pci 0x14f1 -+vendor.name Conexant - - vendor.id pci 0x14f1 -&device.id pci 0x1002 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1003 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1004 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1005 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1006 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1022 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1023 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1024 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1025 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1026 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1032 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -+device.name HCF 56k Data/Fax Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8077 -+subdevice.name NEC - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4027 -+subdevice.name Dell Zeus - MDP3880-W(B) Data Fax Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4030 -+subdevice.name Dell Mercury - MDP3880-U(B) Data Fax Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4034 -+subdevice.name Dell Thor - MDP3880-W(U) Data Fax Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x020d -+subdevice.name Dell Copper - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x020e -+subdevice.name Dell Silver - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0261 -+subdevice.name IBM - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0290 -+subdevice.name Compaq Goldwing - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x02a0 -+subdevice.name IBM - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x02b0 -+subdevice.name IBM - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x02c0 -+subdevice.name Compaq Scooter - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x02d0 -+subdevice.name IBM - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x144f -&subdevice.id pci 0x1500 -+subdevice.name IBM P85-DF (1) - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x144f -&subdevice.id pci 0x1501 -+subdevice.name IBM P85-DF (2) - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x144f -&subdevice.id pci 0x150a -+subdevice.name IBM P85-DF (3) - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x144f -&subdevice.id pci 0x150b -+subdevice.name IBM P85-DF Low Profile (1) - - vendor.id pci 0x14f1 -&device.id pci 0x1033 -&subvendor.id pci 0x144f -&subdevice.id pci 0x1510 -+subdevice.name IBM P85-DF Low Profile (2) - - vendor.id pci 0x14f1 -&device.id pci 0x1034 -+device.name HCF 56k Data/Fax/Voice Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1035 -+device.name HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1035 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1098 -+subdevice.name Fujitsu P85-DFSV - - vendor.id pci 0x14f1 -&device.id pci 0x1036 -+device.name HCF 56k Data/Fax/Voice/Spkp Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1036 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8067 -+subdevice.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1036 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4029 -+subdevice.name MDP3880SP-W - - vendor.id pci 0x14f1 -&device.id pci 0x1036 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4031 -+subdevice.name MDP3880SP-U - - vendor.id pci 0x14f1 -&device.id pci 0x1036 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0209 -+subdevice.name Dell Titanium - - vendor.id pci 0x14f1 -&device.id pci 0x1036 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x020a -+subdevice.name Dell Graphite - - vendor.id pci 0x14f1 -&device.id pci 0x1036 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0260 -+subdevice.name Gateway Red Owl - - vendor.id pci 0x14f1 -&device.id pci 0x1036 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0270 -+subdevice.name Gateway White Horse - - vendor.id pci 0x14f1 -&device.id pci 0x1052 -+device.name HCF 56k Data/Fax Modem (Worldwide) - - vendor.id pci 0x14f1 -&device.id pci 0x1053 -+device.name HCF 56k Data/Fax Modem (Worldwide) - - vendor.id pci 0x14f1 -&device.id pci 0x1054 -+device.name HCF 56k Data/Fax/Voice Modem (Worldwide) - - vendor.id pci 0x14f1 -&device.id pci 0x1055 -+device.name HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide) - - vendor.id pci 0x14f1 -&device.id pci 0x1056 -+device.name HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) - - vendor.id pci 0x14f1 -&device.id pci 0x1057 -+device.name HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) - - vendor.id pci 0x14f1 -&device.id pci 0x1059 -+device.name HCF 56k Data/Fax/Voice Modem (Worldwide) - - vendor.id pci 0x14f1 -&device.id pci 0x1063 -+device.name HCF 56k Data/Fax Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1064 -+device.name HCF 56k Data/Fax/Voice Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1065 -+device.name HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1066 -+device.name HCF 56k Data/Fax/Voice/Spkp Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1066 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4033 -+subdevice.name Dell Athena - MDP3900V-U - - vendor.id pci 0x14f1 -&device.id pci 0x1433 -+device.name HCF 56k Data/Fax Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1434 -+device.name HCF 56k Data/Fax/Voice Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1435 -+device.name HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1436 -+device.name HCF 56k Data/Fax Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1453 -+device.name HCF 56k Data/Fax Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1453 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0240 -+subdevice.name IBM - - vendor.id pci 0x14f1 -&device.id pci 0x1453 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x0250 -+subdevice.name IBM - - vendor.id pci 0x14f1 -&device.id pci 0x1453 -&subvendor.id pci 0x144f -&subdevice.id pci 0x1502 -+subdevice.name IBM P95-DF (1) - - vendor.id pci 0x14f1 -&device.id pci 0x1453 -&subvendor.id pci 0x144f -&subdevice.id pci 0x1503 -+subdevice.name IBM P95-DF (2) - - vendor.id pci 0x14f1 -&device.id pci 0x1454 -+device.name HCF 56k Data/Fax/Voice Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1455 -+device.name HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1456 -+device.name HCF 56k Data/Fax/Voice/Spkp Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1456 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4035 -+subdevice.name Dell Europa - MDP3900V-W - - vendor.id pci 0x14f1 -&device.id pci 0x1456 -&subvendor.id pci 0x122d -&subdevice.id pci 0x4302 -+subdevice.name Dell MP3930V-W(C) MiniPCI - - vendor.id pci 0x14f1 -&device.id pci 0x1610 -+device.name ADSL AccessRunner PCI Arbitration Device - - vendor.id pci 0x14f1 -&device.id pci 0x1611 -+device.name AccessRunner PCI ADSL Interface Device - - vendor.id pci 0x14f1 -&device.id pci 0x1620 -+device.name ADSL AccessRunner V2 PCI Arbitration Device - - vendor.id pci 0x14f1 -&device.id pci 0x1621 -+device.name AccessRunner V2 PCI ADSL Interface Device - - vendor.id pci 0x14f1 -&device.id pci 0x1622 -+device.name AccessRunner V2 PCI ADSL Yukon WAN Adapter - - vendor.id pci 0x14f1 -&device.id pci 0x1803 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1803 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0023 -+subdevice.name 623-LAN Grizzly - - vendor.id pci 0x14f1 -&device.id pci 0x1803 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0043 -+subdevice.name 623-LAN Yogi - - vendor.id pci 0x14f1 -&device.id pci 0x1815 -+device.name HCF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x1815 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0022 -+subdevice.name Grizzly - - vendor.id pci 0x14f1 -&device.id pci 0x1815 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0042 -+subdevice.name Yogi - - vendor.id pci 0x14f1 -&device.id pci 0x2003 -+device.name HSF 56k Data/Fax Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2004 -+device.name HSF 56k Data/Fax/Voice Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2005 -+device.name HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2006 -+device.name HSF 56k Data/Fax/Voice/Spkp Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2013 -+device.name HSF 56k Data/Fax Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2013 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb195 -+subdevice.name Bear - - vendor.id pci 0x14f1 -&device.id pci 0x2013 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb196 -+subdevice.name Seminole 1 - - vendor.id pci 0x14f1 -&device.id pci 0x2013 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb1be -+subdevice.name Seminole 2 - - vendor.id pci 0x14f1 -&device.id pci 0x2013 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x8013 -+subdevice.name Acer - - vendor.id pci 0x14f1 -&device.id pci 0x2013 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x809d -+subdevice.name NEC - - vendor.id pci 0x14f1 -&device.id pci 0x2013 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x80bc -+subdevice.name NEC - - vendor.id pci 0x14f1 -&device.id pci 0x2013 -&subvendor.id pci 0x155d -&subdevice.id pci 0x6793 -+subdevice.name HP - - vendor.id pci 0x14f1 -&device.id pci 0x2013 -&subvendor.id pci 0x155d -&subdevice.id pci 0x8850 -+subdevice.name E Machines - - vendor.id pci 0x14f1 -&device.id pci 0x2014 -+device.name HSF 56k Data/Fax/Voice Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2015 -+device.name HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2016 -+device.name HSF 56k Data/Fax/Voice/Spkp Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2043 -+device.name HSF 56k Data/Fax Modem (WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2044 -+device.name HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2045 -+device.name HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2046 -+device.name HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2063 -+device.name HSF 56k Data/Fax Modem (SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2064 -+device.name HSF 56k Data/Fax/Voice Modem (SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2065 -+device.name HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2066 -+device.name HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2093 -+device.name HSF 56k Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2093 -&subvendor.id pci 0x155d -&subdevice.id pci 0x2f07 -+subdevice.name Legend - - vendor.id pci 0x14f1 -&device.id pci 0x2143 -+device.name HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2144 -+device.name HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2145 -+device.name HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2146 -+device.name HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2163 -+device.name HSF 56k Data/Fax/Cell Modem (Mob SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2164 -+device.name HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2165 -+device.name HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2166 -+device.name HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2343 -+device.name HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2344 -+device.name HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2345 -+device.name HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2346 -+device.name HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2363 -+device.name HSF 56k Data/Fax CardBus Modem (Mob SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2364 -+device.name HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2365 -+device.name HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2366 -+device.name HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2443 -+device.name HSF 56k Data/Fax Modem (Mob WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2443 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8075 -+subdevice.name Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2443 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8083 -+subdevice.name Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2443 -&subvendor.id pci 0x104d -&subdevice.id pci 0x8097 -+subdevice.name Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2444 -+device.name HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2445 -+device.name HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2446 -+device.name HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2463 -+device.name HSF 56k Data/Fax Modem (Mob SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2464 -+device.name HSF 56k Data/Fax/Voice Modem (Mob SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2465 -+device.name HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2466 -+device.name HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA) - - vendor.id pci 0x14f1 -&device.id pci 0x2f00 -+device.name HSF 56k HSFi Modem - - vendor.id pci 0x14f1 -&device.id pci 0x2f00 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x8d84 -+subdevice.name IBM HSFi V.90 - - vendor.id pci 0x14f1 -&device.id pci 0x2f00 -&subvendor.id pci 0x13e0 -&subdevice.id pci 0x8d85 -+subdevice.name Compaq Stinger - - vendor.id pci 0x14f1 -&device.id pci 0x2f00 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x2004 -+subdevice.name Dynalink 56PMi - - vendor.id pci 0x14f1 -&device.id pci 0x2f02 -+device.name HSF 56k HSFi Data/Fax - - vendor.id pci 0x14f1 -&device.id pci 0x2f11 -+device.name HSF 56k HSFi Modem - - vendor.id pci 0x14f1 -&device.id pci 0x8234 -+device.name RS8234 ATM SAR Controller [ServiceSAR Plus] - - vendor.id pci 0x14f1 -&device.id pci 0x8800 -+device.name Winfast TV2000 XP - - vendor.id pci 0x14f2 -+vendor.name MOBILITY Electronics - - vendor.id pci 0x14f2 -&device.id pci 0x0120 -+device.name EV1000 bridge - - vendor.id pci 0x14f2 -&device.id pci 0x0121 -+device.name EV1000 Parallel port - - vendor.id pci 0x14f2 -&device.id pci 0x0122 -+device.name EV1000 Serial port - - vendor.id pci 0x14f2 -&device.id pci 0x0123 -+device.name EV1000 Keyboard controller - - vendor.id pci 0x14f2 -&device.id pci 0x0124 -+device.name EV1000 Mouse controller - - vendor.id pci 0x14f3 -+vendor.name BroadLogic - - vendor.id pci 0x14f3 -&device.id pci 0x2030 -+device.name 2030 DVB-S Satellite Reciever - - vendor.id pci 0x14f3 -&device.id pci 0x2050 -+device.name 2050 DVB-T Terrestrial (Cable) Reciever - - vendor.id pci 0x14f3 -&device.id pci 0x2060 -+device.name 2060 ATSC Terrestrial (Cable) Reciever - - vendor.id pci 0x14f4 -+vendor.name TOKYO Electronic Industry CO Ltd - - vendor.id pci 0x14f5 -+vendor.name SOPAC Ltd - - vendor.id pci 0x14f6 -+vendor.name COYOTE Technologies LLC - - vendor.id pci 0x14f7 -+vendor.name WOLF Technology Inc - - vendor.id pci 0x14f8 -+vendor.name AUDIOCODES Inc - - vendor.id pci 0x14f8 -&device.id pci 0x2077 -+device.name TP-240 dual span E1 VoIP PCI card - - vendor.id pci 0x14f9 -+vendor.name AG COMMUNICATIONS - - vendor.id pci 0x14fa -+vendor.name WANDEL & GOCHERMANN - - vendor.id pci 0x14fb -+vendor.name TRANSAS MARINE (UK) Ltd - - vendor.id pci 0x14fc -+vendor.name Quadrics Ltd - - vendor.id pci 0x14fc -&device.id pci 0x0000 -+device.name QsNet Elan3 Network Adapter - - vendor.id pci 0x14fc -&device.id pci 0x0001 -+device.name QsNetII Elan4 Network Adapter - - vendor.id pci 0x14fd -+vendor.name JAPAN Computer Industry Inc - - vendor.id pci 0x14fe -+vendor.name ARCHTEK TELECOM Corp - - vendor.id pci 0x14ff -+vendor.name TWINHEAD INTERNATIONAL Corp - - vendor.id pci 0x1500 -+vendor.name DELTA Electronics, Inc - - vendor.id pci 0x1500 -&device.id pci 0x1360 -+device.name RTL81xx RealTek Ethernet - - vendor.id pci 0x1501 -+vendor.name BANKSOFT CANADA Ltd - - vendor.id pci 0x1502 -+vendor.name MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd - - vendor.id pci 0x1503 -+vendor.name KAWASAKI LSI USA Inc - - vendor.id pci 0x1504 -+vendor.name KAISER Electronics - - vendor.id pci 0x1505 -+vendor.name ITA INGENIEURBURO FUR TESTAUFGABEN GmbH - - vendor.id pci 0x1506 -+vendor.name CHAMELEON Systems Inc - - vendor.id pci 0x1507 -+vendor.name Motorola ?? / HTEC - - vendor.id pci 0x1507 -&device.id pci 0x0001 -+device.name MPC105 [Eagle] - - vendor.id pci 0x1507 -&device.id pci 0x0002 -+device.name MPC106 [Grackle] - - vendor.id pci 0x1507 -&device.id pci 0x0003 -+device.name MPC8240 [Kahlua] - - vendor.id pci 0x1507 -&device.id pci 0x0100 -+device.name MC145575 [HFC-PCI] - - vendor.id pci 0x1507 -&device.id pci 0x0431 -+device.name KTI829c 100VG - - vendor.id pci 0x1507 -&device.id pci 0x4801 -+device.name Raven - - vendor.id pci 0x1507 -&device.id pci 0x4802 -+device.name Falcon - - vendor.id pci 0x1507 -&device.id pci 0x4803 -+device.name Hawk - - vendor.id pci 0x1507 -&device.id pci 0x4806 -+device.name CPX8216 - - vendor.id pci 0x1508 -+vendor.name HONDA CONNECTORS/MHOTRONICS Inc - - vendor.id pci 0x1509 -+vendor.name FIRST INTERNATIONAL Computer Inc - - vendor.id pci 0x150a -+vendor.name FORVUS RESEARCH Inc - - vendor.id pci 0x150b -+vendor.name YAMASHITA Systems Corp - - vendor.id pci 0x150c -+vendor.name KYOPAL CO Ltd - - vendor.id pci 0x150d -+vendor.name WARPSPPED Inc - - vendor.id pci 0x150e -+vendor.name C-PORT Corp - - vendor.id pci 0x150f -+vendor.name INTEC GmbH - - vendor.id pci 0x1510 -+vendor.name BEHAVIOR TECH Computer Corp - - vendor.id pci 0x1511 -+vendor.name CENTILLIUM Technology Corp - - vendor.id pci 0x1512 -+vendor.name ROSUN Technologies Inc - - vendor.id pci 0x1513 -+vendor.name Raychem - - vendor.id pci 0x1514 -+vendor.name TFL LAN Inc - - vendor.id pci 0x1515 -+vendor.name Advent design - - vendor.id pci 0x1516 -+vendor.name MYSON Technology Inc - - vendor.id pci 0x1516 -&device.id pci 0x0800 -+device.name MTD-8xx 100/10M Ethernet PCI Adapter - - vendor.id pci 0x1516 -&device.id pci 0x0803 -+device.name SURECOM EP-320X-S 100/10M Ethernet PCI Adapter - - vendor.id pci 0x1516 -&device.id pci 0x0803 -&subvendor.id pci 0x1320 -&subdevice.id pci 0x10bd -+subdevice.name SURECOM EP-320X-S 100/10M Ethernet PCI Adapter - - vendor.id pci 0x1516 -&device.id pci 0x0891 -+device.name MTD-8xx 100/10M Ethernet PCI Adapter - - vendor.id pci 0x1517 -+vendor.name ECHOTEK Corp - - vendor.id pci 0x1518 -+vendor.name PEP MODULAR Computers GmbH - - vendor.id pci 0x1519 -+vendor.name TELEFON AKTIEBOLAGET LM Ericsson - - vendor.id pci 0x151a -+vendor.name Globetek - - vendor.id pci 0x151a -&device.id pci 0x1002 -+device.name PCI-1002 - - vendor.id pci 0x151a -&device.id pci 0x1004 -+device.name PCI-1004 - - vendor.id pci 0x151a -&device.id pci 0x1008 -+device.name PCI-1008 - - vendor.id pci 0x151b -+vendor.name COMBOX Ltd - - vendor.id pci 0x151c -+vendor.name DIGITAL AUDIO LABS Inc - - vendor.id pci 0x151d -+vendor.name Fujitsu Computer Products Of America - - vendor.id pci 0x151e -+vendor.name MATRIX Corp - - vendor.id pci 0x151f -+vendor.name TOPIC SEMICONDUCTOR Corp - - vendor.id pci 0x151f -&device.id pci 0x0000 -+device.name TP560 Data/Fax/Voice 56k modem - - vendor.id pci 0x1520 -+vendor.name CHAPLET System Inc - - vendor.id pci 0x1521 -+vendor.name BELL Corp - - vendor.id pci 0x1522 -+vendor.name MainPine Ltd - - vendor.id pci 0x1522 -&device.id pci 0x0100 -+device.name PCI <-> IOBus Bridge - - vendor.id pci 0x1522 -&device.id pci 0x0100 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0200 -+subdevice.name RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem - - vendor.id pci 0x1522 -&device.id pci 0x0100 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0300 -+subdevice.name RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem - - vendor.id pci 0x1522 -&device.id pci 0x0100 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0400 -+subdevice.name RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem - - vendor.id pci 0x1522 -&device.id pci 0x0100 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0500 -+subdevice.name RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem - - vendor.id pci 0x1522 -&device.id pci 0x0100 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0600 -+subdevice.name RockForce+ 2 Port V.90 Data/Fax/Voice Modem - - vendor.id pci 0x1522 -&device.id pci 0x0100 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0700 -+subdevice.name RockForce+ 4 Port V.90 Data/Fax/Voice Modem - - vendor.id pci 0x1522 -&device.id pci 0x0100 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0800 -+subdevice.name RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem - - vendor.id pci 0x1522 -&device.id pci 0x0100 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0c00 -+subdevice.name RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem - - vendor.id pci 0x1522 -&device.id pci 0x0100 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x0d00 -+subdevice.name RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem - - vendor.id pci 0x1522 -&device.id pci 0x0100 -&subvendor.id pci 0x1522 -&subdevice.id pci 0x1d00 -+subdevice.name RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem - - vendor.id pci 0x1523 -+vendor.name MUSIC Semiconductors - - vendor.id pci 0x1524 -+vendor.name ENE Technology Inc - - vendor.id pci 0x1524 -&device.id pci 0x0510 -+device.name CB710 Memory Card Reader Controller - - vendor.id pci 0x1524 -&device.id pci 0x0610 -+device.name PCI Smart Card Reader Controller - - vendor.id pci 0x1524 -&device.id pci 0x1211 -+device.name CB1211 Cardbus Controller - - vendor.id pci 0x1524 -&device.id pci 0x1225 -+device.name CB1225 Cardbus Controller - - vendor.id pci 0x1524 -&device.id pci 0x1410 -+device.name CB1410 Cardbus Controller - - vendor.id pci 0x1524 -&device.id pci 0x1410 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x1524 -&device.id pci 0x1411 -+device.name CB-710/2/4 Cardbus Controller - - vendor.id pci 0x1524 -&device.id pci 0x1412 -+device.name CB-712/4 Cardbus Controller - - vendor.id pci 0x1524 -&device.id pci 0x1420 -+device.name CB1420 Cardbus Controller - - vendor.id pci 0x1524 -&device.id pci 0x1421 -+device.name CB-720/2/4 Cardbus Controller - - vendor.id pci 0x1524 -&device.id pci 0x1422 -+device.name CB-722/4 Cardbus Controller - - vendor.id pci 0x1525 -+vendor.name IMPACT Technologies - - vendor.id pci 0x1526 -+vendor.name ISS, Inc - - vendor.id pci 0x1527 -+vendor.name SOLECTRON - - vendor.id pci 0x1528 -+vendor.name ACKSYS - - vendor.id pci 0x1529 -+vendor.name AMERICAN MICROSystems Inc - - vendor.id pci 0x152a -+vendor.name QUICKTURN DESIGN Systems - - vendor.id pci 0x152b -+vendor.name FLYTECH Technology CO Ltd - - vendor.id pci 0x152c -+vendor.name MACRAIGOR Systems LLC - - vendor.id pci 0x152d -+vendor.name QUANTA Computer Inc - - vendor.id pci 0x152e -+vendor.name MELEC Inc - - vendor.id pci 0x152f -+vendor.name PHILIPS - CRYPTO - - vendor.id pci 0x1530 -+vendor.name ACQIS Technology Inc - - vendor.id pci 0x1531 -+vendor.name CHRYON Corp - - vendor.id pci 0x1532 -+vendor.name ECHELON Corp - - vendor.id pci 0x1533 -+vendor.name BALTIMORE - - vendor.id pci 0x1534 -+vendor.name ROAD Corp - - vendor.id pci 0x1535 -+vendor.name EVERGREEN Technologies Inc - - vendor.id pci 0x1537 -+vendor.name DATALEX COMMUNCATIONS - - vendor.id pci 0x1538 -+vendor.name ARALION Inc - - vendor.id pci 0x1538 -&device.id pci 0x0303 -+device.name ARS106S Ultra ATA 133/100/66 Host Controller - - vendor.id pci 0x1539 -+vendor.name ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A. - - vendor.id pci 0x153a -+vendor.name ONO SOKKI - - vendor.id pci 0x153b -+vendor.name TERRATEC Electronic GmbH - - vendor.id pci 0x153b -&device.id pci 0x1144 -+device.name Aureon 5.1 - - vendor.id pci 0x153b -&device.id pci 0x1147 -+device.name Aureon 5.1 Sky - - vendor.id pci 0x153b -&device.id pci 0x1158 -+device.name Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV] - - vendor.id pci 0x153c -+vendor.name ANTAL Electronic - - vendor.id pci 0x153d -+vendor.name FILANET Corp - - vendor.id pci 0x153e -+vendor.name TECHWELL Inc - - vendor.id pci 0x153f -+vendor.name MIPS DENMARK - - vendor.id pci 0x1540 -+vendor.name PROVIDEO MULTIMEDIA Co Ltd - - vendor.id pci 0x1541 -+vendor.name MACHONE Communications - - vendor.id pci 0x1542 -+vendor.name VIVID Technology Inc - - vendor.id pci 0x1543 -+vendor.name SILICON Laboratories - - vendor.id pci 0x1543 -&device.id pci 0x3052 -+device.name Intel 537 [Winmodem] - - vendor.id pci 0x1543 -&device.id pci 0x4c22 -+device.name Si3036 MC'97 DAA - - vendor.id pci 0x1544 -+vendor.name DCM DATA Systems - - vendor.id pci 0x1545 -+vendor.name VISIONTEK - - vendor.id pci 0x1546 -+vendor.name IOI Technology Corp - - vendor.id pci 0x1547 -+vendor.name MITUTOYO Corp - - vendor.id pci 0x1548 -+vendor.name JET PROPULSION Laboratory - - vendor.id pci 0x1549 -+vendor.name INTERCONNECT Systems Solutions - - vendor.id pci 0x154a -+vendor.name MAX Technologies Inc - - vendor.id pci 0x154b -+vendor.name COMPUTEX Co Ltd - - vendor.id pci 0x154c -+vendor.name VISUAL Technology Inc - - vendor.id pci 0x154d -+vendor.name PAN INTERNATIONAL Industrial Corp - - vendor.id pci 0x154e -+vendor.name SERVOTEST Ltd - - vendor.id pci 0x154f -+vendor.name STRATABEAM Technology - - vendor.id pci 0x1550 -+vendor.name OPEN NETWORK Co Ltd - - vendor.id pci 0x1551 -+vendor.name SMART Electronic DEVELOPMENT GmBH - - vendor.id pci 0x1552 -+vendor.name RACAL AIRTECH Ltd - - vendor.id pci 0x1553 -+vendor.name CHICONY Electronics Co Ltd - - vendor.id pci 0x1554 -+vendor.name PROLINK Microsystems Corp - - vendor.id pci 0x1555 -+vendor.name GESYTEC GmBH - - vendor.id pci 0x1556 -+vendor.name PLD APPLICATIONS - - vendor.id pci 0x1557 -+vendor.name MEDIASTAR Co Ltd - - vendor.id pci 0x1558 -+vendor.name CLEVO/KAPOK Computer - - vendor.id pci 0x1559 -+vendor.name SI LOGIC Ltd - - vendor.id pci 0x155a -+vendor.name INNOMEDIA Inc - - vendor.id pci 0x155b -+vendor.name PROTAC INTERNATIONAL Corp - - vendor.id pci 0x155c -+vendor.name Cemax-Icon Inc - - vendor.id pci 0x155d -+vendor.name Mac System Co Ltd - - vendor.id pci 0x155e -+vendor.name LP Elektronik GmbH - - vendor.id pci 0x155f -+vendor.name Perle Systems Ltd - - vendor.id pci 0x1560 -+vendor.name Terayon Communications Systems - - vendor.id pci 0x1561 -+vendor.name Viewgraphics Inc - - vendor.id pci 0x1562 -+vendor.name Symbol Technologies - - vendor.id pci 0x1563 -+vendor.name A-Trend Technology Co Ltd - - vendor.id pci 0x1564 -+vendor.name Yamakatsu Electronics Industry Co Ltd - - vendor.id pci 0x1565 -+vendor.name Biostar Microtech Int'l Corp - - vendor.id pci 0x1566 -+vendor.name Ardent Technologies Inc - - vendor.id pci 0x1567 -+vendor.name Jungsoft - - vendor.id pci 0x1568 -+vendor.name DDK Electronics Inc - - vendor.id pci 0x1569 -+vendor.name Palit Microsystems Inc. - - vendor.id pci 0x156a -+vendor.name Avtec Systems - - vendor.id pci 0x156b -+vendor.name 2wire Inc - - vendor.id pci 0x156c -+vendor.name Vidac Electronics GmbH - - vendor.id pci 0x156d -+vendor.name Alpha-Top Corp - - vendor.id pci 0x156e -+vendor.name Alfa Inc - - vendor.id pci 0x156f -+vendor.name M-Systems Flash Disk Pioneers Ltd - - vendor.id pci 0x1570 -+vendor.name Lecroy Corp - - vendor.id pci 0x1571 -+vendor.name Contemporary Controls - - vendor.id pci 0x1571 -&device.id pci 0xa001 -+device.name CCSI PCI20-485 ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa002 -+device.name CCSI PCI20-485D ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa003 -+device.name CCSI PCI20-485X ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa004 -+device.name CCSI PCI20-CXB ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa005 -+device.name CCSI PCI20-CXS ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa006 -+device.name CCSI PCI20-FOG-SMA ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa007 -+device.name CCSI PCI20-FOG-ST ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa008 -+device.name CCSI PCI20-TB5 ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa009 -+device.name CCSI PCI20-5-485 5Mbit ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa00a -+device.name CCSI PCI20-5-485D 5Mbit ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa00b -+device.name CCSI PCI20-5-485X 5Mbit ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa00c -+device.name CCSI PCI20-5-FOG-ST 5Mbit ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa00d -+device.name CCSI PCI20-5-FOG-SMA 5Mbit ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa201 -+device.name CCSI PCI22-485 10Mbit ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa202 -+device.name CCSI PCI22-485D 10Mbit ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa203 -+device.name CCSI PCI22-485X 10Mbit ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa204 -+device.name CCSI PCI22-CHB 10Mbit ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa205 -+device.name CCSI PCI22-FOG_ST 10Mbit ARCnet - - vendor.id pci 0x1571 -&device.id pci 0xa206 -+device.name CCSI PCI22-THB 10Mbit ARCnet - - vendor.id pci 0x1572 -+vendor.name Otis Elevator Company - - vendor.id pci 0x1573 -+vendor.name Lattice - Vantis - - vendor.id pci 0x1574 -+vendor.name Fairchild Semiconductor - - vendor.id pci 0x1575 -+vendor.name Voltaire Advanced Data Security Ltd - - vendor.id pci 0x1576 -+vendor.name Viewcast COM - - vendor.id pci 0x1578 -+vendor.name HITT - - vendor.id pci 0x1579 -+vendor.name Dual Technology Corp - - vendor.id pci 0x157a -+vendor.name Japan Elecronics Ind Inc - - vendor.id pci 0x157b -+vendor.name Star Multimedia Corp - - vendor.id pci 0x157c -+vendor.name Eurosoft (UK) - - vendor.id pci 0x157c -&device.id pci 0x8001 -+device.name Fix2000 PCI Y2K Compliance Card - - vendor.id pci 0x157d -+vendor.name Gemflex Networks - - vendor.id pci 0x157e -+vendor.name Transition Networks - - vendor.id pci 0x157f -+vendor.name PX Instruments Technology Ltd - - vendor.id pci 0x1580 -+vendor.name Primex Aerospace Co - - vendor.id pci 0x1581 -+vendor.name SEH Computertechnik GmbH - - vendor.id pci 0x1582 -+vendor.name Cytec Corp - - vendor.id pci 0x1583 -+vendor.name Inet Technologies Inc - - vendor.id pci 0x1584 -+vendor.name Uniwill Computer Corp - - vendor.id pci 0x1585 -+vendor.name Logitron - - vendor.id pci 0x1586 -+vendor.name Lancast Inc - - vendor.id pci 0x1587 -+vendor.name Konica Corp - - vendor.id pci 0x1588 -+vendor.name Solidum Systems Corp - - vendor.id pci 0x1589 -+vendor.name Atlantek Microsystems Pty Ltd - - vendor.id pci 0x158a -+vendor.name Digalog Systems Inc - - vendor.id pci 0x158b -+vendor.name Allied Data Technologies - - vendor.id pci 0x158c -+vendor.name Hitachi Semiconductor & Devices Sales Co Ltd - - vendor.id pci 0x158d -+vendor.name Point Multimedia Systems - - vendor.id pci 0x158e -+vendor.name Lara Technology Inc - - vendor.id pci 0x158f -+vendor.name Ditect Coop - - vendor.id pci 0x1590 -+vendor.name 3pardata Inc - - vendor.id pci 0x1591 -+vendor.name ARN - - vendor.id pci 0x1592 -+vendor.name Syba Tech Ltd - - vendor.id pci 0x1592 -&device.id pci 0x0781 -+device.name Multi-IO Card - - vendor.id pci 0x1592 -&device.id pci 0x0782 -+device.name Parallel Port Card 2xEPP - - vendor.id pci 0x1592 -&device.id pci 0x0783 -+device.name Multi-IO Card - - vendor.id pci 0x1592 -&device.id pci 0x0785 -+device.name Multi-IO Card - - vendor.id pci 0x1592 -&device.id pci 0x0786 -+device.name Multi-IO Card - - vendor.id pci 0x1592 -&device.id pci 0x0787 -+device.name Multi-IO Card - - vendor.id pci 0x1592 -&device.id pci 0x0788 -+device.name Multi-IO Card - - vendor.id pci 0x1592 -&device.id pci 0x078a -+device.name Multi-IO Card - - vendor.id pci 0x1593 -+vendor.name Bops Inc - - vendor.id pci 0x1594 -+vendor.name Netgame Ltd - - vendor.id pci 0x1595 -+vendor.name Diva Systems Corp - - vendor.id pci 0x1596 -+vendor.name Folsom Research Inc - - vendor.id pci 0x1597 -+vendor.name Memec Design Services - - vendor.id pci 0x1598 -+vendor.name Granite Microsystems - - vendor.id pci 0x1599 -+vendor.name Delta Electronics Inc - - vendor.id pci 0x159a -+vendor.name General Instrument - - vendor.id pci 0x159b -+vendor.name Faraday Technology Corp - - vendor.id pci 0x159c -+vendor.name Stratus Computer Systems - - vendor.id pci 0x159d -+vendor.name Ningbo Harrison Electronics Co Ltd - - vendor.id pci 0x159e -+vendor.name A-Max Technology Co Ltd - - vendor.id pci 0x159f -+vendor.name Galea Network Security - - vendor.id pci 0x15a0 -+vendor.name Compumaster SRL - - vendor.id pci 0x15a1 -+vendor.name Geocast Network Systems - - vendor.id pci 0x15a2 -+vendor.name Catalyst Enterprises Inc - - vendor.id pci 0x15a2 -&device.id pci 0x0001 -+device.name TA700 PCI Bus Analyzer/Exerciser - - vendor.id pci 0x15a3 -+vendor.name Italtel - - vendor.id pci 0x15a4 -+vendor.name X-Net OY - - vendor.id pci 0x15a5 -+vendor.name Toyota Macs Inc - - vendor.id pci 0x15a6 -+vendor.name Sunlight Ultrasound Technologies Ltd - - vendor.id pci 0x15a7 -+vendor.name SSE Telecom Inc - - vendor.id pci 0x15a8 -+vendor.name Shanghai Communications Technologies Center - - vendor.id pci 0x15aa -+vendor.name Moreton Bay - - vendor.id pci 0x15ab -+vendor.name Bluesteel Networks Inc - - vendor.id pci 0x15ac -+vendor.name North Atlantic Instruments - - vendor.id pci 0x15ad -+vendor.name VMware Inc - - vendor.id pci 0x15ad -&device.id pci 0x0405 -+device.name [VMware SVGA II] PCI Display Adapter - - vendor.id pci 0x15ad -&device.id pci 0x0710 -+device.name Virtual SVGA - - vendor.id pci 0x15ad -&device.id pci 0x0720 -+device.name VMware High-Speed Virtual NIC [vmxnet] - - vendor.id pci 0x15ae -+vendor.name Amersham Pharmacia Biotech - - vendor.id pci 0x15b0 -+vendor.name Zoltrix International Ltd - - vendor.id pci 0x15b1 -+vendor.name Source Technology Inc - - vendor.id pci 0x15b2 -+vendor.name Mosaid Technologies Inc - - vendor.id pci 0x15b3 -+vendor.name Mellanox Technologies - - vendor.id pci 0x15b3 -&device.id pci 0x5274 -+device.name MT21108 InfiniBridge - - vendor.id pci 0x15b3 -&device.id pci 0x5a44 -+device.name MT23108 InfiniHost HCA - - vendor.id pci 0x15b3 -&device.id pci 0x5a45 -+device.name MT23108 InfiniHost HCA flash recovery (Tavor) - - vendor.id pci 0x15b3 -&device.id pci 0x5a46 -+device.name MT23108 InfiniHost HCA bridge - - vendor.id pci 0x15b3 -&device.id pci 0x5e8c -+device.name MT24204 [InfiniHost III Lx HCA] - - vendor.id pci 0x15b3 -&device.id pci 0x5e8d -+device.name MT24204 [InfiniHost III Lx HCA Flash Recovery] - - vendor.id pci 0x15b3 -&device.id pci 0x6278 -+device.name MT25208 InfiniHost III Ex HCA (Tavor compatibility mode) - - vendor.id pci 0x15b3 -&device.id pci 0x6279 -+device.name MT25208 [InfiniHost III Ex HCA Flash Recovery] - - vendor.id pci 0x15b3 -&device.id pci 0x6282 -+device.name MT25208 InfiniHost III Ex HCA - - vendor.id pci 0x15b4 -+vendor.name CCI/TRIAD - - vendor.id pci 0x15b5 -+vendor.name Cimetrics Inc - - vendor.id pci 0x15b6 -+vendor.name Texas Memory Systems Inc - - vendor.id pci 0x15b7 -+vendor.name Sandisk Corp - - vendor.id pci 0x15b8 -+vendor.name ADDI-DATA GmbH - - vendor.id pci 0x15b9 -+vendor.name Maestro Digital Communications - - vendor.id pci 0x15ba -+vendor.name Impacct Technology Corp - - vendor.id pci 0x15bb -+vendor.name Portwell Inc - - vendor.id pci 0x15bc -+vendor.name Agilent Technologies - - vendor.id pci 0x15bc -&device.id pci 0x2922 -+device.name 64 Bit, 133MHz PCI-X Exerciser & Protocol Checker - - vendor.id pci 0x15bc -&device.id pci 0x2928 -+device.name 64 Bit, 66MHz PCI Exerciser & Analyzer - - vendor.id pci 0x15bc -&device.id pci 0x2929 -+device.name 64 Bit, 133MHz PCI-X Analyzer & Exerciser - - vendor.id pci 0x15bd -+vendor.name DFI Inc - - vendor.id pci 0x15be -+vendor.name Sola Electronics - - vendor.id pci 0x15bf -+vendor.name High Tech Computer Corp (HTC) - - vendor.id pci 0x15c0 -+vendor.name BVM Ltd - - vendor.id pci 0x15c1 -+vendor.name Quantel - - vendor.id pci 0x15c2 -+vendor.name Newer Technology Inc - - vendor.id pci 0x15c3 -+vendor.name Taiwan Mycomp Co Ltd - - vendor.id pci 0x15c4 -+vendor.name EVSX Inc - - vendor.id pci 0x15c5 -+vendor.name Procomp Informatics Ltd - - vendor.id pci 0x15c5 -&device.id pci 0x8010 -+device.name 1394b - 1394 Firewire 3-Port Host Adapter Card - - vendor.id pci 0x15c6 -+vendor.name Technical University of Budapest - - vendor.id pci 0x15c7 -+vendor.name Tateyama System Laboratory Co Ltd - - vendor.id pci 0x15c7 -&device.id pci 0x0349 -+device.name Tateyama C-PCI PLC/NC card Rev.01A - - vendor.id pci 0x15c8 -+vendor.name Penta Media Co Ltd - - vendor.id pci 0x15c9 -+vendor.name Serome Technology Inc - - vendor.id pci 0x15ca -+vendor.name Bitboys OY - - vendor.id pci 0x15cb -+vendor.name AG Electronics Ltd - - vendor.id pci 0x15cc -+vendor.name Hotrail Inc - - vendor.id pci 0x15cd -+vendor.name Dreamtech Co Ltd - - vendor.id pci 0x15ce -+vendor.name Genrad Inc - - vendor.id pci 0x15cf -+vendor.name Hilscher GmbH - - vendor.id pci 0x15d1 -+vendor.name Infineon Technologies AG - - vendor.id pci 0x15d2 -+vendor.name FIC (First International Computer Inc) - - vendor.id pci 0x15d3 -+vendor.name NDS Technologies Israel Ltd - - vendor.id pci 0x15d4 -+vendor.name Iwill Corp - - vendor.id pci 0x15d5 -+vendor.name Tatung Co - - vendor.id pci 0x15d6 -+vendor.name Entridia Corp - - vendor.id pci 0x15d7 -+vendor.name Rockwell-Collins Inc - - vendor.id pci 0x15d8 -+vendor.name Cybernetics Technology Co Ltd - - vendor.id pci 0x15d9 -+vendor.name Super Micro Computer Inc - - vendor.id pci 0x15da -+vendor.name Cyberfirm Inc - - vendor.id pci 0x15db -+vendor.name Applied Computing Systems Inc - - vendor.id pci 0x15dc -+vendor.name Litronic Inc - - vendor.id pci 0x15dc -&device.id pci 0x0001 -+device.name Argus 300 PCI Cryptography Module - - vendor.id pci 0x15dd -+vendor.name Sigmatel Inc - - vendor.id pci 0x15de -+vendor.name Malleable Technologies Inc - - vendor.id pci 0x15df -+vendor.name Infinilink Corp - - vendor.id pci 0x15e0 -+vendor.name Cacheflow Inc - - vendor.id pci 0x15e1 -+vendor.name Voice Technologies Group Inc - - vendor.id pci 0x15e2 -+vendor.name Quicknet Technologies Inc - - vendor.id pci 0x15e3 -+vendor.name Networth Technologies Inc - - vendor.id pci 0x15e4 -+vendor.name VSN Systemen BV - - vendor.id pci 0x15e5 -+vendor.name Valley technologies Inc - - vendor.id pci 0x15e6 -+vendor.name Agere Inc - - vendor.id pci 0x15e7 -+vendor.name Get Engineering Corp - - vendor.id pci 0x15e8 -+vendor.name National Datacomm Corp - - vendor.id pci 0x15e8 -&device.id pci 0x0130 -+device.name Wireless PCI Card - - vendor.id pci 0x15e9 -+vendor.name Pacific Digital Corp - - vendor.id pci 0x15e9 -&device.id pci 0x1841 -+device.name ADMA-100 DiscStaQ ATA Controller - - vendor.id pci 0x15ea -+vendor.name Tokyo Denshi Sekei K.K. - - vendor.id pci 0x15eb -+vendor.name Drsearch GmbH - - vendor.id pci 0x15ec -+vendor.name Beckhoff GmbH - - vendor.id pci 0x15ec -&device.id pci 0x3101 -+device.name FC3101 Profibus DP 1 Channel PCI - - vendor.id pci 0x15ec -&device.id pci 0x5102 -+device.name FC5102 - - vendor.id pci 0x15ed -+vendor.name Macrolink Inc - - vendor.id pci 0x15ee -+vendor.name In Win Development Inc - - vendor.id pci 0x15ef -+vendor.name Intelligent Paradigm Inc - - vendor.id pci 0x15f0 -+vendor.name B-Tree Systems Inc - - vendor.id pci 0x15f1 -+vendor.name Times N Systems Inc - - vendor.id pci 0x15f2 -+vendor.name Diagnostic Instruments Inc - - vendor.id pci 0x15f3 -+vendor.name Digitmedia Corp - - vendor.id pci 0x15f4 -+vendor.name Valuesoft - - vendor.id pci 0x15f5 -+vendor.name Power Micro Research - - vendor.id pci 0x15f6 -+vendor.name Extreme Packet Device Inc - - vendor.id pci 0x15f7 -+vendor.name Banctec - - vendor.id pci 0x15f8 -+vendor.name Koga Electronics Co - - vendor.id pci 0x15f9 -+vendor.name Zenith Electronics Corp - - vendor.id pci 0x15fa -+vendor.name J.P. Axzam Corp - - vendor.id pci 0x15fb -+vendor.name Zilog Inc - - vendor.id pci 0x15fc -+vendor.name Techsan Electronics Co Ltd - - vendor.id pci 0x15fd -+vendor.name N-CUBED.NET - - vendor.id pci 0x15fe -+vendor.name Kinpo Electronics Inc - - vendor.id pci 0x15ff -+vendor.name Fastpoint Technologies Inc - - vendor.id pci 0x1600 -+vendor.name Northrop Grumman - Canada Ltd - - vendor.id pci 0x1601 -+vendor.name Tenta Technology - - vendor.id pci 0x1602 -+vendor.name Prosys-tec Inc - - vendor.id pci 0x1603 -+vendor.name Nokia Wireless Communications - - vendor.id pci 0x1604 -+vendor.name Central System Research Co Ltd - - vendor.id pci 0x1605 -+vendor.name Pairgain Technologies - - vendor.id pci 0x1606 -+vendor.name Europop AG - - vendor.id pci 0x1607 -+vendor.name Lava Semiconductor Manufacturing Inc - - vendor.id pci 0x1608 -+vendor.name Automated Wagering International - - vendor.id pci 0x1609 -+vendor.name Scimetric Instruments Inc - - vendor.id pci 0x1612 -+vendor.name Telesynergy Research Inc. - - vendor.id pci 0x1619 -+vendor.name FarSite Communications Ltd - - vendor.id pci 0x1619 -&device.id pci 0x0400 -+device.name FarSync T2P (2 port X.21/V.35/V.24) - - vendor.id pci 0x1619 -&device.id pci 0x0440 -+device.name FarSync T4P (4 port X.21/V.35/V.24) - - vendor.id pci 0x161f -+vendor.name Rioworks - - vendor.id pci 0x1626 -+vendor.name TDK Semiconductor Corp. - - vendor.id pci 0x1626 -&device.id pci 0x8410 -+device.name RTL81xx Fast Ethernet - - vendor.id pci 0x1629 -+vendor.name Kongsberg Spacetec AS - - vendor.id pci 0x1629 -&device.id pci 0x1003 -+device.name Format synchronizer v3.0 - - vendor.id pci 0x1629 -&device.id pci 0x2002 -+device.name Fast Universal Data Output - - vendor.id pci 0x1637 -+vendor.name Linksys - - vendor.id pci 0x1637 -&device.id pci 0x3874 -+device.name Linksys 802.11b WMP11 PCI Wireless card - - vendor.id pci 0x1638 -+vendor.name Standard Microsystems Corp [SMC] - - vendor.id pci 0x1638 -&device.id pci 0x1100 -+device.name SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000 - - vendor.id pci 0x163c -+vendor.name Smart Link Ltd. - - vendor.id pci 0x163c -&device.id pci 0x3052 -+device.name SmartLink SmartPCI562 56K Modem - - vendor.id pci 0x163c -&device.id pci 0x5449 -+device.name SmartPCI561 Modem - - vendor.id pci 0x1657 -+vendor.name Brocade Communications Systems, Inc. - - vendor.id pci 0x165a -+vendor.name Epix Inc - - vendor.id pci 0x165a -&device.id pci 0xc100 -+device.name PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232] - - vendor.id pci 0x165a -&device.id pci 0xd200 -+device.name PIXCI(R) D2X Digital Video Capture Board [custom QL5232] - - vendor.id pci 0x165a -&device.id pci 0xd300 -+device.name PIXCI(R) D3X Digital Video Capture Board [custom QL5232] - - vendor.id pci 0x165d -+vendor.name Hsing Tech. Enterprise Co., Ltd. - - vendor.id pci 0x1661 -+vendor.name Worldspace Corp. - - vendor.id pci 0x1668 -+vendor.name Actiontec Electronics Inc - - vendor.id pci 0x1668 -&device.id pci 0x0100 -+device.name Mini-PCI bridge - - vendor.id pci 0x166d -+vendor.name Broadcom Corporation - - vendor.id pci 0x166d -&device.id pci 0x0001 -+device.name SiByte BCM1125/1125H/1250 System-on-a-Chip PCI - - vendor.id pci 0x166d -&device.id pci 0x0002 -+device.name SiByte BCM1125H/1250 System-on-a-Chip HyperTransport - - vendor.id pci 0x1677 -+vendor.name Bernecker + Rainer - - vendor.id pci 0x1677 -&device.id pci 0x104e -+device.name 5LS172.6 B&R Dual CAN Interface Card - - vendor.id pci 0x1677 -&device.id pci 0x12d7 -+device.name 5LS172.61 B&R Dual CAN Interface Card - - vendor.id pci 0x167b -+vendor.name ZyDAS Technology Corp. - - vendor.id pci 0x1681 -+vendor.name Hercules - - vendor.id pci 0x1681 -&device.id pci 0x0010 -+device.name Hercules 3d Prophet II Ultra 64MB [ 350 MHz NV15BR core, 128-bit DDR @ 460 MHz, 1.5v AGP4x ] - - vendor.id pci 0x1688 -+vendor.name CastleNet Technology Inc. - - vendor.id pci 0x1688 -&device.id pci 0x1170 -+device.name WLAN 802.11b card - - vendor.id pci 0x168c -+vendor.name Atheros Communications, Inc. - - vendor.id pci 0x168c -&device.id pci 0x0007 -+device.name AR5000 802.11a Wireless Adapter - - vendor.id pci 0x168c -&device.id pci 0x0011 -+device.name AR5210 802.11a NIC - - vendor.id pci 0x168c -&device.id pci 0x0012 -+device.name AR5211 802.11ab NIC - - vendor.id pci 0x168c -&device.id pci 0x0013 -+device.name AR5212 802.11abg NIC - - vendor.id pci 0x168c -&device.id pci 0x0013 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x3202 -+subdevice.name D-link DWL-G650 B3 Wireless cardbus adapter - - vendor.id pci 0x168c -&device.id pci 0x0013 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x3203 -+subdevice.name DWL-G520 Wireless PCI Adapter - - vendor.id pci 0x168c -&device.id pci 0x0013 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x3a13 -+subdevice.name DWL-G520 Wireless PCI Adapter rev. B - - vendor.id pci 0x168c -&device.id pci 0x0013 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x3a94 -+subdevice.name C54C Wireless 801.11g cardbus - - vendor.id pci 0x168c -&device.id pci 0x0013 -&subvendor.id pci 0x1385 -&subdevice.id pci 0x4d00 -+subdevice.name Netgear WG311T Wireless PCI Adapter - - vendor.id pci 0x168c -&device.id pci 0x0013 -&subvendor.id pci 0x14b7 -&subdevice.id pci 0x0a60 -+subdevice.name 8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter - - vendor.id pci 0x168c -&device.id pci 0x0013 -&subvendor.id pci 0x168c -&subdevice.id pci 0x0013 -+subdevice.name WG511T Wireless CardBus Adapter - - vendor.id pci 0x168c -&device.id pci 0x0013 -&subvendor.id pci 0x168c -&subdevice.id pci 0x1025 -+subdevice.name DWL-G650B2 Wireless CardBus Adapter - - vendor.id pci 0x168c -&device.id pci 0x0013 -&subvendor.id pci 0x168c -&subdevice.id pci 0x2026 -+subdevice.name Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter - - vendor.id pci 0x168c -&device.id pci 0x1014 -+device.name AR5212 802.11abg NIC - - vendor.id pci 0x16a5 -+vendor.name Tekram Technology Co.,Ltd. - - vendor.id pci 0x16ab -+vendor.name Global Sun Technology Inc - - vendor.id pci 0x16ab -&device.id pci 0x1100 -+device.name GL24110P - - vendor.id pci 0x16ab -&device.id pci 0x1101 -+device.name PLX9052 PCMCIA-to-PCI Wireless LAN - - vendor.id pci 0x16ab -&device.id pci 0x1102 -+device.name PCMCIA-to-PCI Wireless Network Bridge - - vendor.id pci 0x16ae -+vendor.name Safenet Inc - - vendor.id pci 0x16ae -&device.id pci 0x1141 -+device.name SafeXcel-1141 - - vendor.id pci 0x16b4 -+vendor.name Aspex Semiconductor Ltd - - vendor.id pci 0x16be -+vendor.name Creatix Polymedia GmbH - - vendor.id pci 0x16ca -+vendor.name CENATEK Inc - - vendor.id pci 0x16ca -&device.id pci 0x0001 -+device.name Rocket Drive DL - - vendor.id pci 0x16cd -+vendor.name Densitron Technologies - - vendor.id pci 0x16ce -+vendor.name Roland Corp. - - vendor.id pci 0x16df -+vendor.name PIKA Technologies Inc. - - vendor.id pci 0x16e3 -+vendor.name European Space Agency - - vendor.id pci 0x16e3 -&device.id pci 0x1e0f -+device.name LEON2FT Processor - - vendor.id pci 0x16ec -+vendor.name U.S. Robotics - - vendor.id pci 0x16ec -&device.id pci 0x00ff -+device.name USR997900 10/100 Mbps PCI Network Card - - vendor.id pci 0x16ec -&device.id pci 0x3685 -+device.name Wireless Access PCI Adapter Model 022415 - - vendor.id pci 0x16ed -+vendor.name Sycron N. V. - - vendor.id pci 0x16ed -&device.id pci 0x1001 -+device.name UMIO communication card - - vendor.id pci 0x16f3 -+vendor.name Jetway Information Co., Ltd. - - vendor.id pci 0x16f4 -+vendor.name Vweb Corp - - vendor.id pci 0x16f4 -&device.id pci 0x8000 -+device.name VW2010 - - vendor.id pci 0x16f6 -+vendor.name VideoTele.com, Inc. - - vendor.id pci 0x1702 -+vendor.name Internet Machines Corporation (IMC) - - vendor.id pci 0x1705 -+vendor.name Digital First, Inc. - - vendor.id pci 0x170b -+vendor.name NetOctave - - vendor.id pci 0x170b -&device.id pci 0x0100 -+device.name NSP2000-SSL crypto accelerator - - vendor.id pci 0x170c -+vendor.name YottaYotta Inc. - - vendor.id pci 0x1725 -+vendor.name Vitesse Semiconductor - - vendor.id pci 0x1725 -&device.id pci 0x7174 -+device.name VSC7174 PCI/PCI-X Serial ATA Host Bus Controller - - vendor.id pci 0x172a -+vendor.name Accelerated Encryption - - vendor.id pci 0x1734 -+vendor.name Fujitsu Siemens Computer GmbH - - vendor.id pci 0x1737 -+vendor.name Linksys - - vendor.id pci 0x1737 -&device.id pci 0x0013 -+device.name WMP54G Wireless Pci Card - - vendor.id pci 0x1737 -&device.id pci 0x0015 -+device.name WMP54GS Wireless Pci Card - - vendor.id pci 0x1737 -&device.id pci 0x1032 -+device.name Gigabit Network Adapter - - vendor.id pci 0x1737 -&device.id pci 0x1032 -&subvendor.id pci 0x1737 -&subdevice.id pci 0x0015 -+subdevice.name EG1032 v2 Instant Gigabit Network Adapter - - vendor.id pci 0x1737 -&device.id pci 0x1064 -+device.name Gigabit Network Adapter - - vendor.id pci 0x1737 -&device.id pci 0x1064 -&subvendor.id pci 0x1737 -&subdevice.id pci 0x0016 -+subdevice.name EG1064 v2 Instant Gigabit Network Adapter - - vendor.id pci 0x1737 -&device.id pci 0xab08 -+device.name 21x4x DEC-Tulip compatible 10/100 Ethernet - - vendor.id pci 0x1737 -&device.id pci 0xab09 -+device.name 21x4x DEC-Tulip compatible 10/100 Ethernet - - vendor.id pci 0x173b -+vendor.name Altima (nee Broadcom) - - vendor.id pci 0x173b -&device.id pci 0x03e8 -+device.name AC1000 Gigabit Ethernet - - vendor.id pci 0x173b -&device.id pci 0x03e9 -+device.name AC1001 Gigabit Ethernet - - vendor.id pci 0x173b -&device.id pci 0x03ea -+device.name AC9100 Gigabit Ethernet - - vendor.id pci 0x173b -&device.id pci 0x03ea -&subvendor.id pci 0x173b -&subdevice.id pci 0x0001 -+subdevice.name AC1002 - - vendor.id pci 0x173b -&device.id pci 0x03eb -+device.name AC1003 Gigabit Ethernet - - vendor.id pci 0x1743 -+vendor.name Peppercon AG - - vendor.id pci 0x1743 -&device.id pci 0x8139 -+device.name ROL/F-100 Fast Ethernet Adapter with ROL - - vendor.id pci 0x1749 -+vendor.name RLX Technologies - - vendor.id pci 0x174b -+vendor.name PC Partner Limited - - vendor.id pci 0x174d -+vendor.name WellX Telecom SA - - vendor.id pci 0x175c -+vendor.name AudioScience Inc - - vendor.id pci 0x175e -+vendor.name Sanera Systems, Inc. - - vendor.id pci 0x1787 -+vendor.name Hightech Information System Ltd. - - vendor.id pci 0x1796 -+vendor.name Research Centre Juelich - - vendor.id pci 0x1796 -&device.id pci 0x0001 -+device.name SIS1100 [Gigabit link] - - vendor.id pci 0x1796 -&device.id pci 0x0002 -+device.name HOTlink - - vendor.id pci 0x1796 -&device.id pci 0x0003 -+device.name Counter Timer - - vendor.id pci 0x1796 -&device.id pci 0x0004 -+device.name CAMAC Controller - - vendor.id pci 0x1796 -&device.id pci 0x0005 -+device.name PROFIBUS - - vendor.id pci 0x1796 -&device.id pci 0x0006 -+device.name AMCC HOTlink - - vendor.id pci 0x1797 -+vendor.name JumpTec h, GMBH - - vendor.id pci 0x1799 -+vendor.name Belkin - - vendor.id pci 0x1799 -&device.id pci 0x6001 -+device.name Wireless PCI Card - F5D6001 - - vendor.id pci 0x1799 -&device.id pci 0x6020 -+device.name Wireless PCMCIA Card - F5D6020 - - vendor.id pci 0x1799 -&device.id pci 0x6060 -+device.name Wireless PDA Card - F5D6060 - - vendor.id pci 0x1799 -&device.id pci 0x7000 -+device.name Wireless PCI Card - F5D7000 - - vendor.id pci 0x17a0 -+vendor.name Genesys Logic, Inc - - vendor.id pci 0x17a0 -&device.id pci 0x8033 -+device.name GL880S USB 1.1 controller - - vendor.id pci 0x17a0 -&device.id pci 0x8034 -+device.name GL880S USB 2.0 controller - - vendor.id pci 0x17af -+vendor.name Hightech Information System Ltd. - - vendor.id pci 0x17b3 -+vendor.name Hawking Technologies - - vendor.id pci 0x17b3 -&device.id pci 0xab08 -+device.name PN672TX 10/100 Ethernet - - vendor.id pci 0x17b4 -+vendor.name Indra Networks, Inc. - - vendor.id pci 0x17b4 -&device.id pci 0x0011 -+device.name WebEnhance 100 GZIP Compression Card - - vendor.id pci 0x17c0 -+vendor.name Wistron Corp. - - vendor.id pci 0x17c2 -+vendor.name Newisys, Inc. - - vendor.id pci 0x17cc -+vendor.name NetChip Technology, Inc - - vendor.id pci 0x17cc -&device.id pci 0x2280 -+device.name USB 2.0 - - vendor.id pci 0x17d3 -+vendor.name Areca Technology Corp. - - vendor.id pci 0x17d5 -+vendor.name S2io Inc. - - vendor.id pci 0x17de -+vendor.name KWorld Computer Co. Ltd. - - vendor.id pci 0x17ee -+vendor.name Connect Components Ltd - - vendor.id pci 0x17fe -+vendor.name Linksys, A Division of Cisco Systems - - vendor.id pci 0x17fe -&device.id pci 0x2220 -+device.name [AirConn] INPROCOMM IPN 2220 Wireless LAN Adapter (rev 01) - - vendor.id pci 0x1813 -+vendor.name Ambient Technologies Inc - - vendor.id pci 0x1813 -&device.id pci 0x4000 -+device.name HaM controllerless modem - - vendor.id pci 0x1813 -&device.id pci 0x4000 -&subvendor.id pci 0x16be -&subdevice.id pci 0x0001 -+subdevice.name V9x HAM Data Fax Modem - - vendor.id pci 0x1813 -&device.id pci 0x4100 -+device.name HaM plus Data Fax Modem - - vendor.id pci 0x1813 -&device.id pci 0x4100 -&subvendor.id pci 0x16be -&subdevice.id pci 0x0002 -+subdevice.name V9x HAM 1394 - - vendor.id pci 0x1814 -+vendor.name RaLink - - vendor.id pci 0x1814 -&device.id pci 0x0101 -+device.name Wireless PCI Adpator RT2400 / RT2460 - - vendor.id pci 0x1814 -&device.id pci 0x0201 -+device.name Ralink RT2500 802.11 Cardbus Reference Card - - vendor.id pci 0x1814 -&device.id pci 0x0201 -&subvendor.id pci 0x1371 -&subdevice.id pci 0x001e -+subdevice.name CWC-854 Wireless-G CardBus Adapter - - vendor.id pci 0x1814 -&device.id pci 0x0201 -&subvendor.id pci 0x1371 -&subdevice.id pci 0x001f -+subdevice.name CWM-854 Wireless-G Mini PCI Adapter - - vendor.id pci 0x1814 -&device.id pci 0x0201 -&subvendor.id pci 0x1371 -&subdevice.id pci 0x0020 -+subdevice.name CWP-854 Wireless-G PCI Adapter - - vendor.id pci 0x1820 -+vendor.name InfiniCon Systems Inc. - - vendor.id pci 0x1822 -+vendor.name Twinhan Technology Co. Ltd - - vendor.id pci 0x182d -+vendor.name SiteCom Europe BV - - vendor.id pci 0x182d -&device.id pci 0x3069 -+device.name ISDN PCI DC-105V2 - - vendor.id pci 0x1830 -+vendor.name Credence Systems Corporation - - vendor.id pci 0x183b -+vendor.name MikroM GmbH - - vendor.id pci 0x183b -&device.id pci 0x08a7 -+device.name MVC100 DVI - - vendor.id pci 0x183b -&device.id pci 0x08a8 -+device.name MVC101 SDI - - vendor.id pci 0x183b -&device.id pci 0x08a9 -+device.name MVC102 DVI+Audio - - vendor.id pci 0x1849 -+vendor.name ASRock Incorporation - - vendor.id pci 0x1851 -+vendor.name Microtune, Inc. - - vendor.id pci 0x1852 -+vendor.name Anritsu Corp. - - vendor.id pci 0x185f -+vendor.name Wistron NeWeb Corp. - - vendor.id pci 0x1867 -+vendor.name Topspin Communications - - vendor.id pci 0x1867 -&device.id pci 0x5a44 -+device.name MT23108 InfiniHost HCA - - vendor.id pci 0x1867 -&device.id pci 0x5a45 -+device.name MT23108 InfiniHost HCA flash recovery - - vendor.id pci 0x1867 -&device.id pci 0x5a46 -+device.name MT23108 InfiniHost HCA bridge - - vendor.id pci 0x1867 -&device.id pci 0x6278 -+device.name MT25208 InfiniHost III Ex HCA (Tavor compatibility mode) - - vendor.id pci 0x1867 -&device.id pci 0x6282 -+device.name MT25208 InfiniHost III Ex HCA - - vendor.id pci 0x187e -+vendor.name ZyXEL Communication Corporation - - vendor.id pci 0x1888 -+vendor.name Varisys Ltd - - vendor.id pci 0x1888 -&device.id pci 0x0301 -+device.name VMFX1 FPGA PMC module - - vendor.id pci 0x1888 -&device.id pci 0x0601 -+device.name VSM2 dual PMC carrier - - vendor.id pci 0x1888 -&device.id pci 0x0710 -+device.name VS14x series PowerPC PCI board - - vendor.id pci 0x1888 -&device.id pci 0x0720 -+device.name VS24x series PowerPC PCI board - - vendor.id pci 0x1894 -+vendor.name KNC One - - vendor.id pci 0x1896 -+vendor.name B&B Electronics Manufacturing Company, Inc. - - vendor.id pci 0x18a1 -+vendor.name Astute Networks Inc. - - vendor.id pci 0x18ac -+vendor.name DViCO Corporation - - vendor.id pci 0x18ac -&device.id pci 0xd810 -+device.name FusionHDTV 3 Gold - - vendor.id pci 0x18b8 -+vendor.name Ammasso - - vendor.id pci 0x18bc -+vendor.name Info-Tek Corp. - - vendor.id pci 0x18c8 -+vendor.name Cray Inc - - vendor.id pci 0x18c9 -+vendor.name ARVOO Engineering BV - - vendor.id pci 0x18ca -+vendor.name XGI - Xabre Graphics Inc - - vendor.id pci 0x18ca -&device.id pci 0x0040 -+device.name Volari V8 - - vendor.id pci 0x18e6 -+vendor.name MPL AG - - vendor.id pci 0x18e6 -&device.id pci 0x0001 -+device.name OSCI [Octal Serial Communication Interface] - - vendor.id pci 0x18f7 -+vendor.name Commtech, Inc. - - vendor.id pci 0x18f7 -&device.id pci 0x0001 -+device.name Fastcom ESCC-PCI-335 - - vendor.id pci 0x18f7 -&device.id pci 0x0002 -+device.name Fastcom 422/4-PCI-335 - - vendor.id pci 0x18f7 -&device.id pci 0x0004 -+device.name Fastcom 422/2-PCI-335 - - vendor.id pci 0x18f7 -&device.id pci 0x0005 -+device.name Fastcom IGESCC-PCI-ISO/1 - - vendor.id pci 0x18f7 -&device.id pci 0x000a -+device.name Fastcom 232/4-PCI-335 - - vendor.id pci 0x18fb -+vendor.name Resilience Corporation - - vendor.id pci 0x1924 -+vendor.name Level 5 Networks Inc. - - vendor.id pci 0x1966 -+vendor.name Orad Hi-Tec Systems - - vendor.id pci 0x1975 -+vendor.name Pudlis Co. Ltd. - - vendor.id pci 0x1993 -+vendor.name Innominate Security Technologies AG - - vendor.id pci 0x1a08 -+vendor.name Sierra semiconductor - - vendor.id pci 0x1a08 -&device.id pci 0x0000 -+device.name SC15064 - - vendor.id pci 0x1b13 -+vendor.name Jaton Corp - - vendor.id pci 0x1c1c -+vendor.name Symphony - - vendor.id pci 0x1c1c -&device.id pci 0x0001 -+device.name 82C101 - - vendor.id pci 0x1d44 -+vendor.name DPT - - vendor.id pci 0x1d44 -&device.id pci 0xa400 -+device.name PM2x24/PM3224 - - vendor.id pci 0x1de1 -+vendor.name Tekram Technology Co.,Ltd. - - vendor.id pci 0x1de1 -&device.id pci 0x0391 -+device.name TRM-S1040 - - vendor.id pci 0x1de1 -&device.id pci 0x2020 -+device.name DC-390 - - vendor.id pci 0x1de1 -&device.id pci 0x690c -+device.name 690c - - vendor.id pci 0x1de1 -&device.id pci 0xdc29 -+device.name DC290 - - vendor.id pci 0x1fc0 -+vendor.name Tumsan Oy - - vendor.id pci 0x1fc0 -&device.id pci 0x0300 -+device.name E2200 Dual E1/Rawpipe Card - - vendor.id pci 0x2000 -+vendor.name Smart Link Ltd. - - vendor.id pci 0x2001 -+vendor.name Temporal Research Ltd - - vendor.id pci 0x2003 -+vendor.name Smart Link Ltd. - - vendor.id pci 0x2004 -+vendor.name Smart Link Ltd. - - vendor.id pci 0x21c3 -+vendor.name 21st Century Computer Corp. - - vendor.id pci 0x2348 -+vendor.name Racore - - vendor.id pci 0x2348 -&device.id pci 0x2010 -+device.name 8142 100VG/AnyLAN - - vendor.id pci 0x2646 -+vendor.name Kingston Technologies - - vendor.id pci 0x270b -+vendor.name Xantel Corporation - - vendor.id pci 0x270f -+vendor.name Chaintech Computer Co. Ltd - - vendor.id pci 0x2711 -+vendor.name AVID Technology Inc. - - vendor.id pci 0x2a15 -+vendor.name 3D Vision(???) - - vendor.id pci 0x3000 -+vendor.name Hansol Electronics Inc. - - vendor.id pci 0x3142 -+vendor.name Post Impression Systems. - - vendor.id pci 0x3388 -+vendor.name Hint Corp - - vendor.id pci 0x3388 -&device.id pci 0x0013 -+device.name HiNT HC4 PCI to ISDN bridge, Multimedia audio controller - - vendor.id pci 0x3388 -&device.id pci 0x0014 -+device.name HiNT HC4 PCI to ISDN bridge, Network controller - - vendor.id pci 0x3388 -&device.id pci 0x0020 -+device.name HB6 Universal PCI-PCI bridge (transparent mode) - - vendor.id pci 0x3388 -&device.id pci 0x0021 -+device.name HB6 Universal PCI-PCI bridge (non-transparent mode) - - vendor.id pci 0x3388 -&device.id pci 0x0021 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1050 -+subdevice.name CT7 mainboard - - vendor.id pci 0x3388 -&device.id pci 0x0021 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1080 -+subdevice.name CT8 mainboard - - vendor.id pci 0x3388 -&device.id pci 0x0021 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10a0 -+subdevice.name CA3/CR3 mainboard - - vendor.id pci 0x3388 -&device.id pci 0x0021 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x3010 -+subdevice.name PPCI mezzanine (32-bit PMC) - - vendor.id pci 0x3388 -&device.id pci 0x0021 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x3011 -+subdevice.name PPCI mezzanine (64-bit PMC) - - vendor.id pci 0x3388 -&device.id pci 0x0022 -+device.name HiNT HB4 PCI-PCI Bridge (PCI6150) - - vendor.id pci 0x3388 -&device.id pci 0x0026 -+device.name HB2 PCI-PCI Bridge - - vendor.id pci 0x3388 -&device.id pci 0x101a -+device.name E.Band [AudioTrak Inca88] - - vendor.id pci 0x3388 -&device.id pci 0x101b -+device.name E.Band [AudioTrak Inca88] - - vendor.id pci 0x3388 -&device.id pci 0x8011 -+device.name VXPro II Chipset - - vendor.id pci 0x3388 -&device.id pci 0x8011 -&subvendor.id pci 0x3388 -&subdevice.id pci 0x8011 -+subdevice.name VXPro II Chipset CPU to PCI Bridge - - vendor.id pci 0x3388 -&device.id pci 0x8012 -+device.name VXPro II Chipset - - vendor.id pci 0x3388 -&device.id pci 0x8012 -&subvendor.id pci 0x3388 -&subdevice.id pci 0x8012 -+subdevice.name VXPro II Chipset PCI to ISA Bridge - - vendor.id pci 0x3388 -&device.id pci 0x8013 -+device.name VXPro II IDE - - vendor.id pci 0x3388 -&device.id pci 0x8013 -&subvendor.id pci 0x3388 -&subdevice.id pci 0x8013 -+subdevice.name VXPro II Chipset EIDE Controller - - vendor.id pci 0x3411 -+vendor.name Quantum Designs (H.K.) Inc - - vendor.id pci 0x3513 -+vendor.name ARCOM Control Systems Ltd - - vendor.id pci 0x3842 -+vendor.name eVga.com. Corp. - - vendor.id pci 0x38ef -+vendor.name 4Links - - vendor.id pci 0x3d3d -+vendor.name 3DLabs - - vendor.id pci 0x3d3d -&device.id pci 0x0001 -+device.name GLINT 300SX - - vendor.id pci 0x3d3d -&device.id pci 0x0002 -+device.name GLINT 500TX - - vendor.id pci 0x3d3d -&device.id pci 0x0003 -+device.name GLINT Delta - - vendor.id pci 0x3d3d -&device.id pci 0x0004 -+device.name Permedia - - vendor.id pci 0x3d3d -&device.id pci 0x0005 -+device.name Permedia - - vendor.id pci 0x3d3d -&device.id pci 0x0006 -+device.name GLINT MX - - vendor.id pci 0x3d3d -&device.id pci 0x0007 -+device.name 3D Extreme - - vendor.id pci 0x3d3d -&device.id pci 0x0008 -+device.name GLINT Gamma G1 - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -+device.name Permedia II 2D+3D - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -&subvendor.id pci 0x1040 -&subdevice.id pci 0x0011 -+subdevice.name AccelStar II - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -&subvendor.id pci 0x13e9 -&subdevice.id pci 0x1000 -+subdevice.name 6221L-4U - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -&subvendor.id pci 0x3d3d -&subdevice.id pci 0x0100 -+subdevice.name AccelStar II 3D Accelerator - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -&subvendor.id pci 0x3d3d -&subdevice.id pci 0x0111 -+subdevice.name Permedia 3:16 - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -&subvendor.id pci 0x3d3d -&subdevice.id pci 0x0114 -+subdevice.name Santa Ana - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -&subvendor.id pci 0x3d3d -&subdevice.id pci 0x0116 -+subdevice.name Oxygen GVX1 - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -&subvendor.id pci 0x3d3d -&subdevice.id pci 0x0119 -+subdevice.name Scirocco - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -&subvendor.id pci 0x3d3d -&subdevice.id pci 0x0120 -+subdevice.name Santa Ana PCL - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -&subvendor.id pci 0x3d3d -&subdevice.id pci 0x0125 -+subdevice.name Oxygen VX1 - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -&subvendor.id pci 0x3d3d -&subdevice.id pci 0x0127 -+subdevice.name Permedia3 Create! - - vendor.id pci 0x3d3d -&device.id pci 0x000a -+device.name GLINT R3 - - vendor.id pci 0x3d3d -&device.id pci 0x000a -&subvendor.id pci 0x3d3d -&subdevice.id pci 0x0121 -+subdevice.name Oxygen VX1 - - vendor.id pci 0x3d3d -&device.id pci 0x000c -+device.name GLINT R3 [Oxygen VX1] - - vendor.id pci 0x3d3d -&device.id pci 0x000c -&subvendor.id pci 0x3d3d -&subdevice.id pci 0x0144 -+subdevice.name Oxygen VX1-4X AGP [Permedia 4] - - vendor.id pci 0x3d3d -&device.id pci 0x000d -+device.name GLint R4 rev A - - vendor.id pci 0x3d3d -&device.id pci 0x0011 -+device.name GLint R4 rev B - - vendor.id pci 0x3d3d -&device.id pci 0x0012 -+device.name GLint R5 rev A - - vendor.id pci 0x3d3d -&device.id pci 0x0013 -+device.name GLint R5 rev B - - vendor.id pci 0x3d3d -&device.id pci 0x0020 -+device.name VP10 visual processor - - vendor.id pci 0x3d3d -&device.id pci 0x0022 -+device.name VP10 visual processor - - vendor.id pci 0x3d3d -&device.id pci 0x0024 -+device.name VP9 visual processor - - vendor.id pci 0x3d3d -&device.id pci 0x0100 -+device.name Permedia II 2D+3D - - vendor.id pci 0x3d3d -&device.id pci 0x07a1 -+device.name Wildcat III 6210 - - vendor.id pci 0x3d3d -&device.id pci 0x07a2 -+device.name Sun XVR-500 Graphics Accelerator - - vendor.id pci 0x3d3d -&device.id pci 0x07a3 -+device.name Wildcat IV 7210 - - vendor.id pci 0x3d3d -&device.id pci 0x1004 -+device.name Permedia - - vendor.id pci 0x3d3d -&device.id pci 0x3d04 -+device.name Permedia - - vendor.id pci 0x3d3d -&device.id pci 0xffff -+device.name Glint VGA - - vendor.id pci 0x4005 -+vendor.name Avance Logic Inc. - - vendor.id pci 0x4005 -&device.id pci 0x0300 -+device.name ALS300 PCI Audio Device - - vendor.id pci 0x4005 -&device.id pci 0x0308 -+device.name ALS300+ PCI Audio Device - - vendor.id pci 0x4005 -&device.id pci 0x0309 -+device.name PCI Input Controller - - vendor.id pci 0x4005 -&device.id pci 0x1064 -+device.name ALG-2064 - - vendor.id pci 0x4005 -&device.id pci 0x2064 -+device.name ALG-2064i - - vendor.id pci 0x4005 -&device.id pci 0x2128 -+device.name ALG-2364A GUI Accelerator - - vendor.id pci 0x4005 -&device.id pci 0x2301 -+device.name ALG-2301 - - vendor.id pci 0x4005 -&device.id pci 0x2302 -+device.name ALG-2302 - - vendor.id pci 0x4005 -&device.id pci 0x2303 -+device.name AVG-2302 GUI Accelerator - - vendor.id pci 0x4005 -&device.id pci 0x2364 -+device.name ALG-2364A - - vendor.id pci 0x4005 -&device.id pci 0x2464 -+device.name ALG-2464 - - vendor.id pci 0x4005 -&device.id pci 0x2501 -+device.name ALG-2564A/25128A - - vendor.id pci 0x4005 -&device.id pci 0x4000 -+device.name ALS4000 Audio Chipset - - vendor.id pci 0x4005 -&device.id pci 0x4000 -&subvendor.id pci 0x4005 -&subdevice.id pci 0x4000 -+subdevice.name ALS4000 Audio Chipset - - vendor.id pci 0x4005 -&device.id pci 0x4710 -+device.name ALC200/200P - - vendor.id pci 0x4033 -+vendor.name Addtron Technology Co, Inc. - - vendor.id pci 0x4033 -&device.id pci 0x1360 -+device.name RTL8139 Ethernet - - vendor.id pci 0x4143 -+vendor.name Digital Equipment Corp - - vendor.id pci 0x4144 -+vendor.name Alpha Data - - vendor.id pci 0x416c -+vendor.name Aladdin Knowledge Systems - - vendor.id pci 0x416c -&device.id pci 0x0100 -+device.name AladdinCARD - - vendor.id pci 0x416c -&device.id pci 0x0200 -+device.name CPC - - vendor.id pci 0x4444 -+vendor.name Internext Compression Inc - - vendor.id pci 0x4444 -&device.id pci 0x0016 -+device.name iTVC16 (CX23416) MPEG-2 Encoder - - vendor.id pci 0x4444 -&device.id pci 0x0016 -&subvendor.id pci 0x0070 -&subdevice.id pci 0x4009 -+subdevice.name WinTV PVR 250 - - vendor.id pci 0x4444 -&device.id pci 0x0803 -+device.name iTVC15 MPEG-2 Encoder - - vendor.id pci 0x4444 -&device.id pci 0x0803 -&subvendor.id pci 0x0070 -&subdevice.id pci 0x4000 -+subdevice.name WinTV PVR-350 - - vendor.id pci 0x4444 -&device.id pci 0x0803 -&subvendor.id pci 0x0070 -&subdevice.id pci 0x4001 -+subdevice.name WinTV PVR-250 - - vendor.id pci 0x4468 -+vendor.name Bridgeport machines - - vendor.id pci 0x4594 -+vendor.name Cogetec Informatique Inc - - vendor.id pci 0x45fb -+vendor.name Baldor Electric Company - - vendor.id pci 0x4680 -+vendor.name Umax Computer Corp - - vendor.id pci 0x4843 -+vendor.name Hercules Computer Technology Inc - - vendor.id pci 0x4916 -+vendor.name RedCreek Communications Inc - - vendor.id pci 0x4916 -&device.id pci 0x1960 -+device.name RedCreek PCI adapter - - vendor.id pci 0x4943 -+vendor.name Growth Networks - - vendor.id pci 0x494f -+vendor.name ACCES I/O Products, Inc. - - vendor.id pci 0x494f -&device.id pci 0x10e8 -+device.name LPCI-COM-8SM - - vendor.id pci 0x4978 -+vendor.name Axil Computer Inc - - vendor.id pci 0x4a14 -+vendor.name NetVin - - vendor.id pci 0x4a14 -&device.id pci 0x5000 -+device.name NV5000SC - - vendor.id pci 0x4a14 -&device.id pci 0x5000 -&subvendor.id pci 0x4a14 -&subdevice.id pci 0x5000 -+subdevice.name RT8029-Based Ethernet Adapter - - vendor.id pci 0x4b10 -+vendor.name Buslogic Inc. - - vendor.id pci 0x4c48 -+vendor.name LUNG HWA Electronics - - vendor.id pci 0x4c53 -+vendor.name SBS Technologies - - vendor.id pci 0x4c53 -&device.id pci 0x0000 -+device.name PLUSTEST device - - vendor.id pci 0x4c53 -&device.id pci 0x0000 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x3000 -+subdevice.name PLUSTEST card (PC104+) - - vendor.id pci 0x4c53 -&device.id pci 0x0000 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x3001 -+subdevice.name PLUSTEST card (PMC) - - vendor.id pci 0x4c53 -&device.id pci 0x0001 -+device.name PLUSTEST-MM device - - vendor.id pci 0x4c53 -&device.id pci 0x0001 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x3002 -+subdevice.name PLUSTEST-MM card (PMC) - - vendor.id pci 0x4ca1 -+vendor.name Seanix Technology Inc - - vendor.id pci 0x4d51 -+vendor.name MediaQ Inc. - - vendor.id pci 0x4d51 -&device.id pci 0x0200 -+device.name MQ-200 - - vendor.id pci 0x4d54 -+vendor.name Microtechnica Co Ltd - - vendor.id pci 0x4ddc -+vendor.name ILC Data Device Corp - - vendor.id pci 0x4ddc -&device.id pci 0x0100 -+device.name DD-42924I5-300 (ARINC 429 Data Bus) - - vendor.id pci 0x4ddc -&device.id pci 0x0801 -+device.name BU-65570I1 MIL-STD-1553 Test and Simulation - - vendor.id pci 0x4ddc -&device.id pci 0x0802 -+device.name BU-65570I2 MIL-STD-1553 Test and Simulation - - vendor.id pci 0x4ddc -&device.id pci 0x0811 -+device.name BU-65572I1 MIL-STD-1553 Test and Simulation - - vendor.id pci 0x4ddc -&device.id pci 0x0812 -+device.name BU-65572I2 MIL-STD-1553 Test and Simulation - - vendor.id pci 0x4ddc -&device.id pci 0x0881 -+device.name BU-65570T1 MIL-STD-1553 Test and Simulation - - vendor.id pci 0x4ddc -&device.id pci 0x0882 -+device.name BU-65570T2 MIL-STD-1553 Test and Simulation - - vendor.id pci 0x4ddc -&device.id pci 0x0891 -+device.name BU-65572T1 MIL-STD-1553 Test and Simulation - - vendor.id pci 0x4ddc -&device.id pci 0x0892 -+device.name BU-65572T2 MIL-STD-1553 Test and Simulation - - vendor.id pci 0x4ddc -&device.id pci 0x0901 -+device.name BU-65565C1 MIL-STD-1553 Data Bus - - vendor.id pci 0x4ddc -&device.id pci 0x0902 -+device.name BU-65565C2 MIL-STD-1553 Data Bus - - vendor.id pci 0x4ddc -&device.id pci 0x0903 -+device.name BU-65565C3 MIL-STD-1553 Data Bus - - vendor.id pci 0x4ddc -&device.id pci 0x0904 -+device.name BU-65565C4 MIL-STD-1553 Data Bus - - vendor.id pci 0x4ddc -&device.id pci 0x0b01 -+device.name BU-65569I1 MIL-STD-1553 Data Bus - - vendor.id pci 0x4ddc -&device.id pci 0x0b02 -+device.name BU-65569I2 MIL-STD-1553 Data Bus - - vendor.id pci 0x4ddc -&device.id pci 0x0b03 -+device.name BU-65569I3 MIL-STD-1553 Data Bus - - vendor.id pci 0x4ddc -&device.id pci 0x0b04 -+device.name BU-65569I4 MIL-STD-1553 Data Bus - - vendor.id pci 0x5046 -+vendor.name GemTek Technology Corporation - - vendor.id pci 0x5046 -&device.id pci 0x1001 -+device.name PCI Radio - - vendor.id pci 0x5053 -+vendor.name Voyetra Technologies - - vendor.id pci 0x5053 -&device.id pci 0x2010 -+device.name Daytona Audio Adapter - - vendor.id pci 0x5136 -+vendor.name S S Technologies - - vendor.id pci 0x5143 -+vendor.name Qualcomm Inc - - vendor.id pci 0x5145 -+vendor.name Ensoniq (Old) - - vendor.id pci 0x5145 -&device.id pci 0x3031 -+device.name Concert AudioPCI - - vendor.id pci 0x5168 -+vendor.name Animation Technologies Inc. - - vendor.id pci 0x5301 -+vendor.name Alliance Semiconductor Corp. - - vendor.id pci 0x5301 -&device.id pci 0x0001 -+device.name ProMotion aT3D - - vendor.id pci 0x5333 -+vendor.name S3 Inc. - - vendor.id pci 0x5333 -&device.id pci 0x0551 -+device.name Plato/PX (system) - - vendor.id pci 0x5333 -&device.id pci 0x5631 -+device.name 86c325 [ViRGE] - - vendor.id pci 0x5333 -&device.id pci 0x8800 -+device.name 86c866 [Vision 866] - - vendor.id pci 0x5333 -&device.id pci 0x8801 -+device.name 86c964 [Vision 964] - - vendor.id pci 0x5333 -&device.id pci 0x8810 -+device.name 86c764_0 [Trio 32 vers 0] - - vendor.id pci 0x5333 -&device.id pci 0x8811 -+device.name 86c764/765 [Trio32/64/64V+] - - vendor.id pci 0x5333 -&device.id pci 0x8812 -+device.name 86cM65 [Aurora64V+] - - vendor.id pci 0x5333 -&device.id pci 0x8813 -+device.name 86c764_3 [Trio 32/64 vers 3] - - vendor.id pci 0x5333 -&device.id pci 0x8814 -+device.name 86c767 [Trio 64UV+] - - vendor.id pci 0x5333 -&device.id pci 0x8815 -+device.name 86cM65 [Aurora 128] - - vendor.id pci 0x5333 -&device.id pci 0x883d -+device.name 86c988 [ViRGE/VX] - - vendor.id pci 0x5333 -&device.id pci 0x8870 -+device.name FireGL - - vendor.id pci 0x5333 -&device.id pci 0x8880 -+device.name 86c868 [Vision 868 VRAM] vers 0 - - vendor.id pci 0x5333 -&device.id pci 0x8881 -+device.name 86c868 [Vision 868 VRAM] vers 1 - - vendor.id pci 0x5333 -&device.id pci 0x8882 -+device.name 86c868 [Vision 868 VRAM] vers 2 - - vendor.id pci 0x5333 -&device.id pci 0x8883 -+device.name 86c868 [Vision 868 VRAM] vers 3 - - vendor.id pci 0x5333 -&device.id pci 0x88b0 -+device.name 86c928 [Vision 928 VRAM] vers 0 - - vendor.id pci 0x5333 -&device.id pci 0x88b1 -+device.name 86c928 [Vision 928 VRAM] vers 1 - - vendor.id pci 0x5333 -&device.id pci 0x88b2 -+device.name 86c928 [Vision 928 VRAM] vers 2 - - vendor.id pci 0x5333 -&device.id pci 0x88b3 -+device.name 86c928 [Vision 928 VRAM] vers 3 - - vendor.id pci 0x5333 -&device.id pci 0x88c0 -+device.name 86c864 [Vision 864 DRAM] vers 0 - - vendor.id pci 0x5333 -&device.id pci 0x88c1 -+device.name 86c864 [Vision 864 DRAM] vers 1 - - vendor.id pci 0x5333 -&device.id pci 0x88c2 -+device.name 86c864 [Vision 864-P DRAM] vers 2 - - vendor.id pci 0x5333 -&device.id pci 0x88c3 -+device.name 86c864 [Vision 864-P DRAM] vers 3 - - vendor.id pci 0x5333 -&device.id pci 0x88d0 -+device.name 86c964 [Vision 964 VRAM] vers 0 - - vendor.id pci 0x5333 -&device.id pci 0x88d1 -+device.name 86c964 [Vision 964 VRAM] vers 1 - - vendor.id pci 0x5333 -&device.id pci 0x88d2 -+device.name 86c964 [Vision 964-P VRAM] vers 2 - - vendor.id pci 0x5333 -&device.id pci 0x88d3 -+device.name 86c964 [Vision 964-P VRAM] vers 3 - - vendor.id pci 0x5333 -&device.id pci 0x88f0 -+device.name 86c968 [Vision 968 VRAM] rev 0 - - vendor.id pci 0x5333 -&device.id pci 0x88f1 -+device.name 86c968 [Vision 968 VRAM] rev 1 - - vendor.id pci 0x5333 -&device.id pci 0x88f2 -+device.name 86c968 [Vision 968 VRAM] rev 2 - - vendor.id pci 0x5333 -&device.id pci 0x88f3 -+device.name 86c968 [Vision 968 VRAM] rev 3 - - vendor.id pci 0x5333 -&device.id pci 0x8900 -+device.name 86c755 [Trio 64V2/DX] - - vendor.id pci 0x5333 -&device.id pci 0x8900 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8900 -+subdevice.name 86C775 Trio64V2/DX - - vendor.id pci 0x5333 -&device.id pci 0x8901 -+device.name 86c775/86c785 [Trio 64V2/DX or /GX] - - vendor.id pci 0x5333 -&device.id pci 0x8901 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8901 -+subdevice.name 86C775 Trio64V2/DX, 86C785 Trio64V2/GX - - vendor.id pci 0x5333 -&device.id pci 0x8902 -+device.name Plato/PX - - vendor.id pci 0x5333 -&device.id pci 0x8903 -+device.name Trio 3D business multimedia - - vendor.id pci 0x5333 -&device.id pci 0x8904 -+device.name Trio 64 3D - - vendor.id pci 0x5333 -&device.id pci 0x8904 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x00db -+subdevice.name Integrated Trio3D - - vendor.id pci 0x5333 -&device.id pci 0x8904 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8904 -+subdevice.name 86C365 Trio3D AGP - - vendor.id pci 0x5333 -&device.id pci 0x8905 -+device.name Trio 64V+ family - - vendor.id pci 0x5333 -&device.id pci 0x8906 -+device.name Trio 64V+ family - - vendor.id pci 0x5333 -&device.id pci 0x8907 -+device.name Trio 64V+ family - - vendor.id pci 0x5333 -&device.id pci 0x8908 -+device.name Trio 64V+ family - - vendor.id pci 0x5333 -&device.id pci 0x8909 -+device.name Trio 64V+ family - - vendor.id pci 0x5333 -&device.id pci 0x890a -+device.name Trio 64V+ family - - vendor.id pci 0x5333 -&device.id pci 0x890b -+device.name Trio 64V+ family - - vendor.id pci 0x5333 -&device.id pci 0x890c -+device.name Trio 64V+ family - - vendor.id pci 0x5333 -&device.id pci 0x890d -+device.name Trio 64V+ family - - vendor.id pci 0x5333 -&device.id pci 0x890e -+device.name Trio 64V+ family - - vendor.id pci 0x5333 -&device.id pci 0x890f -+device.name Trio 64V+ family - - vendor.id pci 0x5333 -&device.id pci 0x8a01 -+device.name ViRGE/DX or /GX - - vendor.id pci 0x5333 -&device.id pci 0x8a01 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb032 -+subdevice.name ViRGE/GX - - vendor.id pci 0x5333 -&device.id pci 0x8a01 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x1617 -+subdevice.name Nitro 3D - - vendor.id pci 0x5333 -&device.id pci 0x8a01 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x1717 -+subdevice.name Nitro 3D - - vendor.id pci 0x5333 -&device.id pci 0x8a01 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8a01 -+subdevice.name ViRGE/DX - - vendor.id pci 0x5333 -&device.id pci 0x8a10 -+device.name ViRGE/GX2 - - vendor.id pci 0x5333 -&device.id pci 0x8a10 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x8a10 -+subdevice.name Stealth 3D 4000 - - vendor.id pci 0x5333 -&device.id pci 0x8a13 -+device.name 86c368 [Trio 3D/2X] - - vendor.id pci 0x5333 -&device.id pci 0x8a13 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8a13 -+subdevice.name Trio3D/2X - - vendor.id pci 0x5333 -&device.id pci 0x8a20 -+device.name 86c794 [Savage 3D] - - vendor.id pci 0x5333 -&device.id pci 0x8a20 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8a20 -+subdevice.name 86C391 Savage3D - - vendor.id pci 0x5333 -&device.id pci 0x8a21 -+device.name 86c390 [Savage 3D/MV] - - vendor.id pci 0x5333 -&device.id pci 0x8a21 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8a21 -+subdevice.name 86C390 Savage3D/MV - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -+device.name Savage 4 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8068 -+subdevice.name Savage 4 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8069 -+subdevice.name Savage 4 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8110 -+subdevice.name Savage4 LT - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x105d -&subdevice.id pci 0x0018 -+subdevice.name SR9 8Mb SDRAM - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x105d -&subdevice.id pci 0x002a -+subdevice.name SR9 Pro 16Mb SDRAM - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x105d -&subdevice.id pci 0x003a -+subdevice.name SR9 Pro 32Mb SDRAM - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x105d -&subdevice.id pci 0x092f -+subdevice.name SR9 Pro+ 16Mb SGRAM - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4207 -+subdevice.name Stealth III S540 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4800 -+subdevice.name Stealth III S540 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4807 -+subdevice.name SpeedStar A90 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4808 -+subdevice.name Stealth III S540 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4809 -+subdevice.name Stealth III S540 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x480e -+subdevice.name Stealth III S540 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4904 -+subdevice.name Stealth III S520 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4905 -+subdevice.name SpeedStar A200 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4a09 -+subdevice.name Stealth III S540 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4a0b -+subdevice.name Stealth III S540 Xtreme - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4a0f -+subdevice.name Stealth III S540 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x4e01 -+subdevice.name Stealth III S540 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x101d -+subdevice.name 3d Blaster Savage 4 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x1102 -&subdevice.id pci 0x101e -+subdevice.name 3d Blaster Savage 4 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8100 -+subdevice.name 86C394-397 Savage4 SDRAM 100 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8110 -+subdevice.name 86C394-397 Savage4 SDRAM 110 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8125 -+subdevice.name 86C394-397 Savage4 SDRAM 125 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8143 -+subdevice.name 86C394-397 Savage4 SDRAM 143 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8a22 -+subdevice.name 86C394-397 Savage4 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x8a2e -+subdevice.name 86C394-397 Savage4 32bit - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x9125 -+subdevice.name 86C394-397 Savage4 SGRAM 125 - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -&subvendor.id pci 0x5333 -&subdevice.id pci 0x9143 -+subdevice.name 86C394-397 Savage4 SGRAM 143 - - vendor.id pci 0x5333 -&device.id pci 0x8a23 -+device.name Savage 4 - - vendor.id pci 0x5333 -&device.id pci 0x8a25 -+device.name ProSavage PM133 - - vendor.id pci 0x5333 -&device.id pci 0x8a26 -+device.name ProSavage KM133 - - vendor.id pci 0x5333 -&device.id pci 0x8c00 -+device.name ViRGE/M3 - - vendor.id pci 0x5333 -&device.id pci 0x8c01 -+device.name ViRGE/MX - - vendor.id pci 0x5333 -&device.id pci 0x8c01 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name ViRGE/MX - - vendor.id pci 0x5333 -&device.id pci 0x8c02 -+device.name ViRGE/MX+ - - vendor.id pci 0x5333 -&device.id pci 0x8c03 -+device.name ViRGE/MX+MV - - vendor.id pci 0x5333 -&device.id pci 0x8c10 -+device.name 86C270-294 Savage/MX-MV - - vendor.id pci 0x5333 -&device.id pci 0x8c11 -+device.name 82C270-294 Savage/MX - - vendor.id pci 0x5333 -&device.id pci 0x8c12 -+device.name 86C270-294 Savage/IX-MV - - vendor.id pci 0x5333 -&device.id pci 0x8c12 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x017f -+subdevice.name ThinkPad T20 - - vendor.id pci 0x5333 -&device.id pci 0x8c13 -+device.name 86C270-294 Savage/IX - - vendor.id pci 0x5333 -&device.id pci 0x8c13 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Magnia Z310 - - vendor.id pci 0x5333 -&device.id pci 0x8c22 -+device.name SuperSavage MX/128 - - vendor.id pci 0x5333 -&device.id pci 0x8c24 -+device.name SuperSavage MX/64 - - vendor.id pci 0x5333 -&device.id pci 0x8c26 -+device.name SuperSavage MX/64C - - vendor.id pci 0x5333 -&device.id pci 0x8c2a -+device.name SuperSavage IX/128 SDR - - vendor.id pci 0x5333 -&device.id pci 0x8c2b -+device.name SuperSavage IX/128 DDR - - vendor.id pci 0x5333 -&device.id pci 0x8c2c -+device.name SuperSavage IX/64 SDR - - vendor.id pci 0x5333 -&device.id pci 0x8c2d -+device.name SuperSavage IX/64 DDR - - vendor.id pci 0x5333 -&device.id pci 0x8c2e -+device.name SuperSavage IX/C SDR - - vendor.id pci 0x5333 -&device.id pci 0x8c2e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01fc -+subdevice.name ThinkPad T23 (2647-4MG) - - vendor.id pci 0x5333 -&device.id pci 0x8c2f -+device.name SuperSavage IX/C DDR - - vendor.id pci 0x5333 -&device.id pci 0x8d01 -+device.name 86C380 [ProSavageDDR K4M266] - - vendor.id pci 0x5333 -&device.id pci 0x8d02 -+device.name VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK) - - vendor.id pci 0x5333 -&device.id pci 0x8d03 -+device.name VT8751 [ProSavageDDR P4M266] - - vendor.id pci 0x5333 -&device.id pci 0x8d04 -+device.name VT8375 [ProSavage8 KM266/KL266] - - vendor.id pci 0x5333 -&device.id pci 0x9102 -+device.name 86C410 Savage 2000 - - vendor.id pci 0x5333 -&device.id pci 0x9102 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x5932 -+subdevice.name Viper II Z200 - - vendor.id pci 0x5333 -&device.id pci 0x9102 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x5934 -+subdevice.name Viper II Z200 - - vendor.id pci 0x5333 -&device.id pci 0x9102 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x5952 -+subdevice.name Viper II Z200 - - vendor.id pci 0x5333 -&device.id pci 0x9102 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x5954 -+subdevice.name Viper II Z200 - - vendor.id pci 0x5333 -&device.id pci 0x9102 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x5a35 -+subdevice.name Viper II Z200 - - vendor.id pci 0x5333 -&device.id pci 0x9102 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x5a37 -+subdevice.name Viper II Z200 - - vendor.id pci 0x5333 -&device.id pci 0x9102 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x5a55 -+subdevice.name Viper II Z200 - - vendor.id pci 0x5333 -&device.id pci 0x9102 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x5a57 -+subdevice.name Viper II Z200 - - vendor.id pci 0x5333 -&device.id pci 0xca00 -+device.name SonicVibes - - vendor.id pci 0x544c -+vendor.name Teralogic Inc - - vendor.id pci 0x544c -&device.id pci 0x0350 -+device.name TL880-based HDTV/ATSC tuner - - vendor.id pci 0x5455 -+vendor.name Technische University Berlin - - vendor.id pci 0x5455 -&device.id pci 0x4458 -+device.name S5933 - - vendor.id pci 0x5519 -+vendor.name Cnet Technologies, Inc. - - vendor.id pci 0x5544 -+vendor.name Dunord Technologies - - vendor.id pci 0x5544 -&device.id pci 0x0001 -+device.name I-30xx Scanner Interface - - vendor.id pci 0x5555 -+vendor.name Genroco, Inc - - vendor.id pci 0x5555 -&device.id pci 0x0003 -+device.name TURBOstor HFP-832 [HiPPI NIC] - - vendor.id pci 0x5654 -+vendor.name VoiceTronix Pty Ltd - - vendor.id pci 0x5654 -&device.id pci 0x3132 -+device.name OpenSwitch12 - - vendor.id pci 0x5700 -+vendor.name Netpower - - vendor.id pci 0x5851 -+vendor.name Exacq Technologies - - vendor.id pci 0x6356 -+vendor.name UltraStor - - vendor.id pci 0x6374 -+vendor.name c't Magazin fuer Computertechnik - - vendor.id pci 0x6374 -&device.id pci 0x6773 -+device.name GPPCI - - vendor.id pci 0x6409 -+vendor.name Logitec Corp. - - vendor.id pci 0x6666 -+vendor.name Decision Computer International Co. - - vendor.id pci 0x6666 -&device.id pci 0x0001 -+device.name PCCOM4 - - vendor.id pci 0x6666 -&device.id pci 0x0002 -+device.name PCCOM8 - - vendor.id pci 0x7604 -+vendor.name O.N. Electronic Co Ltd. - - vendor.id pci 0x7bde -+vendor.name MIDAC Corporation - - vendor.id pci 0x7fed -+vendor.name PowerTV - - vendor.id pci 0x8008 -+vendor.name Quancom Electronic GmbH - - vendor.id pci 0x8008 -&device.id pci 0x0010 -+device.name WDOG1 [PCI-Watchdog 1] - - vendor.id pci 0x8008 -&device.id pci 0x0011 -+device.name PWDOG2 [PCI-Watchdog 2] - - vendor.id pci 0x807d -+vendor.name Asustek Computer, Inc. - - vendor.id pci 0x8086 -+vendor.name Intel Corporation - - vendor.id pci 0x8086 -&device.id pci 0x0007 -+device.name 82379AB - - vendor.id pci 0x8086 -&device.id pci 0x0008 -+device.name Extended Express System Support Controller - - vendor.id pci 0x8086 -&device.id pci 0x0008 -&subvendor.id pci 0x0008 -&subdevice.id pci 0x1000 -+subdevice.name WorldMark 4300 INCA ASIC - - vendor.id pci 0x8086 -&device.id pci 0x0039 -+device.name 21145 Fast Ethernet - - vendor.id pci 0x8086 -&device.id pci 0x0122 -+device.name 82437FX - - vendor.id pci 0x8086 -&device.id pci 0x0309 -+device.name 80303 I/O Processor PCI-to-PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x030d -+device.name 80312 I/O Companion Chip PCI-to-PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x0326 -+device.name 6700/6702PXH I/OxAPIC Interrupt Controller A - - vendor.id pci 0x8086 -&device.id pci 0x0327 -+device.name 6700PXH I/OxAPIC Interrupt Controller B - - vendor.id pci 0x8086 -&device.id pci 0x0329 -+device.name 6700PXH PCI Express-to-PCI Bridge A - - vendor.id pci 0x8086 -&device.id pci 0x032a -+device.name 6700PXH PCI Express-to-PCI Bridge B - - vendor.id pci 0x8086 -&device.id pci 0x032c -+device.name 6702PXH PCI Express-to-PCI Bridge A - - vendor.id pci 0x8086 -&device.id pci 0x0330 -+device.name 80332 [Dobson] I/O processor - - vendor.id pci 0x8086 -&device.id pci 0x0331 -+device.name 80332 [Dobson] I/O processor - - vendor.id pci 0x8086 -&device.id pci 0x0332 -+device.name 80332 [Dobson] I/O processor - - vendor.id pci 0x8086 -&device.id pci 0x0333 -+device.name 80332 [Dobson] I/O processor - - vendor.id pci 0x8086 -&device.id pci 0x0334 -+device.name 80332 [Dobson] I/O processor - - vendor.id pci 0x8086 -&device.id pci 0x0335 -+device.name 80331 [Lindsay] I/O processor - - vendor.id pci 0x8086 -&device.id pci 0x0336 -+device.name 80331 [Lindsay] I/O processor - - vendor.id pci 0x8086 -&device.id pci 0x0340 -+device.name 41210 [Lanai] Serial to Parallel PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x0341 -+device.name 41210 [Lanai] Serial to Parallel PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x0482 -+device.name 82375EB/SB PCI to EISA Bridge - - vendor.id pci 0x8086 -&device.id pci 0x0483 -+device.name 82424TX/ZX [Saturn] CPU to PCI bridge - - vendor.id pci 0x8086 -&device.id pci 0x0484 -+device.name 82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge - - vendor.id pci 0x8086 -&device.id pci 0x0486 -+device.name 82425EX/ZX [Aries] PCIset with ISA bridge - - vendor.id pci 0x8086 -&device.id pci 0x04a3 -+device.name 82434LX/NX [Mercury/Neptune] Processor to PCI bridge - - vendor.id pci 0x8086 -&device.id pci 0x04d0 -+device.name 82437FX [Triton FX] - - vendor.id pci 0x8086 -&device.id pci 0x0500 -+device.name E8870 Processor bus control - - vendor.id pci 0x8086 -&device.id pci 0x0501 -+device.name E8870 Memory controller - - vendor.id pci 0x8086 -&device.id pci 0x0502 -+device.name E8870 Scalability Port 0 - - vendor.id pci 0x8086 -&device.id pci 0x0503 -+device.name E8870 Scalability Port 1 - - vendor.id pci 0x8086 -&device.id pci 0x0510 -+device.name E8870IO Hub Interface Port 0 registers (8-bit compatibility port) - - vendor.id pci 0x8086 -&device.id pci 0x0511 -+device.name E8870IO Hub Interface Port 1 registers - - vendor.id pci 0x8086 -&device.id pci 0x0512 -+device.name E8870IO Hub Interface Port 2 registers - - vendor.id pci 0x8086 -&device.id pci 0x0513 -+device.name E8870IO Hub Interface Port 3 registers - - vendor.id pci 0x8086 -&device.id pci 0x0514 -+device.name E8870IO Hub Interface Port 4 registers - - vendor.id pci 0x8086 -&device.id pci 0x0515 -+device.name E8870IO General SIOH registers - - vendor.id pci 0x8086 -&device.id pci 0x0516 -+device.name E8870IO RAS registers - - vendor.id pci 0x8086 -&device.id pci 0x0530 -+device.name E8870SP Scalability Port 0 registers - - vendor.id pci 0x8086 -&device.id pci 0x0531 -+device.name E8870SP Scalability Port 1 registers - - vendor.id pci 0x8086 -&device.id pci 0x0532 -+device.name E8870SP Scalability Port 2 registers - - vendor.id pci 0x8086 -&device.id pci 0x0533 -+device.name E8870SP Scalability Port 3 registers - - vendor.id pci 0x8086 -&device.id pci 0x0534 -+device.name E8870SP Scalability Port 4 registers - - vendor.id pci 0x8086 -&device.id pci 0x0535 -+device.name E8870SP Scalability Port 5 registers - - vendor.id pci 0x8086 -&device.id pci 0x0536 -+device.name E8870SP Interleave registers 0 and 1 - - vendor.id pci 0x8086 -&device.id pci 0x0537 -+device.name E8870SP Interleave registers 2 and 3 - - vendor.id pci 0x8086 -&device.id pci 0x0600 -+device.name RAID Controller - - vendor.id pci 0x8086 -&device.id pci 0x0600 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x01c1 -+subdevice.name ICP Vortex GDT8546RZ - - vendor.id pci 0x8086 -&device.id pci 0x0600 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x01f7 -+subdevice.name SCRU32 - - vendor.id pci 0x8086 -&device.id pci 0x061f -+device.name 80303 I/O Processor - - vendor.id pci 0x8086 -&device.id pci 0x0960 -+device.name 80960RP [i960 RP Microprocessor/Bridge] - - vendor.id pci 0x8086 -&device.id pci 0x0962 -+device.name 80960RM [i960RM Bridge] - - vendor.id pci 0x8086 -&device.id pci 0x0964 -+device.name 80960RP [i960 RP Microprocessor/Bridge] - - vendor.id pci 0x8086 -&device.id pci 0x1000 -+device.name 82542 Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1000 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0df -+subdevice.name Compaq NC6132 Gigabit Module - - vendor.id pci 0x8086 -&device.id pci 0x1000 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0e0 -+subdevice.name Compaq NC6133 Gigabit Module - - vendor.id pci 0x8086 -&device.id pci 0x1000 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb123 -+subdevice.name Compaq NC6134 Gigabit NIC - - vendor.id pci 0x8086 -&device.id pci 0x1000 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0119 -+subdevice.name Netfinity Gigabit Ethernet SX Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1000 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1000 -+subdevice.name PRO/1000 Gigabit Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1001 -+device.name 82543GC Gigabit Ethernet Controller (Fiber) - - vendor.id pci 0x8086 -&device.id pci 0x1001 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x004a -+subdevice.name Compaq NC6136 Gigabit Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1001 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01ea -+subdevice.name Netfinity Gigabit Ethernet SX Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1001 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1002 -+subdevice.name PRO/1000 F Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1001 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1003 -+subdevice.name PRO/1000 F Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1002 -+device.name Pro 100 LAN+Modem 56 Cardbus II - - vendor.id pci 0x8086 -&device.id pci 0x1002 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x200e -+subdevice.name Pro 100 LAN+Modem 56 Cardbus II - - vendor.id pci 0x8086 -&device.id pci 0x1002 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2013 -+subdevice.name Pro 100 SR Mobile Combo Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1002 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2017 -+subdevice.name Pro 100 S Combo Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1004 -+device.name 82543GC Gigabit Ethernet Controller (Copper) - - vendor.id pci 0x8086 -&device.id pci 0x1004 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0049 -+subdevice.name Compaq NC7132 Gigabit Upgrade Module - - vendor.id pci 0x8086 -&device.id pci 0x1004 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb1a4 -+subdevice.name Compaq NC7131 Gigabit Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1004 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x10f2 -+subdevice.name Gigabit Ethernet Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1004 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1004 -+subdevice.name PRO/1000 T Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1004 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2004 -+subdevice.name PRO/1000 T Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1008 -+device.name 82544EI Gigabit Ethernet Controller (Copper) - - vendor.id pci 0x8086 -&device.id pci 0x1008 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0269 -+subdevice.name iSeries 1000/100/10 Ethernet Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1008 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x011c -+subdevice.name PRO/1000 XT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1008 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1107 -+subdevice.name PRO/1000 XT Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1008 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2107 -+subdevice.name PRO/1000 XT Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1008 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2110 -+subdevice.name PRO/1000 XT Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1008 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3108 -+subdevice.name PRO/1000 XT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1009 -+device.name 82544EI Gigabit Ethernet Controller (Fiber) - - vendor.id pci 0x8086 -&device.id pci 0x1009 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0268 -+subdevice.name iSeries Gigabit Ethernet Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1009 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1109 -+subdevice.name PRO/1000 XF Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1009 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2109 -+subdevice.name PRO/1000 XF Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x100c -+device.name 82544GC Gigabit Ethernet Controller (Copper) - - vendor.id pci 0x8086 -&device.id pci 0x100c -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1112 -+subdevice.name PRO/1000 T Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x100c -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2112 -+subdevice.name PRO/1000 T Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x100d -+device.name 82544GC Gigabit Ethernet Controller (LOM) - - vendor.id pci 0x8086 -&device.id pci 0x100d -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0123 -+subdevice.name PRO/1000 XT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x100d -&subvendor.id pci 0x1079 -&subdevice.id pci 0x891f -+subdevice.name 82544GC Based Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x100d -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1080 -+subdevice.name CT8 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x100d -&subvendor.id pci 0x8086 -&subdevice.id pci 0x110d -+subdevice.name 82544GC Based Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x100e -+device.name 82540EM Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x100e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0265 -+subdevice.name PRO/1000 MT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x100e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name PRO/1000 MT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x100e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x026a -+subdevice.name PRO/1000 MT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x100e -&subvendor.id pci 0x1028 -&subdevice.id pci 0x002e -+subdevice.name Optiplex GX260 - - vendor.id pci 0x8086 -&device.id pci 0x100e -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0151 -+subdevice.name PRO/1000 MT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x100e -&subvendor.id pci 0x107b -&subdevice.id pci 0x8920 -+subdevice.name PRO/1000 MT Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x100e -&subvendor.id pci 0x8086 -&subdevice.id pci 0x001e -+subdevice.name PRO/1000 MT Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x100e -&subvendor.id pci 0x8086 -&subdevice.id pci 0x002e -+subdevice.name PRO/1000 MT Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x100f -+device.name 82545EM Gigabit Ethernet Controller (Copper) - - vendor.id pci 0x8086 -&device.id pci 0x100f -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0269 -+subdevice.name iSeries 1000/100/10 Ethernet Adapter - - vendor.id pci 0x8086 -&device.id pci 0x100f -&subvendor.id pci 0x1014 -&subdevice.id pci 0x028e -+subdevice.name PRO/1000 MT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x100f -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1000 -+subdevice.name PRO/1000 MT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x100f -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1001 -+subdevice.name PRO/1000 MT Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1010 -+device.name 82546EB Gigabit Ethernet Controller (Copper) - - vendor.id pci 0x8086 -&device.id pci 0x1010 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x027c -+subdevice.name PRO/1000 MT Dual Port Network Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1010 -&subvendor.id pci 0x18fb -&subdevice.id pci 0x7872 -+subdevice.name RESlink-X - - vendor.id pci 0x8086 -&device.id pci 0x1010 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1080 -+subdevice.name CT8 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1010 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10a0 -+subdevice.name CA3/CR3 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1010 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1011 -+subdevice.name PRO/1000 MT Dual Port Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1010 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x101a -+subdevice.name PRO/1000 MT Dual Port Network Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1010 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3424 -+subdevice.name SE7501HG2 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1011 -+device.name 82545EM Gigabit Ethernet Controller (Fiber) - - vendor.id pci 0x8086 -&device.id pci 0x1011 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0268 -+subdevice.name iSeries Gigabit Ethernet Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1011 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1002 -+subdevice.name PRO/1000 MF Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1011 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1003 -+subdevice.name PRO/1000 MF Server Adapter (LX) - - vendor.id pci 0x8086 -&device.id pci 0x1012 -+device.name 82546EB Gigabit Ethernet Controller (Fiber) - - vendor.id pci 0x8086 -&device.id pci 0x1012 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1012 -+subdevice.name PRO/1000 MF Dual Port Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1013 -+device.name 82541EI Gigabit Ethernet Controller (Copper) - - vendor.id pci 0x8086 -&device.id pci 0x1013 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0013 -+subdevice.name PRO/1000 MT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1013 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1013 -+subdevice.name IBM ThinkCentre Network Card - - vendor.id pci 0x8086 -&device.id pci 0x1013 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1113 -+subdevice.name PRO/1000 MT Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1014 -+device.name 82541ER Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1015 -+device.name 82540EM Gigabit Ethernet Controller (LOM) - - vendor.id pci 0x8086 -&device.id pci 0x1016 -+device.name 82540EP Gigabit Ethernet Controller (LOM) - - vendor.id pci 0x8086 -&device.id pci 0x1016 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x052c -+subdevice.name PRO/1000 MT Mobile Connection - - vendor.id pci 0x8086 -&device.id pci 0x1016 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name PRO/1000 MT Mobile Connection - - vendor.id pci 0x8086 -&device.id pci 0x1016 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1016 -+subdevice.name PRO/1000 MT Mobile Connection - - vendor.id pci 0x8086 -&device.id pci 0x1017 -+device.name 82540EP Gigabit Ethernet Controller (LOM) - - vendor.id pci 0x8086 -&device.id pci 0x1017 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1017 -+subdevice.name PR0/1000 MT Desktop Connection - - vendor.id pci 0x8086 -&device.id pci 0x1018 -+device.name 82541EI Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1018 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1018 -+subdevice.name PRO/1000 MT Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1019 -+device.name 82547EI Gigabit Ethernet Controller (LOM) - - vendor.id pci 0x8086 -&device.id pci 0x1019 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x1019 -+subdevice.name GA-8IPE1000 Pro2 motherboard (865PE) - - vendor.id pci 0x8086 -&device.id pci 0x1019 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1019 -+subdevice.name PRO/1000 CT Desktop Connection - - vendor.id pci 0x8086 -&device.id pci 0x1019 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x301f -+subdevice.name D865PERL mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1019 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3427 -+subdevice.name S875WP1-E mainboard - - vendor.id pci 0x8086 -&device.id pci 0x101d -+device.name 82546EB Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x101d -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1000 -+subdevice.name PRO/1000 MT Quad Port Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x101e -+device.name 82540EP Gigabit Ethernet Controller (Mobile) - - vendor.id pci 0x8086 -&device.id pci 0x101e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0549 -+subdevice.name PRO/1000 MT Mobile Connection - - vendor.id pci 0x8086 -&device.id pci 0x101e -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name PRO/1000 MT Mobile Connection - - vendor.id pci 0x8086 -&device.id pci 0x101e -&subvendor.id pci 0x8086 -&subdevice.id pci 0x101e -+subdevice.name PRO/1000 MT Mobile Connection - - vendor.id pci 0x8086 -&device.id pci 0x1026 -+device.name 82545GM Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1026 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1000 -+subdevice.name PRO/1000 MT Server Connection - - vendor.id pci 0x8086 -&device.id pci 0x1026 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1001 -+subdevice.name PRO/1000 MT Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1026 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1002 -+subdevice.name PRO/1000 MT Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1026 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1026 -+subdevice.name PRO/1000 MT Server Connection - - vendor.id pci 0x8086 -&device.id pci 0x1027 -+device.name 82545GM Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1027 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1001 -+subdevice.name PRO/1000 MF Server Adapter(LX) - - vendor.id pci 0x8086 -&device.id pci 0x1027 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1002 -+subdevice.name PRO/1000 MF Server Adapter(LX) - - vendor.id pci 0x8086 -&device.id pci 0x1027 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1003 -+subdevice.name PRO/1000 MF Server Adapter(LX) - - vendor.id pci 0x8086 -&device.id pci 0x1027 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1027 -+subdevice.name PRO/1000 MF Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1028 -+device.name 82545GM Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1028 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1028 -+subdevice.name PRO/1000 MB Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1029 -+device.name 82559 Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1030 -+device.name 82559 InBusiness 10/100 - - vendor.id pci 0x8086 -&device.id pci 0x1031 -+device.name 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1031 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0209 -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x8086 -&device.id pci 0x1031 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80e7 -+subdevice.name Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - - vendor.id pci 0x8086 -&device.id pci 0x1031 -&subvendor.id pci 0x107b -&subdevice.id pci 0x5350 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x1031 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x1031 -&subvendor.id pci 0x144d -&subdevice.id pci 0xc000 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x1031 -&subvendor.id pci 0x144d -&subdevice.id pci 0xc001 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x1031 -&subvendor.id pci 0x144d -&subdevice.id pci 0xc003 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x1031 -&subvendor.id pci 0x144d -&subdevice.id pci 0xc006 -+subdevice.name vpr Matrix 170B4 - - vendor.id pci 0x8086 -&device.id pci 0x1032 -+device.name 82801CAM (ICH3) PRO/100 VE Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1033 -+device.name 82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1034 -+device.name 82801CAM (ICH3) PRO/100 VM Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1035 -+device.name 82801CAM (ICH3)/82562EH (LOM) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1036 -+device.name 82801CAM (ICH3) 82562EH Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1037 -+device.name 82801CAM (ICH3) Chipset Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1038 -+device.name 82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1039 -+device.name 82801DB PRO/100 VE (LOM) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1039 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name NetVista A30p - - vendor.id pci 0x8086 -&device.id pci 0x103a -+device.name 82801DB PRO/100 VE (CNR) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x103b -+device.name 82801DB PRO/100 VM (LOM) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x103c -+device.name 82801DB PRO/100 VM (CNR) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x103d -+device.name 82801DB PRO/100 VE (MOB) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x103e -+device.name 82801DB PRO/100 VM (MOB) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1040 -+device.name 536EP Data Fax Modem - - vendor.id pci 0x8086 -&device.id pci 0x1040 -&subvendor.id pci 0x16be -&subdevice.id pci 0x1040 -+subdevice.name V.9X DSP Data Fax Modem - - vendor.id pci 0x8086 -&device.id pci 0x1043 -+device.name PRO/Wireless LAN 2100 3B Mini PCI Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1043 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2527 -+subdevice.name MIM2000/Centrino - - vendor.id pci 0x8086 -&device.id pci 0x1048 -+device.name PRO/10GbE LR Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1048 -&subvendor.id pci 0x8086 -&subdevice.id pci 0xa01f -+subdevice.name PRO/10GbE LR Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1048 -&subvendor.id pci 0x8086 -&subdevice.id pci 0xa11f -+subdevice.name PRO/10GbE LR Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1050 -+device.name 82562EZ 10/100 Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1050 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x728c -+subdevice.name 865PE Neo2 (MS-6728) - - vendor.id pci 0x8086 -&device.id pci 0x1050 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x758c -+subdevice.name MS-6758 (875P Neo) - - vendor.id pci 0x8086 -&device.id pci 0x1050 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3427 -+subdevice.name S875WP1-E mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1051 -+device.name 82801EB/ER (ICH5/ICH5R) integrated LAN Controller - - vendor.id pci 0x8086 -&device.id pci 0x1059 -+device.name 82551QM Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1064 -+device.name 82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1065 -+device.name 82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1066 -+device.name 82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1067 -+device.name 82562 EM/EX/GX - PRO/100 VM Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1068 -+device.name 82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile - - vendor.id pci 0x8086 -&device.id pci 0x1069 -+device.name 82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile - - vendor.id pci 0x8086 -&device.id pci 0x106a -+device.name 82562G \t- PRO/100 VE (LOM) Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x106b -+device.name 82562G \t- PRO/100 VE Ethernet Controller Mobile - - vendor.id pci 0x8086 -&device.id pci 0x1075 -+device.name 82547GI Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1075 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0165 -+subdevice.name PowerEdge 750 - - vendor.id pci 0x8086 -&device.id pci 0x1075 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0075 -+subdevice.name PRO/1000 CT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1075 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1075 -+subdevice.name PRO/1000 CT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1076 -+device.name 82541GI/PI Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1076 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0165 -+subdevice.name PowerEdge 750 - - vendor.id pci 0x8086 -&device.id pci 0x1076 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0076 -+subdevice.name PRO/1000 MT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1076 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1076 -+subdevice.name PRO/1000 MT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1076 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1176 -+subdevice.name PRO/1000 MT Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1076 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1276 -+subdevice.name PRO/1000 MT Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1077 -+device.name 82541GI Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1077 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name PRO/1000 MT Mobile Connection - - vendor.id pci 0x8086 -&device.id pci 0x1077 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0077 -+subdevice.name PRO/1000 MT Mobile Connection - - vendor.id pci 0x8086 -&device.id pci 0x1077 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1077 -+subdevice.name PRO/1000 MT Mobile Connection - - vendor.id pci 0x8086 -&device.id pci 0x1078 -+device.name 82541EI Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1078 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1078 -+subdevice.name PRO/1000 MT Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1079 -+device.name 82546GB Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1079 -&subvendor.id pci 0x103c -&subdevice.id pci 0x12a6 -+subdevice.name HP Dual Port 1000Base-T [A9900A] - - vendor.id pci 0x8086 -&device.id pci 0x1079 -&subvendor.id pci 0x103c -&subdevice.id pci 0x12cf -+subdevice.name HP Core Dual Port 1000Base-T [AB352A] - - vendor.id pci 0x8086 -&device.id pci 0x1079 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1090 -+subdevice.name Cx9 / Vx9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1079 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1079 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0079 -+subdevice.name PRO/1000 MT Dual Port Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1079 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1079 -+subdevice.name PRO/1000 MT Dual Port Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1079 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1179 -+subdevice.name PRO/1000 MT Dual Port Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1079 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x117a -+subdevice.name PRO/1000 MT Dual Port Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x107a -+device.name 82546GB Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x107a -&subvendor.id pci 0x103c -&subdevice.id pci 0x12a8 -+subdevice.name HP Dual Port 1000base-SX [A9899A] - - vendor.id pci 0x8086 -&device.id pci 0x107a -&subvendor.id pci 0x8086 -&subdevice.id pci 0x107a -+subdevice.name PRO/1000 MF Dual Port Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x107a -&subvendor.id pci 0x8086 -&subdevice.id pci 0x127a -+subdevice.name PRO/1000 MF Dual Port Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x107b -+device.name 82546GB Gigabit Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x107b -&subvendor.id pci 0x8086 -&subdevice.id pci 0x007b -+subdevice.name PRO/1000 MB Dual Port Server Connection - - vendor.id pci 0x8086 -&device.id pci 0x107b -&subvendor.id pci 0x8086 -&subdevice.id pci 0x107b -+subdevice.name PRO/1000 MB Dual Port Server Connection - - vendor.id pci 0x8086 -&device.id pci 0x1107 -+device.name PRO/1000 MF Server Adapter (LX) - - vendor.id pci 0x8086 -&device.id pci 0x1130 -+device.name 82815 815 Chipset Host Bridge and Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x1130 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x1016 -+subdevice.name Travelmate 612 TX - - vendor.id pci 0x8086 -&device.id pci 0x1130 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8027 -+subdevice.name TUSL2-C Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1130 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80df -+subdevice.name Vaio PCG-FX403 - - vendor.id pci 0x8086 -&device.id pci 0x1130 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4532 -+subdevice.name D815EEA2 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1130 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4557 -+subdevice.name D815EGEW Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1131 -+device.name 82815 815 Chipset AGP Bridge - - vendor.id pci 0x8086 -&device.id pci 0x1132 -+device.name 82815 CGC [Chipset Graphics Controller] - - vendor.id pci 0x8086 -&device.id pci 0x1132 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x1016 -+subdevice.name Travelmate 612 TX - - vendor.id pci 0x8086 -&device.id pci 0x1132 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80df -+subdevice.name Vaio PCG-FX403 - - vendor.id pci 0x8086 -&device.id pci 0x1132 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4532 -+subdevice.name D815EEA2 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1132 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4557 -+subdevice.name D815EGEW Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1161 -+device.name 82806AA PCI64 Hub Advanced Programmable Interrupt Controller - - vendor.id pci 0x8086 -&device.id pci 0x1161 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1161 -+subdevice.name 82806AA PCI64 Hub APIC - - vendor.id pci 0x8086 -&device.id pci 0x1162 -+device.name Xscale 80200 Big Endian Companion Chip - - vendor.id pci 0x8086 -&device.id pci 0x1200 -+device.name Intel IXP1200 Network Processor - - vendor.id pci 0x8086 -&device.id pci 0x1200 -&subvendor.id pci 0x172a -&subdevice.id pci 0x0000 -+subdevice.name AEP SSL Accelerator - - vendor.id pci 0x8086 -&device.id pci 0x1209 -+device.name 8255xER/82551IT Fast Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x1209 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1050 -+subdevice.name CT7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1209 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1051 -+subdevice.name CE7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1209 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1070 -+subdevice.name PC6 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1221 -+device.name 82092AA PCI to PCMCIA Bridge - - vendor.id pci 0x8086 -&device.id pci 0x1222 -+device.name 82092AA IDE Controller - - vendor.id pci 0x8086 -&device.id pci 0x1223 -+device.name SAA7116 - - vendor.id pci 0x8086 -&device.id pci 0x1225 -+device.name 82452KX/GX [Orion] - - vendor.id pci 0x8086 -&device.id pci 0x1226 -+device.name 82596 PRO/10 PCI - - vendor.id pci 0x8086 -&device.id pci 0x1227 -+device.name 82865 EtherExpress PRO/100A - - vendor.id pci 0x8086 -&device.id pci 0x1228 -+device.name 82556 EtherExpress PRO/100 Smart - - vendor.id pci 0x8086 -&device.id pci 0x1229 -+device.name 82557/8/9 [Ethernet Pro 100] - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x3001 -+subdevice.name 82559 Fast Ethernet LOM with Alert on LAN* - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x3002 -+subdevice.name 82559 Fast Ethernet LOM with Alert on LAN* - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x3003 -+subdevice.name 82559 Fast Ethernet LOM with Alert on LAN* - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x3004 -+subdevice.name 82559 Fast Ethernet LOM with Alert on LAN* - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x3005 -+subdevice.name 82559 Fast Ethernet LOM with Alert on LAN* - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x3006 -+subdevice.name 82559 Fast Ethernet LOM with Alert on LAN* - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x3007 -+subdevice.name 82559 Fast Ethernet LOM with Alert on LAN* - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb01e -+subdevice.name Compaq NC3120 Fast Ethernet NIC - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb01f -+subdevice.name Compaq NC3122 Fast Ethernet NIC - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb02f -+subdevice.name Compaq NC1120 Ethernet NIC - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb04a -+subdevice.name Compaq 10/100 TX PCI Intel WOL UTP Controller - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0c6 -+subdevice.name Compaq NC3161 Fast Ethernet NIC - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0c7 -+subdevice.name Compaq NC3160 Fast Ethernet NIC - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0d7 -+subdevice.name Compaq NC3121 Fast Ethernet NIC - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0dd -+subdevice.name Compaq NC3131 Fast Ethernet NIC - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0de -+subdevice.name Compaq NC3132 Fast Ethernet Module - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb0e1 -+subdevice.name Compaq NC3133 Fast Ethernet Module - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb134 -+subdevice.name Compaq NC3163 Fast Ethernet NIC - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb13c -+subdevice.name Compaq NC3162 Fast Ethernet NIC - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb144 -+subdevice.name Compaq NC3123 Fast Ethernet NIC - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb163 -+subdevice.name Compaq NC3134 Fast Ethernet NIC - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb164 -+subdevice.name Compaq NC3135 Fast Ethernet Upgrade Module - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb1a4 -+subdevice.name NC7131 Gigabit Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x005c -+subdevice.name 82558B Ethernet Pro 10/100 - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01bc -+subdevice.name 82559 Fast Ethernet LAN On Motherboard - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01f1 -+subdevice.name 10/100 Ethernet Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01f2 -+subdevice.name 10/100 Ethernet Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0207 -+subdevice.name Ethernet Pro/100 S - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0232 -+subdevice.name 10/100 Dual Port Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x023a -+subdevice.name ThinkPad R30 - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x105c -+subdevice.name Netfinity 10/100 - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x2205 -+subdevice.name ThinkPad A22p - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x305c -+subdevice.name 10/100 EtherJet Management Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x405c -+subdevice.name 10/100 EtherJet Adapter with Alert on LAN - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x505c -+subdevice.name 10/100 EtherJet Secure Management Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x605c -+subdevice.name 10/100 EtherJet Secure Management Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x705c -+subdevice.name 10/100 Netfinity 10/100 Ethernet Security Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x805c -+subdevice.name 10/100 Netfinity 10/100 Ethernet Security Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x009b -+subdevice.name PowerEdge 2500/2550 - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00ce -+subdevice.name PowerEdge 1400 - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8000 -+subdevice.name PC-9821X-B06 - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8016 -+subdevice.name PK-UG-X006 - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x801f -+subdevice.name PK-UG-X006 - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8026 -+subdevice.name PK-UG-X006 - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8063 -+subdevice.name 82559-based Fast Ethernet Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x8064 -+subdevice.name 82559-based Fast Ethernet Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10c0 -+subdevice.name NetServer 10/100TX - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10c3 -+subdevice.name NetServer 10/100TX - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10ca -+subdevice.name NetServer 10/100TX - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10cb -+subdevice.name NetServer 10/100TX - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10e3 -+subdevice.name NetServer 10/100TX - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10e4 -+subdevice.name NetServer 10/100TX - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x103c -&subdevice.id pci 0x1200 -+subdevice.name NetServer 10/100TX - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x10c3 -&subdevice.id pci 0x1100 -+subdevice.name SmartEther100 SC1100 - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1115 -+subdevice.name 8255x-based Ethernet Adapter (10/100) - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1143 -+subdevice.name 8255x-based Ethernet Adapter (10/100) - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name 8255x-based Ethernet Adapter (10/100) - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0002 -+subdevice.name PCI FastEther LAN on Docker - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0003 -+subdevice.name 8255x-based Fast Ethernet - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2560 -+subdevice.name AT-2560 100 - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1259 -&subdevice.id pci 0x2561 -+subdevice.name AT-2560 100 FX Ethernet Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1266 -&subdevice.id pci 0x0001 -+subdevice.name NE10/100 Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x13e9 -&subdevice.id pci 0x1000 -+subdevice.name 6221L-4U - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x144d -&subdevice.id pci 0x2501 -+subdevice.name SEM-2000 MiniPCI LAN Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x144d -&subdevice.id pci 0x2502 -+subdevice.name SEM-2100IL MiniPCI LAN Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x1668 -&subdevice.id pci 0x1100 -+subdevice.name EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem) - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1080 -+subdevice.name CT8 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0001 -+subdevice.name EtherExpress PRO/100B (TX) - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0002 -+subdevice.name EtherExpress PRO/100B (T4) - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0003 -+subdevice.name EtherExpress PRO/10+ - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0004 -+subdevice.name EtherExpress PRO/100 WfM - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0005 -+subdevice.name 82557 10/100 - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0006 -+subdevice.name 82557 10/100 with Wake on LAN - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0007 -+subdevice.name 82558 10/100 Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0008 -+subdevice.name 82558 10/100 with Wake on LAN - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0009 -+subdevice.name EtherExpress PRO/100+ - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x000a -+subdevice.name EtherExpress PRO/100+ Management Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x000b -+subdevice.name EtherExpress PRO/100+ - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x000c -+subdevice.name EtherExpress PRO/100+ Management Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x000d -+subdevice.name EtherExpress PRO/100+ Alert On LAN II* Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x000e -+subdevice.name EtherExpress PRO/100+ Management Adapter with Alert On LAN* - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x000f -+subdevice.name EtherExpress PRO/100 Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0010 -+subdevice.name EtherExpress PRO/100 S Management Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0011 -+subdevice.name EtherExpress PRO/100 S Management Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0012 -+subdevice.name EtherExpress PRO/100 S Advanced Management Adapter (D) - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0013 -+subdevice.name EtherExpress PRO/100 S Advanced Management Adapter (E) - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0030 -+subdevice.name EtherExpress PRO/100 Management Adapter with Alert On LAN* GC - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0031 -+subdevice.name EtherExpress PRO/100 Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0040 -+subdevice.name EtherExpress PRO/100 S Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0041 -+subdevice.name EtherExpress PRO/100 S Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0042 -+subdevice.name EtherExpress PRO/100 Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0050 -+subdevice.name EtherExpress PRO/100 S Desktop Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1009 -+subdevice.name EtherExpress PRO/100+ Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x100c -+subdevice.name EtherExpress PRO/100+ Server Adapter (PILA8470B) - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1012 -+subdevice.name EtherExpress PRO/100 S Server Adapter (D) - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1013 -+subdevice.name EtherExpress PRO/100 S Server Adapter (E) - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1015 -+subdevice.name EtherExpress PRO/100 S Dual Port Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1017 -+subdevice.name EtherExpress PRO/100+ Dual Port Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1030 -+subdevice.name EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1040 -+subdevice.name EtherExpress PRO/100 S Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1041 -+subdevice.name EtherExpress PRO/100 S Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1042 -+subdevice.name EtherExpress PRO/100 Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1050 -+subdevice.name EtherExpress PRO/100 S Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1051 -+subdevice.name EtherExpress PRO/100 Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1052 -+subdevice.name EtherExpress PRO/100 Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x10f0 -+subdevice.name EtherExpress PRO/100+ Dual Port Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2009 -+subdevice.name EtherExpress PRO/100 S Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x200d -+subdevice.name EtherExpress PRO/100 Cardbus - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x200e -+subdevice.name EtherExpress PRO/100 LAN+V90 Cardbus Modem - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x200f -+subdevice.name EtherExpress PRO/100 SR Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2010 -+subdevice.name EtherExpress PRO/100 S Mobile Combo Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2013 -+subdevice.name EtherExpress PRO/100 SR Mobile Combo Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2016 -+subdevice.name EtherExpress PRO/100 S Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2017 -+subdevice.name EtherExpress PRO/100 S Combo Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2018 -+subdevice.name EtherExpress PRO/100 SR Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2019 -+subdevice.name EtherExpress PRO/100 SR Combo Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2101 -+subdevice.name EtherExpress PRO/100 P Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2102 -+subdevice.name EtherExpress PRO/100 SP Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2103 -+subdevice.name EtherExpress PRO/100 SP Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2104 -+subdevice.name EtherExpress PRO/100 SP Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2105 -+subdevice.name EtherExpress PRO/100 SP Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2106 -+subdevice.name EtherExpress PRO/100 P Mobile Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2107 -+subdevice.name EtherExpress PRO/100 Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2108 -+subdevice.name EtherExpress PRO/100 Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2200 -+subdevice.name EtherExpress PRO/100 P Mobile Combo Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2201 -+subdevice.name EtherExpress PRO/100 P Mobile Combo Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2202 -+subdevice.name EtherExpress PRO/100 SP Mobile Combo Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2203 -+subdevice.name EtherExpress PRO/100+ MiniPCI - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2204 -+subdevice.name EtherExpress PRO/100+ MiniPCI - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2205 -+subdevice.name EtherExpress PRO/100 SP Mobile Combo Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2206 -+subdevice.name EtherExpress PRO/100 SP Mobile Combo Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2207 -+subdevice.name EtherExpress PRO/100 SP Mobile Combo Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2208 -+subdevice.name EtherExpress PRO/100 P Mobile Combo Adapter - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2402 -+subdevice.name EtherExpress PRO/100+ MiniPCI - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2407 -+subdevice.name EtherExpress PRO/100+ MiniPCI - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2408 -+subdevice.name EtherExpress PRO/100+ MiniPCI - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2409 -+subdevice.name EtherExpress PRO/100+ MiniPCI - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x240f -+subdevice.name EtherExpress PRO/100+ MiniPCI - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2410 -+subdevice.name EtherExpress PRO/100+ MiniPCI - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2411 -+subdevice.name EtherExpress PRO/100+ MiniPCI - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2412 -+subdevice.name EtherExpress PRO/100+ MiniPCI - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x2413 -+subdevice.name EtherExpress PRO/100+ MiniPCI - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3000 -+subdevice.name 82559 Fast Ethernet LAN on Motherboard - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3001 -+subdevice.name 82559 Fast Ethernet LOM with Basic Alert on LAN* - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3002 -+subdevice.name 82559 Fast Ethernet LOM with Alert on LAN II* - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3006 -+subdevice.name EtherExpress PRO/100 S Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3007 -+subdevice.name EtherExpress PRO/100 S Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3008 -+subdevice.name EtherExpress PRO/100 Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3010 -+subdevice.name EtherExpress PRO/100 S Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3011 -+subdevice.name EtherExpress PRO/100 S Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3012 -+subdevice.name EtherExpress PRO/100 Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x1229 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3411 -+subdevice.name SDS2 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x122d -+device.name 430FX - 82437FX TSC [Triton I] - - vendor.id pci 0x8086 -&device.id pci 0x122e -+device.name 82371FB PIIX ISA [Triton I] - - vendor.id pci 0x8086 -&device.id pci 0x1230 -+device.name 82371FB PIIX IDE [Triton I] - - vendor.id pci 0x8086 -&device.id pci 0x1231 -+device.name DSVD Modem - - vendor.id pci 0x8086 -&device.id pci 0x1234 -+device.name 430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX) - - vendor.id pci 0x8086 -&device.id pci 0x1235 -+device.name 430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP) - - vendor.id pci 0x8086 -&device.id pci 0x1237 -+device.name 440FX - 82441FX PMC [Natoma] - - vendor.id pci 0x8086 -&device.id pci 0x1239 -+device.name 82371FB PIIX IDE Interface - - vendor.id pci 0x8086 -&device.id pci 0x123b -+device.name 82380PB PCI to PCI Docking Bridge - - vendor.id pci 0x8086 -&device.id pci 0x123c -+device.name 82380AB (MISA) Mobile PCI-to-ISA Bridge - - vendor.id pci 0x8086 -&device.id pci 0x123d -+device.name 683053 Programmable Interrupt Device - - vendor.id pci 0x8086 -&device.id pci 0x123e -+device.name 82466GX (IHPC) Integrated Hot-Plug Controller - - vendor.id pci 0x8086 -&device.id pci 0x123f -+device.name 82466GX Integrated Hot-Plug Controller (IHPC) - - vendor.id pci 0x8086 -&device.id pci 0x1240 -+device.name 82752 (752) AGP Graphics Accelerator - - vendor.id pci 0x8086 -&device.id pci 0x124b -+device.name 82380FB (MPCI2) Mobile Docking Controller - - vendor.id pci 0x8086 -&device.id pci 0x1250 -+device.name 430HX - 82439HX TXC [Triton II] - - vendor.id pci 0x8086 -&device.id pci 0x1360 -+device.name 82806AA PCI64 Hub PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x1361 -+device.name 82806AA PCI64 Hub Controller (HRes) - - vendor.id pci 0x8086 -&device.id pci 0x1361 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1361 -+subdevice.name 82806AA PCI64 Hub Controller (HRes) - - vendor.id pci 0x8086 -&device.id pci 0x1361 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x8000 -+subdevice.name 82806AA PCI64 Hub Controller (HRes) - - vendor.id pci 0x8086 -&device.id pci 0x1460 -+device.name 82870P2 P64H2 Hub PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x1461 -+device.name 82870P2 P64H2 I/OxAPIC - - vendor.id pci 0x8086 -&device.id pci 0x1461 -&subvendor.id pci 0x15d9 -&subdevice.id pci 0x3480 -+subdevice.name P4DP6 - - vendor.id pci 0x8086 -&device.id pci 0x1461 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1090 -+subdevice.name Cx9 / Vx9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x1462 -+device.name 82870P2 P64H2 Hot Plug Controller - - vendor.id pci 0x8086 -&device.id pci 0x1960 -+device.name 80960RP [i960RP Microprocessor] - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0431 -+subdevice.name MegaRAID 431 RAID Controller - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0438 -+subdevice.name MegaRAID 438 Ultra2 LVD RAID Controller - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0466 -+subdevice.name MegaRAID 466 Express Plus RAID Controller - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0467 -+subdevice.name MegaRAID 467 Enterprise 1500 RAID Controller - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0490 -+subdevice.name MegaRAID 490 Express 300 RAID Controller - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x0762 -+subdevice.name MegaRAID 762 Express RAID Controller - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x101e -&subdevice.id pci 0x09a0 -+subdevice.name PowerEdge Expandable RAID Controller 2/SC - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0467 -+subdevice.name PowerEdge Expandable RAID Controller 2/DC - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x1111 -+subdevice.name PowerEdge Expandable RAID Controller 2/SC - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x103c -&subdevice.id pci 0x03a2 -+subdevice.name MegaRAID - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10c6 -+subdevice.name MegaRAID 438, HP NetRAID-3Si - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10c7 -+subdevice.name MegaRAID T5, Integrated HP NetRAID - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10cc -+subdevice.name MegaRAID, Integrated HP NetRAID - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10cd -+subdevice.name HP NetRAID-1Si - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x105a -&subdevice.id pci 0x0000 -+subdevice.name SuperTrak - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x105a -&subdevice.id pci 0x2168 -+subdevice.name SuperTrak Pro - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x105a -&subdevice.id pci 0x5168 -+subdevice.name SuperTrak66/100 - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x1111 -&subdevice.id pci 0x1111 -+subdevice.name MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x1111 -&subdevice.id pci 0x1112 -+subdevice.name PowerEdge Expandable RAID Controller 2/SC - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0x113c -&subdevice.id pci 0x03a2 -+subdevice.name MegaRAID - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0xe4bf -&subdevice.id pci 0x1010 -+subdevice.name CG1-RADIO - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0xe4bf -&subdevice.id pci 0x1020 -+subdevice.name CU2-QUARTET - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0xe4bf -&subdevice.id pci 0x1040 -+subdevice.name CU1-CHORUS - - vendor.id pci 0x8086 -&device.id pci 0x1960 -&subvendor.id pci 0xe4bf -&subdevice.id pci 0x3100 -+subdevice.name CX1-BAND - - vendor.id pci 0x8086 -&device.id pci 0x1962 -+device.name 80960RM [i960RM Microprocessor] - - vendor.id pci 0x8086 -&device.id pci 0x1962 -&subvendor.id pci 0x105a -&subdevice.id pci 0x0000 -+subdevice.name SuperTrak SX6000 I2O CPU - - vendor.id pci 0x8086 -&device.id pci 0x1a21 -+device.name 82840 840 (Carmel) Chipset Host Bridge (Hub A) - - vendor.id pci 0x8086 -&device.id pci 0x1a23 -+device.name 82840 840 (Carmel) Chipset AGP Bridge - - vendor.id pci 0x8086 -&device.id pci 0x1a24 -+device.name 82840 840 (Carmel) Chipset PCI Bridge (Hub B) - - vendor.id pci 0x8086 -&device.id pci 0x1a30 -+device.name 82845 845 (Brookdale) Chipset Host Bridge - - vendor.id pci 0x8086 -&device.id pci 0x1a30 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x010e -+subdevice.name Optiplex GX240 - - vendor.id pci 0x8086 -&device.id pci 0x1a31 -+device.name 82845 845 (Brookdale) Chipset AGP Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2410 -+device.name 82801AA ISA Bridge (LPC) - - vendor.id pci 0x8086 -&device.id pci 0x2411 -+device.name 82801AA IDE - - vendor.id pci 0x8086 -&device.id pci 0x2412 -+device.name 82801AA USB - - vendor.id pci 0x8086 -&device.id pci 0x2413 -+device.name 82801AA SMBus - - vendor.id pci 0x8086 -&device.id pci 0x2415 -+device.name 82801AA AC'97 Audio - - vendor.id pci 0x8086 -&device.id pci 0x2415 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0095 -+subdevice.name Precision Workstation 220 Integrated Digital Audio - - vendor.id pci 0x8086 -&device.id pci 0x2415 -&subvendor.id pci 0x11d4 -&subdevice.id pci 0x0040 -+subdevice.name SoundMAX Integrated Digital Audio - - vendor.id pci 0x8086 -&device.id pci 0x2415 -&subvendor.id pci 0x11d4 -&subdevice.id pci 0x0048 -+subdevice.name SoundMAX Integrated Digital Audio - - vendor.id pci 0x8086 -&device.id pci 0x2415 -&subvendor.id pci 0x11d4 -&subdevice.id pci 0x5340 -+subdevice.name SoundMAX Integrated Digital Audio - - vendor.id pci 0x8086 -&device.id pci 0x2416 -+device.name 82801AA AC'97 Modem - - vendor.id pci 0x8086 -&device.id pci 0x2418 -+device.name 82801AA PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2420 -+device.name 82801AB ISA Bridge (LPC) - - vendor.id pci 0x8086 -&device.id pci 0x2421 -+device.name 82801AB IDE - - vendor.id pci 0x8086 -&device.id pci 0x2422 -+device.name 82801AB USB - - vendor.id pci 0x8086 -&device.id pci 0x2423 -+device.name 82801AB SMBus - - vendor.id pci 0x8086 -&device.id pci 0x2425 -+device.name 82801AB AC'97 Audio - - vendor.id pci 0x8086 -&device.id pci 0x2425 -&subvendor.id pci 0x11d4 -&subdevice.id pci 0x0040 -+subdevice.name SoundMAX Integrated Digital Audio - - vendor.id pci 0x8086 -&device.id pci 0x2425 -&subvendor.id pci 0x11d4 -&subdevice.id pci 0x0048 -+subdevice.name SoundMAX Integrated Digital Audio - - vendor.id pci 0x8086 -&device.id pci 0x2426 -+device.name 82801AB AC'97 Modem - - vendor.id pci 0x8086 -&device.id pci 0x2428 -+device.name 82801AB PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2440 -+device.name 82801BA ISA Bridge (LPC) - - vendor.id pci 0x8086 -&device.id pci 0x2442 -+device.name 82801BA/BAM USB (Hub #1) - - vendor.id pci 0x8086 -&device.id pci 0x2442 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01c6 -+subdevice.name Netvista A40/A40p - - vendor.id pci 0x8086 -&device.id pci 0x2442 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x1016 -+subdevice.name Travelmate 612 TX - - vendor.id pci 0x8086 -&device.id pci 0x2442 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x010e -+subdevice.name Optiplex GX240 - - vendor.id pci 0x8086 -&device.id pci 0x2442 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8027 -+subdevice.name TUSL2-C Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2442 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80df -+subdevice.name Vaio PCG-FX403 - - vendor.id pci 0x8086 -&device.id pci 0x2442 -&subvendor.id pci 0x147b -&subdevice.id pci 0x0507 -+subdevice.name TH7II-RAID - - vendor.id pci 0x8086 -&device.id pci 0x2442 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4532 -+subdevice.name D815EEA2 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2442 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4557 -+subdevice.name D815EGEW Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2443 -+device.name 82801BA/BAM SMBus - - vendor.id pci 0x8086 -&device.id pci 0x2443 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01c6 -+subdevice.name Netvista A40/A40p - - vendor.id pci 0x8086 -&device.id pci 0x2443 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x1016 -+subdevice.name Travelmate 612 TX - - vendor.id pci 0x8086 -&device.id pci 0x2443 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x010e -+subdevice.name Optiplex GX240 - - vendor.id pci 0x8086 -&device.id pci 0x2443 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8027 -+subdevice.name TUSL2-C Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2443 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80df -+subdevice.name Vaio PCG-FX403 - - vendor.id pci 0x8086 -&device.id pci 0x2443 -&subvendor.id pci 0x147b -&subdevice.id pci 0x0507 -+subdevice.name TH7II-RAID - - vendor.id pci 0x8086 -&device.id pci 0x2443 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4532 -+subdevice.name D815EEA2 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2443 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4557 -+subdevice.name D815EGEW Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2444 -+device.name 82801BA/BAM USB (Hub #2) - - vendor.id pci 0x8086 -&device.id pci 0x2444 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x1016 -+subdevice.name Travelmate 612 TX - - vendor.id pci 0x8086 -&device.id pci 0x2444 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x010e -+subdevice.name Optiplex GX240 - - vendor.id pci 0x8086 -&device.id pci 0x2444 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8027 -+subdevice.name TUSL2-C Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2444 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80df -+subdevice.name Vaio PCG-FX403 - - vendor.id pci 0x8086 -&device.id pci 0x2444 -&subvendor.id pci 0x147b -&subdevice.id pci 0x0507 -+subdevice.name TH7II-RAID - - vendor.id pci 0x8086 -&device.id pci 0x2444 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4532 -+subdevice.name D815EEA2 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2445 -+device.name 82801BA/BAM AC'97 Audio - - vendor.id pci 0x8086 -&device.id pci 0x2445 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01c6 -+subdevice.name Netvista A40/A40p - - vendor.id pci 0x8086 -&device.id pci 0x2445 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x1016 -+subdevice.name Travelmate 612 TX - - vendor.id pci 0x8086 -&device.id pci 0x2445 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80df -+subdevice.name Vaio PCG-FX403 - - vendor.id pci 0x8086 -&device.id pci 0x2445 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x3370 -+subdevice.name STAC9721 AC - - vendor.id pci 0x8086 -&device.id pci 0x2445 -&subvendor.id pci 0x147b -&subdevice.id pci 0x0507 -+subdevice.name TH7II-RAID - - vendor.id pci 0x8086 -&device.id pci 0x2445 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4557 -+subdevice.name D815EGEW Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2446 -+device.name 82801BA/BAM AC'97 Modem - - vendor.id pci 0x8086 -&device.id pci 0x2446 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x1016 -+subdevice.name Travelmate 612 TX - - vendor.id pci 0x8086 -&device.id pci 0x2446 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80df -+subdevice.name Vaio PCG-FX403 - - vendor.id pci 0x8086 -&device.id pci 0x2448 -+device.name 82801 Mobile PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2449 -+device.name 82801BA/BAM/CA/CAM Ethernet Controller - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0012 -+subdevice.name EtherExpress PRO/100 VM - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0091 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01ce -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01dc -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01eb -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01ec -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0202 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0205 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0217 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0234 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x023d -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0244 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0245 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0265 -+subdevice.name PRO/100 VE Desktop Connection - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name PRO/100 VE Desktop Connection - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x026a -+subdevice.name PRO/100 VE Desktop Connection - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x109f -&subdevice.id pci 0x315d -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x109f -&subdevice.id pci 0x3181 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1179 -&subdevice.id pci 0xff01 -+subdevice.name PRO/100 VE Network Connection - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x1186 -&subdevice.id pci 0x7801 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x144d -&subdevice.id pci 0x2602 -+subdevice.name HomePNA 1M CNR - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3010 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3011 -+subdevice.name EtherExpress PRO/100 VM - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3012 -+subdevice.name 82562EH based Phoneline - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3013 -+subdevice.name EtherExpress PRO/100 VE - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3014 -+subdevice.name EtherExpress PRO/100 VM - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3015 -+subdevice.name 82562EH based Phoneline - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3016 -+subdevice.name EtherExpress PRO/100 P Mobile Combo - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3017 -+subdevice.name EtherExpress PRO/100 P Mobile - - vendor.id pci 0x8086 -&device.id pci 0x2449 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3018 -+subdevice.name EtherExpress PRO/100 - - vendor.id pci 0x8086 -&device.id pci 0x244a -+device.name 82801BAM IDE U100 - - vendor.id pci 0x8086 -&device.id pci 0x244a -&subvendor.id pci 0x1025 -&subdevice.id pci 0x1016 -+subdevice.name Travelmate 612TX - - vendor.id pci 0x8086 -&device.id pci 0x244a -&subvendor.id pci 0x104d -&subdevice.id pci 0x80df -+subdevice.name Vaio PCG-FX403 - - vendor.id pci 0x8086 -&device.id pci 0x244b -+device.name 82801BA IDE U100 - - vendor.id pci 0x8086 -&device.id pci 0x244b -&subvendor.id pci 0x1014 -&subdevice.id pci 0x01c6 -+subdevice.name Netvista A40/A40p - - vendor.id pci 0x8086 -&device.id pci 0x244b -&subvendor.id pci 0x1028 -&subdevice.id pci 0x010e -+subdevice.name Optiplex GX240 - - vendor.id pci 0x8086 -&device.id pci 0x244b -&subvendor.id pci 0x1043 -&subdevice.id pci 0x8027 -+subdevice.name TUSL2-C Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x244b -&subvendor.id pci 0x147b -&subdevice.id pci 0x0507 -+subdevice.name TH7II-RAID - - vendor.id pci 0x8086 -&device.id pci 0x244b -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4532 -+subdevice.name D815EEA2 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x244b -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4557 -+subdevice.name D815EGEW Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x244c -+device.name 82801BAM ISA Bridge (LPC) - - vendor.id pci 0x8086 -&device.id pci 0x244e -+device.name 82801 PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x244e -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name NetVista A30p - - vendor.id pci 0x8086 -&device.id pci 0x2450 -+device.name 82801E ISA Bridge (LPC) - - vendor.id pci 0x8086 -&device.id pci 0x2452 -+device.name 82801E USB - - vendor.id pci 0x8086 -&device.id pci 0x2453 -+device.name 82801E SMBus - - vendor.id pci 0x8086 -&device.id pci 0x2459 -+device.name 82801E Ethernet Controller 0 - - vendor.id pci 0x8086 -&device.id pci 0x245b -+device.name 82801E IDE U100 - - vendor.id pci 0x8086 -&device.id pci 0x245d -+device.name 82801E Ethernet Controller 1 - - vendor.id pci 0x8086 -&device.id pci 0x245e -+device.name 82801E PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2480 -+device.name 82801CA LPC Interface Controller - - vendor.id pci 0x8086 -&device.id pci 0x2482 -+device.name 82801CA/CAM USB (Hub #1) - - vendor.id pci 0x8086 -&device.id pci 0x2482 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0220 -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x8086 -&device.id pci 0x2482 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80e7 -+subdevice.name VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - - vendor.id pci 0x8086 -&device.id pci 0x2482 -&subvendor.id pci 0x15d9 -&subdevice.id pci 0x3480 -+subdevice.name P4DP6 - - vendor.id pci 0x8086 -&device.id pci 0x2482 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1958 -+subdevice.name vpr Matrix 170B4 - - vendor.id pci 0x8086 -&device.id pci 0x2482 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3424 -+subdevice.name SE7501HG2 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2482 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4541 -+subdevice.name Latitude C640 - - vendor.id pci 0x8086 -&device.id pci 0x2483 -+device.name 82801CA/CAM SMBus Controller - - vendor.id pci 0x8086 -&device.id pci 0x2483 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0220 -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x8086 -&device.id pci 0x2483 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80e7 -+subdevice.name VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - - vendor.id pci 0x8086 -&device.id pci 0x2483 -&subvendor.id pci 0x15d9 -&subdevice.id pci 0x3480 -+subdevice.name P4DP6 - - vendor.id pci 0x8086 -&device.id pci 0x2483 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1958 -+subdevice.name vpr Matrix 170B4 - - vendor.id pci 0x8086 -&device.id pci 0x2484 -+device.name 82801CA/CAM USB (Hub #2) - - vendor.id pci 0x8086 -&device.id pci 0x2484 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0220 -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x8086 -&device.id pci 0x2484 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80e7 -+subdevice.name VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - - vendor.id pci 0x8086 -&device.id pci 0x2484 -&subvendor.id pci 0x15d9 -&subdevice.id pci 0x3480 -+subdevice.name P4DP6 - - vendor.id pci 0x8086 -&device.id pci 0x2484 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1958 -+subdevice.name vpr Matrix 170B4 - - vendor.id pci 0x8086 -&device.id pci 0x2485 -+device.name 82801CA/CAM AC'97 Audio Controller - - vendor.id pci 0x8086 -&device.id pci 0x2485 -&subvendor.id pci 0x1013 -&subdevice.id pci 0x5959 -+subdevice.name Crystal WMD Audio Codec - - vendor.id pci 0x8086 -&device.id pci 0x2485 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0222 -+subdevice.name ThinkPad T23 (2647-4MG) or A30/A30p (2652/2653) - - vendor.id pci 0x8086 -&device.id pci 0x2485 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0508 -+subdevice.name ThinkPad T30 - - vendor.id pci 0x8086 -&device.id pci 0x2485 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x051c -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x8086 -&device.id pci 0x2485 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80e7 -+subdevice.name VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - - vendor.id pci 0x8086 -&device.id pci 0x2485 -&subvendor.id pci 0x144d -&subdevice.id pci 0xc006 -+subdevice.name vpr Matrix 170B4 - - vendor.id pci 0x8086 -&device.id pci 0x2486 -+device.name 82801CA/CAM AC'97 Modem Controller - - vendor.id pci 0x8086 -&device.id pci 0x2486 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0223 -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x8086 -&device.id pci 0x2486 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0503 -+subdevice.name ThinkPad R31 2656BBG - - vendor.id pci 0x8086 -&device.id pci 0x2486 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x051a -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x8086 -&device.id pci 0x2486 -&subvendor.id pci 0x101f -&subdevice.id pci 0x1025 -+subdevice.name Acer 620 Series - - vendor.id pci 0x8086 -&device.id pci 0x2486 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80e7 -+subdevice.name VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - - vendor.id pci 0x8086 -&device.id pci 0x2486 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Toshiba Satellite 1110 Z15 internal Modem - - vendor.id pci 0x8086 -&device.id pci 0x2486 -&subvendor.id pci 0x134d -&subdevice.id pci 0x4c21 -+subdevice.name Dell modem (Inspiron 2100, Latitude C640) - - vendor.id pci 0x8086 -&device.id pci 0x2486 -&subvendor.id pci 0x144d -&subdevice.id pci 0x2115 -+subdevice.name vpr Matrix 170B4 internal modem - - vendor.id pci 0x8086 -&device.id pci 0x2486 -&subvendor.id pci 0x14f1 -&subdevice.id pci 0x5421 -+subdevice.name MD56ORD V.92 MDC Modem - - vendor.id pci 0x8086 -&device.id pci 0x2487 -+device.name 82801CA/CAM USB (Hub #3) - - vendor.id pci 0x8086 -&device.id pci 0x2487 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0220 -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x8086 -&device.id pci 0x2487 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80e7 -+subdevice.name VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - - vendor.id pci 0x8086 -&device.id pci 0x2487 -&subvendor.id pci 0x15d9 -&subdevice.id pci 0x3480 -+subdevice.name P4DP6 - - vendor.id pci 0x8086 -&device.id pci 0x2487 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1958 -+subdevice.name vpr Matrix 170B4 - - vendor.id pci 0x8086 -&device.id pci 0x248a -+device.name 82801CAM IDE U100 - - vendor.id pci 0x8086 -&device.id pci 0x248a -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0220 -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x8086 -&device.id pci 0x248a -&subvendor.id pci 0x104d -&subdevice.id pci 0x80e7 -+subdevice.name VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - - vendor.id pci 0x8086 -&device.id pci 0x248a -&subvendor.id pci 0x8086 -&subdevice.id pci 0x1958 -+subdevice.name vpr Matrix 170B4 - - vendor.id pci 0x8086 -&device.id pci 0x248a -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4541 -+subdevice.name Latitude C640 - - vendor.id pci 0x8086 -&device.id pci 0x248b -+device.name 82801CA Ultra ATA Storage Controller - - vendor.id pci 0x8086 -&device.id pci 0x248b -&subvendor.id pci 0x15d9 -&subdevice.id pci 0x3480 -+subdevice.name P4DP6 - - vendor.id pci 0x8086 -&device.id pci 0x248c -+device.name 82801CAM ISA Bridge (LPC) - - vendor.id pci 0x8086 -&device.id pci 0x24c0 -+device.name 82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge - - vendor.id pci 0x8086 -&device.id pci 0x24c0 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name NetVista A30p - - vendor.id pci 0x8086 -&device.id pci 0x24c0 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x5800 -+subdevice.name 845PE Max (MS-6580) - - vendor.id pci 0x8086 -&device.id pci 0x24c1 -+device.name 82801DBL (ICH4-L) IDE Controller - - vendor.id pci 0x8086 -&device.id pci 0x24c2 -+device.name 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 - - vendor.id pci 0x8086 -&device.id pci 0x24c2 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name NetVista A30p - - vendor.id pci 0x8086 -&device.id pci 0x24c2 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x8086 -&device.id pci 0x24c2 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0126 -+subdevice.name Optiplex GX260 - - vendor.id pci 0x8086 -&device.id pci 0x24c2 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0163 -+subdevice.name Latitude D505 - - vendor.id pci 0x8086 -&device.id pci 0x24c2 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x8086 -&device.id pci 0x24c2 -&subvendor.id pci 0x1071 -&subdevice.id pci 0x8160 -+subdevice.name MIM2000 - - vendor.id pci 0x8086 -&device.id pci 0x24c2 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x5800 -+subdevice.name 845PE Max (MS-6580) - - vendor.id pci 0x8086 -&device.id pci 0x24c2 -&subvendor.id pci 0x1509 -&subdevice.id pci 0x2990 -+subdevice.name Averatec 5110H laptop - - vendor.id pci 0x8086 -&device.id pci 0x24c2 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1090 -+subdevice.name Cx9 / Vx9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24c3 -+device.name 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller - - vendor.id pci 0x8086 -&device.id pci 0x24c3 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name NetVista A30p - - vendor.id pci 0x8086 -&device.id pci 0x24c3 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x8086 -&device.id pci 0x24c3 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0126 -+subdevice.name Optiplex GX260 - - vendor.id pci 0x8086 -&device.id pci 0x24c3 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x8086 -&device.id pci 0x24c3 -&subvendor.id pci 0x1071 -&subdevice.id pci 0x8160 -+subdevice.name MIM2000 - - vendor.id pci 0x8086 -&device.id pci 0x24c3 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x24c2 -+subdevice.name GA-8PE667 Ultra - - vendor.id pci 0x8086 -&device.id pci 0x24c3 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x5800 -+subdevice.name 845PE Max (MS-6580) - - vendor.id pci 0x8086 -&device.id pci 0x24c3 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1090 -+subdevice.name Cx9 / Vx9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24c4 -+device.name 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 - - vendor.id pci 0x8086 -&device.id pci 0x24c4 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name NetVista A30p - - vendor.id pci 0x8086 -&device.id pci 0x24c4 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x8086 -&device.id pci 0x24c4 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0126 -+subdevice.name Optiplex GX260 - - vendor.id pci 0x8086 -&device.id pci 0x24c4 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0163 -+subdevice.name Latitude D505 - - vendor.id pci 0x8086 -&device.id pci 0x24c4 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x8086 -&device.id pci 0x24c4 -&subvendor.id pci 0x1071 -&subdevice.id pci 0x8160 -+subdevice.name MIM2000 - - vendor.id pci 0x8086 -&device.id pci 0x24c4 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x5800 -+subdevice.name 845PE Max (MS-6580) - - vendor.id pci 0x8086 -&device.id pci 0x24c4 -&subvendor.id pci 0x1509 -&subdevice.id pci 0x2990 -+subdevice.name Averatec 5110H - - vendor.id pci 0x8086 -&device.id pci 0x24c4 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1090 -+subdevice.name Cx9 / Vx9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24c5 -+device.name 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller - - vendor.id pci 0x8086 -&device.id pci 0x24c5 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00b8 -+subdevice.name Analog Devices Inc. codec [SoundMAX] - - vendor.id pci 0x8086 -&device.id pci 0x24c5 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name NetVista A30p - - vendor.id pci 0x8086 -&device.id pci 0x24c5 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x8086 -&device.id pci 0x24c5 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0163 -+subdevice.name Latitude D505 - - vendor.id pci 0x8086 -&device.id pci 0x24c5 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x8086 -&device.id pci 0x24c5 -&subvendor.id pci 0x1071 -&subdevice.id pci 0x8160 -+subdevice.name MIM2000 - - vendor.id pci 0x8086 -&device.id pci 0x24c5 -&subvendor.id pci 0x1458 -&subdevice.id pci 0xa002 -+subdevice.name GA-8PE667 Ultra - - vendor.id pci 0x8086 -&device.id pci 0x24c5 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x5800 -+subdevice.name 845PE Max (MS-6580) - - vendor.id pci 0x8086 -&device.id pci 0x24c6 -+device.name 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller - - vendor.id pci 0x8086 -&device.id pci 0x24c6 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x8086 -&device.id pci 0x24c6 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x8086 -&device.id pci 0x24c6 -&subvendor.id pci 0x1071 -&subdevice.id pci 0x8160 -+subdevice.name MIM2000 - - vendor.id pci 0x8086 -&device.id pci 0x24c7 -+device.name 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 - - vendor.id pci 0x8086 -&device.id pci 0x24c7 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name NetVista A30p - - vendor.id pci 0x8086 -&device.id pci 0x24c7 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x8086 -&device.id pci 0x24c7 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0126 -+subdevice.name Optiplex GX260 - - vendor.id pci 0x8086 -&device.id pci 0x24c7 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0163 -+subdevice.name Latitude D505 - - vendor.id pci 0x8086 -&device.id pci 0x24c7 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x8086 -&device.id pci 0x24c7 -&subvendor.id pci 0x1071 -&subdevice.id pci 0x8160 -+subdevice.name MIM2000 - - vendor.id pci 0x8086 -&device.id pci 0x24c7 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x5800 -+subdevice.name 845PE Max (MS-6580) - - vendor.id pci 0x8086 -&device.id pci 0x24c7 -&subvendor.id pci 0x1509 -&subdevice.id pci 0x2990 -+subdevice.name Averatec 5110H - - vendor.id pci 0x8086 -&device.id pci 0x24c7 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1090 -+subdevice.name Cx9 / Vx9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24ca -+device.name 82801DBM (ICH4-M) IDE Controller - - vendor.id pci 0x8086 -&device.id pci 0x24ca -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x8086 -&device.id pci 0x24ca -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0163 -+subdevice.name Latitude D505 - - vendor.id pci 0x8086 -&device.id pci 0x24ca -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x8086 -&device.id pci 0x24ca -&subvendor.id pci 0x1071 -&subdevice.id pci 0x8160 -+subdevice.name MIM2000 - - vendor.id pci 0x8086 -&device.id pci 0x24cb -+device.name 82801DB (ICH4) IDE Controller - - vendor.id pci 0x8086 -&device.id pci 0x24cb -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name NetVista A30p - - vendor.id pci 0x8086 -&device.id pci 0x24cb -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0126 -+subdevice.name Optiplex GX260 - - vendor.id pci 0x8086 -&device.id pci 0x24cb -&subvendor.id pci 0x1458 -&subdevice.id pci 0x24c2 -+subdevice.name GA-8PE667 Ultra - - vendor.id pci 0x8086 -&device.id pci 0x24cb -&subvendor.id pci 0x1462 -&subdevice.id pci 0x5800 -+subdevice.name 845PE Max (MS-6580) - - vendor.id pci 0x8086 -&device.id pci 0x24cb -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1090 -+subdevice.name Cx9 / Vx9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24cc -+device.name 82801DBM (ICH4-M) LPC Interface Bridge - - vendor.id pci 0x8086 -&device.id pci 0x24cd -+device.name 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller - - vendor.id pci 0x8086 -&device.id pci 0x24cd -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name NetVista A30p - - vendor.id pci 0x8086 -&device.id pci 0x24cd -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x8086 -&device.id pci 0x24cd -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0126 -+subdevice.name Optiplex GX260 - - vendor.id pci 0x8086 -&device.id pci 0x24cd -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0163 -+subdevice.name Latitude D505 - - vendor.id pci 0x8086 -&device.id pci 0x24cd -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x8086 -&device.id pci 0x24cd -&subvendor.id pci 0x1071 -&subdevice.id pci 0x8160 -+subdevice.name MIM2000 - - vendor.id pci 0x8086 -&device.id pci 0x24cd -&subvendor.id pci 0x1462 -&subdevice.id pci 0x3981 -+subdevice.name 845PE Max (MS-6580) - - vendor.id pci 0x8086 -&device.id pci 0x24cd -&subvendor.id pci 0x1509 -&subdevice.id pci 0x1968 -+subdevice.name Averatec 5110H - - vendor.id pci 0x8086 -&device.id pci 0x24cd -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1090 -+subdevice.name Cx9 / Vx9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d0 -+device.name 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge - - vendor.id pci 0x8086 -&device.id pci 0x24d1 -+device.name 82801EB (ICH5) SATA Controller - - vendor.id pci 0x8086 -&device.id pci 0x24d1 -&subvendor.id pci 0x103c -&subdevice.id pci 0x12bc -+subdevice.name d530 CMT (DG746A) - - vendor.id pci 0x8086 -&device.id pci 0x24d1 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x24d1 -+subdevice.name GA-8IPE1000 Pro2 motherboard (865PE) - - vendor.id pci 0x8086 -&device.id pci 0x24d1 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7280 -+subdevice.name 865PE Neo2 (MS-6728) - - vendor.id pci 0x8086 -&device.id pci 0x24d1 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3427 -+subdevice.name S875WP1-E mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d1 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x524c -+subdevice.name D865PERL mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d2 -+device.name 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 - - vendor.id pci 0x8086 -&device.id pci 0x24d2 -&subvendor.id pci 0x103c -&subdevice.id pci 0x12bc -+subdevice.name d530 CMT (DG746A) - - vendor.id pci 0x8086 -&device.id pci 0x24d2 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a6 -+subdevice.name P4P800 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d2 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x24d2 -+subdevice.name GA-8KNXP motherboard (875P) - - vendor.id pci 0x8086 -&device.id pci 0x24d2 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7280 -+subdevice.name 865PE Neo2 (MS-6728) - - vendor.id pci 0x8086 -&device.id pci 0x24d2 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3427 -+subdevice.name S875WP1-E mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d2 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x524c -+subdevice.name D865PERL mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d3 -+device.name 82801EB/ER (ICH5/ICH5R) SMBus Controller - - vendor.id pci 0x8086 -&device.id pci 0x24d3 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a6 -+subdevice.name P4P800 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d3 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x24d2 -+subdevice.name GA-8IPE1000 Pro2 motherboard (865PE) - - vendor.id pci 0x8086 -&device.id pci 0x24d3 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7280 -+subdevice.name 865PE Neo2 (MS-6728) - - vendor.id pci 0x8086 -&device.id pci 0x24d3 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3427 -+subdevice.name S875WP1-E mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d3 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x524c -+subdevice.name D865PERL mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d4 -+device.name 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 - - vendor.id pci 0x8086 -&device.id pci 0x24d4 -&subvendor.id pci 0x103c -&subdevice.id pci 0x12bc -+subdevice.name d530 CMT (DG746A) - - vendor.id pci 0x8086 -&device.id pci 0x24d4 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a6 -+subdevice.name P4P800 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d4 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x24d2 -+subdevice.name GA-8IPE1000 Pro2 motherboard (865PE) - - vendor.id pci 0x8086 -&device.id pci 0x24d4 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7280 -+subdevice.name 865PE Neo2 (MS-6728) - - vendor.id pci 0x8086 -&device.id pci 0x24d4 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3427 -+subdevice.name S875WP1-E mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d4 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x524c -+subdevice.name D865PERL mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d5 -+device.name 82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller - - vendor.id pci 0x8086 -&device.id pci 0x24d5 -&subvendor.id pci 0x103c -&subdevice.id pci 0x12bc -+subdevice.name Analog Devices codec [SoundMAX Integrated Digital Audio] - - vendor.id pci 0x8086 -&device.id pci 0x24d5 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80f3 -+subdevice.name P4P800 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d5 -&subvendor.id pci 0x1458 -&subdevice.id pci 0xa002 -+subdevice.name GA-8KNXP motherboard (875P) - - vendor.id pci 0x8086 -&device.id pci 0x24d5 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7280 -+subdevice.name 865PE Neo2 (MS-6728) - - vendor.id pci 0x8086 -&device.id pci 0x24d5 -&subvendor.id pci 0x8086 -&subdevice.id pci 0xa000 -+subdevice.name D865PERL mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d6 -+device.name 82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller - - vendor.id pci 0x8086 -&device.id pci 0x24d7 -+device.name 82801EB/ER (ICH5/ICH5R) USB UHCI #3 - - vendor.id pci 0x8086 -&device.id pci 0x24d7 -&subvendor.id pci 0x103c -&subdevice.id pci 0x12bc -+subdevice.name d530 CMT (DG746A) - - vendor.id pci 0x8086 -&device.id pci 0x24d7 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a6 -+subdevice.name P4P800 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d7 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x24d2 -+subdevice.name GA-8IPE1000 Pro2 motherboard (865PE) - - vendor.id pci 0x8086 -&device.id pci 0x24d7 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7280 -+subdevice.name 865PE Neo2 (MS-6728) - - vendor.id pci 0x8086 -&device.id pci 0x24d7 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3427 -+subdevice.name S875WP1-E mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24d7 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x524c -+subdevice.name D865PERL mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24db -+device.name 82801EB/ER (ICH5/ICH5R) IDE Controller - - vendor.id pci 0x8086 -&device.id pci 0x24db -&subvendor.id pci 0x103c -&subdevice.id pci 0x12bc -+subdevice.name d530 CMT (DG746A) - - vendor.id pci 0x8086 -&device.id pci 0x24db -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a6 -+subdevice.name P4P800 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24db -&subvendor.id pci 0x1458 -&subdevice.id pci 0x24d2 -+subdevice.name GA-8IPE1000 Pro2 motherboard (865PE) - - vendor.id pci 0x8086 -&device.id pci 0x24db -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7280 -+subdevice.name 865PE Neo2 (MS-6728) - - vendor.id pci 0x8086 -&device.id pci 0x24db -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7580 -+subdevice.name MSI 875P - - vendor.id pci 0x8086 -&device.id pci 0x24db -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3427 -+subdevice.name S875WP1-E mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24db -&subvendor.id pci 0x8086 -&subdevice.id pci 0x524c -+subdevice.name D865PERL mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24dc -+device.name 82801EB (ICH5) LPC Interface Bridge - - vendor.id pci 0x8086 -&device.id pci 0x24dd -+device.name 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller - - vendor.id pci 0x8086 -&device.id pci 0x24dd -&subvendor.id pci 0x103c -&subdevice.id pci 0x12bc -+subdevice.name d530 CMT (DG746A) - - vendor.id pci 0x8086 -&device.id pci 0x24dd -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a6 -+subdevice.name P4P800 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24dd -&subvendor.id pci 0x1458 -&subdevice.id pci 0x5006 -+subdevice.name GA-8IPE1000 Pro2 motherboard (865PE) - - vendor.id pci 0x8086 -&device.id pci 0x24dd -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7280 -+subdevice.name 865PE Neo2 (MS-6728) - - vendor.id pci 0x8086 -&device.id pci 0x24dd -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3427 -+subdevice.name S875WP1-E mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24dd -&subvendor.id pci 0x8086 -&subdevice.id pci 0x524c -+subdevice.name D865PERL mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24de -+device.name 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 - - vendor.id pci 0x8086 -&device.id pci 0x24de -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80a6 -+subdevice.name P4P800 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24de -&subvendor.id pci 0x1458 -&subdevice.id pci 0x24d2 -+subdevice.name GA-8IPE1000 Pro2 motherboard (865PE) - - vendor.id pci 0x8086 -&device.id pci 0x24de -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7280 -+subdevice.name 865PE Neo2 (MS-6728) - - vendor.id pci 0x8086 -&device.id pci 0x24de -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3427 -+subdevice.name S875WP1-E mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24de -&subvendor.id pci 0x8086 -&subdevice.id pci 0x524c -+subdevice.name D865PERL mainboard - - vendor.id pci 0x8086 -&device.id pci 0x24df -+device.name 82801ER (ICH5R) SATA Controller - - vendor.id pci 0x8086 -&device.id pci 0x2500 -+device.name 82820 820 (Camino) Chipset Host Bridge (MCH) - - vendor.id pci 0x8086 -&device.id pci 0x2500 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0095 -+subdevice.name Precision Workstation 220 Chipset - - vendor.id pci 0x8086 -&device.id pci 0x2500 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x801c -+subdevice.name P3C-2000 system chipset - - vendor.id pci 0x8086 -&device.id pci 0x2501 -+device.name 82820 820 (Camino) Chipset Host Bridge (MCH) - - vendor.id pci 0x8086 -&device.id pci 0x2501 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x801c -+subdevice.name P3C-2000 system chipset - - vendor.id pci 0x8086 -&device.id pci 0x250b -+device.name 82820 820 (Camino) Chipset Host Bridge - - vendor.id pci 0x8086 -&device.id pci 0x250f -+device.name 82820 820 (Camino) Chipset AGP Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2520 -+device.name 82805AA MTH Memory Translator Hub - - vendor.id pci 0x8086 -&device.id pci 0x2521 -+device.name 82804AA MRH-S Memory Repeater Hub for SDRAM - - vendor.id pci 0x8086 -&device.id pci 0x2530 -+device.name 82850 850 (Tehama) Chipset Host Bridge (MCH) - - vendor.id pci 0x8086 -&device.id pci 0x2530 -&subvendor.id pci 0x147b -&subdevice.id pci 0x0507 -+subdevice.name TH7II-RAID - - vendor.id pci 0x8086 -&device.id pci 0x2531 -+device.name 82860 860 (Wombat) Chipset Host Bridge (MCH) - - vendor.id pci 0x8086 -&device.id pci 0x2532 -+device.name 82850 850 (Tehama) Chipset AGP Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2533 -+device.name 82860 860 (Wombat) Chipset AGP Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2534 -+device.name 82860 860 (Wombat) Chipset PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2540 -+device.name E7500 Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x2540 -&subvendor.id pci 0x15d9 -&subdevice.id pci 0x3480 -+subdevice.name P4DP6 - - vendor.id pci 0x8086 -&device.id pci 0x2541 -+device.name E7500/E7501 Host RASUM Controller - - vendor.id pci 0x8086 -&device.id pci 0x2541 -&subvendor.id pci 0x15d9 -&subdevice.id pci 0x3480 -+subdevice.name P4DP6 - - vendor.id pci 0x8086 -&device.id pci 0x2541 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1090 -+subdevice.name Cx9 / Vx9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2541 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3424 -+subdevice.name SE7501HG2 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2543 -+device.name E7500/E7501 Hub Interface B PCI-to-PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2544 -+device.name E7500/E7501 Hub Interface B RASUM Controller - - vendor.id pci 0x8086 -&device.id pci 0x2544 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1090 -+subdevice.name Cx9 / Vx9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2545 -+device.name E7500/E7501 Hub Interface C PCI-to-PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2546 -+device.name E7500/E7501 Hub Interface C RASUM Controller - - vendor.id pci 0x8086 -&device.id pci 0x2547 -+device.name E7500/E7501 Hub Interface D PCI-to-PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2548 -+device.name E7500/E7501 Hub Interface D RASUM Controller - - vendor.id pci 0x8086 -&device.id pci 0x254c -+device.name E7501 Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x254c -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1090 -+subdevice.name Cx9 / Vx9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x254c -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3424 -+subdevice.name SE7501HG2 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2550 -+device.name E7505 Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x2551 -+device.name E7505/E7205 Series RAS Controller - - vendor.id pci 0x8086 -&device.id pci 0x2552 -+device.name E7505/E7205 PCI-to-AGP Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2553 -+device.name E7505 Hub Interface B PCI-to-PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2554 -+device.name E7505 Hub Interface B PCI-to-PCI Bridge RAS Controller - - vendor.id pci 0x8086 -&device.id pci 0x255d -+device.name E7205 Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x2560 -+device.name 82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface - - vendor.id pci 0x8086 -&device.id pci 0x2560 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0126 -+subdevice.name Optiplex GX260 - - vendor.id pci 0x8086 -&device.id pci 0x2560 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x2560 -+subdevice.name GA-8PE667 Ultra - - vendor.id pci 0x8086 -&device.id pci 0x2560 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x5800 -+subdevice.name 845PE Max (MS-6580) - - vendor.id pci 0x8086 -&device.id pci 0x2561 -+device.name 82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2562 -+device.name 82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device - - vendor.id pci 0x8086 -&device.id pci 0x2562 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0267 -+subdevice.name NetVista A30p - - vendor.id pci 0x8086 -&device.id pci 0x2570 -+device.name 82865G/PE/P DRAM Controller/Host-Hub Interface - - vendor.id pci 0x8086 -&device.id pci 0x2570 -&subvendor.id pci 0x1043 -&subdevice.id pci 0x80f2 -+subdevice.name P4P800 Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x2570 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x2570 -+subdevice.name GA-8IPE1000 Pro2 motherboard (865PE) - - vendor.id pci 0x8086 -&device.id pci 0x2571 -+device.name 82865G/PE/P PCI to AGP Controller - - vendor.id pci 0x8086 -&device.id pci 0x2572 -+device.name 82865G Integrated Graphics Controller - - vendor.id pci 0x8086 -&device.id pci 0x2573 -+device.name 82865G/PE/P PCI to CSA Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2576 -+device.name 82865G/PE/P Processor to I/O Memory Interface - - vendor.id pci 0x8086 -&device.id pci 0x2578 -+device.name 82875P/E7210 Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x2578 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x2578 -+subdevice.name GA-8KNXP motherboard (875P) - - vendor.id pci 0x8086 -&device.id pci 0x2578 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x7580 -+subdevice.name MS-6758 (875P Neo) - - vendor.id pci 0x8086 -&device.id pci 0x2578 -&subvendor.id pci 0x15d9 -&subdevice.id pci 0x4580 -+subdevice.name Super Micro Computer Inc. P4SCE - - vendor.id pci 0x8086 -&device.id pci 0x2579 -+device.name 82875P Processor to AGP Controller - - vendor.id pci 0x8086 -&device.id pci 0x257b -+device.name 82875P/E7210 Processor to PCI to CSA Bridge - - vendor.id pci 0x8086 -&device.id pci 0x257e -+device.name 82875P/E7210 Processor to I/O Memory Interface - - vendor.id pci 0x8086 -&device.id pci 0x2580 -+device.name 915G/P/GV Processor to I/O Controller - - vendor.id pci 0x8086 -&device.id pci 0x2581 -+device.name 915G/P/GV PCI Express Root Port - - vendor.id pci 0x8086 -&device.id pci 0x2582 -+device.name 82915G/GV/910GL Express Chipset Family Graphics Controller - - vendor.id pci 0x8086 -&device.id pci 0x2582 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x1079 -+subdevice.name Optiplex GX280 - - vendor.id pci 0x8086 -&device.id pci 0x2584 -+device.name 925X/XE Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x2585 -+device.name 925X/XE PCI Express Root Port - - vendor.id pci 0x8086 -&device.id pci 0x2588 -+device.name E7220/E7221 Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x2589 -+device.name E7220/E7221 PCI Express Root Port - - vendor.id pci 0x8086 -&device.id pci 0x258a -+device.name E7221 Integrated Graphics Controller - - vendor.id pci 0x8086 -&device.id pci 0x2590 -+device.name Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller - - vendor.id pci 0x8086 -&device.id pci 0x2591 -+device.name Mobile 915GM/PM Express PCI Express Root Port - - vendor.id pci 0x8086 -&device.id pci 0x2592 -+device.name Mobile 915GM/GMS/910GML Express Graphics Controller - - vendor.id pci 0x8086 -&device.id pci 0x25a1 -+device.name 6300ESB LPC Interface Controller - - vendor.id pci 0x8086 -&device.id pci 0x25a2 -+device.name 6300ESB PATA Storage Controller - - vendor.id pci 0x8086 -&device.id pci 0x25a2 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x25a3 -+device.name 6300ESB SATA Storage Controller - - vendor.id pci 0x8086 -&device.id pci 0x25a3 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x25a4 -+device.name 6300ESB SMBus Controller - - vendor.id pci 0x8086 -&device.id pci 0x25a4 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x25a6 -+device.name 6300ESB AC'97 Audio Controller - - vendor.id pci 0x8086 -&device.id pci 0x25a6 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x25a7 -+device.name 6300ESB AC'97 Modem Controller - - vendor.id pci 0x8086 -&device.id pci 0x25a9 -+device.name 6300ESB USB Universal Host Controller - - vendor.id pci 0x8086 -&device.id pci 0x25a9 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x25aa -+device.name 6300ESB USB Universal Host Controller - - vendor.id pci 0x8086 -&device.id pci 0x25aa -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x25ab -+device.name 6300ESB Watchdog Timer - - vendor.id pci 0x8086 -&device.id pci 0x25ab -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x25ac -+device.name 6300ESB I/O Advanced Programmable Interrupt Controller - - vendor.id pci 0x8086 -&device.id pci 0x25ac -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x25ad -+device.name 6300ESB USB2 Enhanced Host Controller - - vendor.id pci 0x8086 -&device.id pci 0x25ae -+device.name 6300ESB 64-bit PCI-X Bridge - - vendor.id pci 0x8086 -&device.id pci 0x25b0 -+device.name 6300ESB SATA RAID Controller - - vendor.id pci 0x8086 -&device.id pci 0x2600 -+device.name Server Hub Interface - - vendor.id pci 0x8086 -&device.id pci 0x2601 -+device.name Server Hub PCI Express x4 Port D - - vendor.id pci 0x8086 -&device.id pci 0x2602 -+device.name Server Hub PCI Express x4 Port C0 - - vendor.id pci 0x8086 -&device.id pci 0x2603 -+device.name Server Hub PCI Express x4 Port C1 - - vendor.id pci 0x8086 -&device.id pci 0x2604 -+device.name Server Hub PCI Express x4 Port B0 - - vendor.id pci 0x8086 -&device.id pci 0x2605 -+device.name Server Hub PCI Express x4 Port B1 - - vendor.id pci 0x8086 -&device.id pci 0x2606 -+device.name Server Hub PCI Express x4 Port A0 - - vendor.id pci 0x8086 -&device.id pci 0x2607 -+device.name Server Hub PCI Express x4 Port A1 - - vendor.id pci 0x8086 -&device.id pci 0x2608 -+device.name Server Hub PCI Express x8 Port C - - vendor.id pci 0x8086 -&device.id pci 0x2609 -+device.name Server Hub PCI Express x8 Port B - - vendor.id pci 0x8086 -&device.id pci 0x260a -+device.name Server Hub PCI Express x8 Port A - - vendor.id pci 0x8086 -&device.id pci 0x260c -+device.name Server Hub IMI Registers - - vendor.id pci 0x8086 -&device.id pci 0x2610 -+device.name Server Hub System Bus, Boot, and Interrupt Registers - - vendor.id pci 0x8086 -&device.id pci 0x2611 -+device.name Server Hub Address Mapping Registers - - vendor.id pci 0x8086 -&device.id pci 0x2612 -+device.name Server Hub RAS Registers - - vendor.id pci 0x8086 -&device.id pci 0x2613 -+device.name Server Hub Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x2614 -+device.name Server Hub Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x2615 -+device.name Server Hub Miscellaneous Registers - - vendor.id pci 0x8086 -&device.id pci 0x2617 -+device.name Server Hub Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x2618 -+device.name Server Hub Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x2619 -+device.name Server Hub Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x261a -+device.name Server Hub Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x261b -+device.name Server Hub Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x261c -+device.name Server Hub Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x261d -+device.name Server Hub Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x261e -+device.name Server Hub Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x2620 -+device.name External Memory Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2621 -+device.name External Memory Bridge Control Registers - - vendor.id pci 0x8086 -&device.id pci 0x2622 -+device.name External Memory Bridge Memory Interleaving Registers - - vendor.id pci 0x8086 -&device.id pci 0x2623 -+device.name External Memory Bridge DDR Initialization and Calibration - - vendor.id pci 0x8086 -&device.id pci 0x2624 -+device.name External Memory Bridge Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x2625 -+device.name External Memory Bridge Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x2626 -+device.name External Memory Bridge Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x2627 -+device.name External Memory Bridge Reserved Registers - - vendor.id pci 0x8086 -&device.id pci 0x2640 -+device.name 82801FB/FR (ICH6/ICH6R) LPC Interface Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2641 -+device.name 82801FBM (ICH6M) LPC Interface Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2642 -+device.name 82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge - - vendor.id pci 0x8086 -&device.id pci 0x2651 -+device.name 82801FB/FW (ICH6/ICH6W) SATA Controller - - vendor.id pci 0x8086 -&device.id pci 0x2651 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0179 -+subdevice.name Optiplex GX280 - - vendor.id pci 0x8086 -&device.id pci 0x2652 -+device.name 82801FR/FRW (ICH6R/ICH6RW) SATA Controller - - vendor.id pci 0x8086 -&device.id pci 0x2653 -+device.name 82801FBM (ICH6M) SATA Controller - - vendor.id pci 0x8086 -&device.id pci 0x2658 -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 - - vendor.id pci 0x8086 -&device.id pci 0x2658 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0179 -+subdevice.name Optiplex GX280 - - vendor.id pci 0x8086 -&device.id pci 0x2659 -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 - - vendor.id pci 0x8086 -&device.id pci 0x2659 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0179 -+subdevice.name Optiplex GX280 - - vendor.id pci 0x8086 -&device.id pci 0x265a -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 - - vendor.id pci 0x8086 -&device.id pci 0x265a -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0179 -+subdevice.name Optiplex GX280 - - vendor.id pci 0x8086 -&device.id pci 0x265b -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 - - vendor.id pci 0x8086 -&device.id pci 0x265b -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0179 -+subdevice.name Optiplex GX280 - - vendor.id pci 0x8086 -&device.id pci 0x265c -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller - - vendor.id pci 0x8086 -&device.id pci 0x265c -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0179 -+subdevice.name Optiplex GX280 - - vendor.id pci 0x8086 -&device.id pci 0x2660 -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 - - vendor.id pci 0x8086 -&device.id pci 0x2662 -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 - - vendor.id pci 0x8086 -&device.id pci 0x2664 -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 - - vendor.id pci 0x8086 -&device.id pci 0x2666 -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4 - - vendor.id pci 0x8086 -&device.id pci 0x2668 -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller - - vendor.id pci 0x8086 -&device.id pci 0x266a -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller - - vendor.id pci 0x8086 -&device.id pci 0x266a -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0179 -+subdevice.name Optiplex GX280 - - vendor.id pci 0x8086 -&device.id pci 0x266c -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller - - vendor.id pci 0x8086 -&device.id pci 0x266d -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller - - vendor.id pci 0x8086 -&device.id pci 0x266e -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller - - vendor.id pci 0x8086 -&device.id pci 0x266e -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0179 -+subdevice.name Optiplex GX280 - - vendor.id pci 0x8086 -&device.id pci 0x266f -+device.name 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller - - vendor.id pci 0x8086 -&device.id pci 0x2770 -+device.name Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x2771 -+device.name PCI Express Graphics Port - - vendor.id pci 0x8086 -&device.id pci 0x2772 -+device.name Integrated Graphics Controller - - vendor.id pci 0x8086 -&device.id pci 0x2774 -+device.name Workstation Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x2775 -+device.name PCI Express Graphics Port - - vendor.id pci 0x8086 -&device.id pci 0x2776 -+device.name Integrated Graphics Controller - - vendor.id pci 0x8086 -&device.id pci 0x2778 -+device.name Server Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x2779 -+device.name PCI Express Root Port - - vendor.id pci 0x8086 -&device.id pci 0x2782 -+device.name 82915G Express Chipset Family Graphics Controller - - vendor.id pci 0x8086 -&device.id pci 0x2792 -+device.name Mobile 915GM/GMS/910GML Express Graphics Controller - - vendor.id pci 0x8086 -&device.id pci 0x27b1 -+device.name Mobile I/O Controller Hub LPC - - vendor.id pci 0x8086 -&device.id pci 0x27b8 -+device.name I/O Controller Hub LPC - - vendor.id pci 0x8086 -&device.id pci 0x27c0 -+device.name I/O Controller Hub SATA cc=IDE - - vendor.id pci 0x8086 -&device.id pci 0x27c1 -+device.name I/O Controller Hub SATA cc=AHCI - - vendor.id pci 0x8086 -&device.id pci 0x27c2 -+device.name I/O Controller Hub SATA cc=RAID - - vendor.id pci 0x8086 -&device.id pci 0x27c3 -+device.name I/O Controller Hub SATA cc=RAID - - vendor.id pci 0x8086 -&device.id pci 0x27c4 -+device.name Mobile I/O Controller Hub SATA cc=IDE - - vendor.id pci 0x8086 -&device.id pci 0x27c5 -+device.name Mobile I/O Controller Hub SATA cc=AHCI - - vendor.id pci 0x8086 -&device.id pci 0x27c8 -+device.name I/O Controller Hub UHCI USB #1 - - vendor.id pci 0x8086 -&device.id pci 0x27c9 -+device.name I/O Controller Hub UHCI USB #2 - - vendor.id pci 0x8086 -&device.id pci 0x27ca -+device.name I/O Controller Hub UHCI USB #3 - - vendor.id pci 0x8086 -&device.id pci 0x27cb -+device.name I/O Controller Hub UHCI USB #4 - - vendor.id pci 0x8086 -&device.id pci 0x27cc -+device.name I/O Controller Hub EHCI USB - - vendor.id pci 0x8086 -&device.id pci 0x27d0 -+device.name I/O Controller Hub PCI Express Port 1 - - vendor.id pci 0x8086 -&device.id pci 0x27d2 -+device.name I/O Controller Hub PCI Express Port 2 - - vendor.id pci 0x8086 -&device.id pci 0x27d4 -+device.name I/O Controller Hub PCI Express Port 3 - - vendor.id pci 0x8086 -&device.id pci 0x27d6 -+device.name I/O Controller Hub PCI Express Port 4 - - vendor.id pci 0x8086 -&device.id pci 0x27d8 -+device.name I/O Controller Hub High Definition Audio - - vendor.id pci 0x8086 -&device.id pci 0x27da -+device.name I/O Controller Hub SMBus - - vendor.id pci 0x8086 -&device.id pci 0x27dc -+device.name I/O Controller Hub LAN - - vendor.id pci 0x8086 -&device.id pci 0x27dd -+device.name I/O Controller Hub AC'97 Modem - - vendor.id pci 0x8086 -&device.id pci 0x27de -+device.name I/O Controller Hub AC'97 Audio - - vendor.id pci 0x8086 -&device.id pci 0x27df -+device.name I/O Controller Hub PATA - - vendor.id pci 0x8086 -&device.id pci 0x27e0 -+device.name I/O Controller Hub PCI Express Port 5 - - vendor.id pci 0x8086 -&device.id pci 0x27e2 -+device.name I/O Controller Hub PCI Express Port 6 - - vendor.id pci 0x8086 -&device.id pci 0x3092 -+device.name Integrated RAID - - vendor.id pci 0x8086 -&device.id pci 0x3200 -+device.name GD31244 PCI-X SATA HBA - - vendor.id pci 0x8086 -&device.id pci 0x3340 -+device.name 82855PM Processor to I/O Controller - - vendor.id pci 0x8086 -&device.id pci 0x3340 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x005a -+subdevice.name TravelMate 290 - - vendor.id pci 0x8086 -&device.id pci 0x3340 -&subvendor.id pci 0x103c -&subdevice.id pci 0x0890 -+subdevice.name NC6000 laptop - - vendor.id pci 0x8086 -&device.id pci 0x3341 -+device.name 82855PM Processor to AGP Controller - - vendor.id pci 0x8086 -&device.id pci 0x3575 -+device.name 82830 830 Chipset Host Bridge - - vendor.id pci 0x8086 -&device.id pci 0x3575 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x021d -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x8086 -&device.id pci 0x3575 -&subvendor.id pci 0x104d -&subdevice.id pci 0x80e7 -+subdevice.name VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - - vendor.id pci 0x8086 -&device.id pci 0x3576 -+device.name 82830 830 Chipset AGP Bridge - - vendor.id pci 0x8086 -&device.id pci 0x3577 -+device.name 82830 CGC [Chipset Graphics Controller] - - vendor.id pci 0x8086 -&device.id pci 0x3577 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0513 -+subdevice.name ThinkPad A/T/X Series - - vendor.id pci 0x8086 -&device.id pci 0x3578 -+device.name 82830 830 Chipset Host Bridge - - vendor.id pci 0x8086 -&device.id pci 0x3580 -+device.name 82852/82855 GM/GME/PM/GMV Processor to I/O Controller - - vendor.id pci 0x8086 -&device.id pci 0x3580 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0163 -+subdevice.name Latitude D505 - - vendor.id pci 0x8086 -&device.id pci 0x3580 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x3581 -+device.name 82852/82855 GM/GME/PM/GMV Processor to AGP Controller - - vendor.id pci 0x8086 -&device.id pci 0x3582 -+device.name 82852/855GM Integrated Graphics Device - - vendor.id pci 0x8086 -&device.id pci 0x3582 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0163 -+subdevice.name Latitude D505 - - vendor.id pci 0x8086 -&device.id pci 0x3582 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x3584 -+device.name 82852/82855 GM/GME/PM/GMV Processor to I/O Controller - - vendor.id pci 0x8086 -&device.id pci 0x3584 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0163 -+subdevice.name Latitude D505 - - vendor.id pci 0x8086 -&device.id pci 0x3584 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x3585 -+device.name 82852/82855 GM/GME/PM/GMV Processor to I/O Controller - - vendor.id pci 0x8086 -&device.id pci 0x3585 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0163 -+subdevice.name Latitude D505 - - vendor.id pci 0x8086 -&device.id pci 0x3585 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10b0 -+subdevice.name CL9 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x3590 -+device.name E7520 Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x3591 -+device.name E7525/E7520 Error Reporting Registers - - vendor.id pci 0x8086 -&device.id pci 0x3592 -+device.name E7320 Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x3593 -+device.name E7320 Error Reporting Registers - - vendor.id pci 0x8086 -&device.id pci 0x3594 -+device.name E7520 DMA Controller - - vendor.id pci 0x8086 -&device.id pci 0x3595 -+device.name E7525/E7520/E7320 PCI Express Port A - - vendor.id pci 0x8086 -&device.id pci 0x3596 -+device.name E7525/E7520/E7320 PCI Express Port A1 - - vendor.id pci 0x8086 -&device.id pci 0x3597 -+device.name E7525/E7520 PCI Express Port B - - vendor.id pci 0x8086 -&device.id pci 0x3598 -+device.name E7520 PCI Express Port B1 - - vendor.id pci 0x8086 -&device.id pci 0x3599 -+device.name E7520 PCI Express Port C - - vendor.id pci 0x8086 -&device.id pci 0x359a -+device.name E7520 PCI Express Port C1 - - vendor.id pci 0x8086 -&device.id pci 0x359b -+device.name E7525/E7520/E7320 Extended Configuration Registers - - vendor.id pci 0x8086 -&device.id pci 0x359e -+device.name E7525 Memory Controller Hub - - vendor.id pci 0x8086 -&device.id pci 0x4220 -+device.name PRO/Wireless 2200BG - - vendor.id pci 0x8086 -&device.id pci 0x4223 -+device.name PRO/Wireless 2915ABG MiniPCI Adapter - - vendor.id pci 0x8086 -&device.id pci 0x5200 -+device.name EtherExpress PRO/100 Intelligent Server - - vendor.id pci 0x8086 -&device.id pci 0x5201 -+device.name EtherExpress PRO/100 Intelligent Server - - vendor.id pci 0x8086 -&device.id pci 0x5201 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0001 -+subdevice.name EtherExpress PRO/100 Server Ethernet Adapter - - vendor.id pci 0x8086 -&device.id pci 0x530d -+device.name 80310 IOP [IO Processor] - - vendor.id pci 0x8086 -&device.id pci 0x7000 -+device.name 82371SB PIIX3 ISA [Natoma/Triton II] - - vendor.id pci 0x8086 -&device.id pci 0x7010 -+device.name 82371SB PIIX3 IDE [Natoma/Triton II] - - vendor.id pci 0x8086 -&device.id pci 0x7020 -+device.name 82371SB PIIX3 USB [Natoma/Triton II] - - vendor.id pci 0x8086 -&device.id pci 0x7030 -+device.name 430VX - 82437VX TVX [Triton VX] - - vendor.id pci 0x8086 -&device.id pci 0x7050 -+device.name Intel Intercast Video Capture Card - - vendor.id pci 0x8086 -&device.id pci 0x7100 -+device.name 430TX - 82439TX MTXC - - vendor.id pci 0x8086 -&device.id pci 0x7110 -+device.name 82371AB/EB/MB PIIX4 ISA - - vendor.id pci 0x8086 -&device.id pci 0x7110 -&subvendor.id pci 0x15ad -&subdevice.id pci 0x1976 -+subdevice.name virtualHW v3 - - vendor.id pci 0x8086 -&device.id pci 0x7111 -+device.name 82371AB/EB/MB PIIX4 IDE - - vendor.id pci 0x8086 -&device.id pci 0x7111 -&subvendor.id pci 0x15ad -&subdevice.id pci 0x1976 -+subdevice.name virtualHW v3 - - vendor.id pci 0x8086 -&device.id pci 0x7112 -+device.name 82371AB/EB/MB PIIX4 USB - - vendor.id pci 0x8086 -&device.id pci 0x7112 -&subvendor.id pci 0x15ad -&subdevice.id pci 0x1976 -+subdevice.name virtualHW v3 - - vendor.id pci 0x8086 -&device.id pci 0x7113 -+device.name 82371AB/EB/MB PIIX4 ACPI - - vendor.id pci 0x8086 -&device.id pci 0x7113 -&subvendor.id pci 0x15ad -&subdevice.id pci 0x1976 -+subdevice.name virtualHW v3 - - vendor.id pci 0x8086 -&device.id pci 0x7120 -+device.name 82810 GMCH [Graphics Memory Controller Hub] - - vendor.id pci 0x8086 -&device.id pci 0x7120 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1040 -+subdevice.name CL7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x7120 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1060 -+subdevice.name PC7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x7121 -+device.name 82810 CGC [Chipset Graphics Controller] - - vendor.id pci 0x8086 -&device.id pci 0x7121 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1040 -+subdevice.name CL7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x7121 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1060 -+subdevice.name PC7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x7121 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x4341 -+subdevice.name Cayman (CA810) Mainboard - - vendor.id pci 0x8086 -&device.id pci 0x7122 -+device.name 82810 DC-100 GMCH [Graphics Memory Controller Hub] - - vendor.id pci 0x8086 -&device.id pci 0x7123 -+device.name 82810 DC-100 CGC [Chipset Graphics Controller] - - vendor.id pci 0x8086 -&device.id pci 0x7124 -+device.name 82810E DC-133 GMCH [Graphics Memory Controller Hub] - - vendor.id pci 0x8086 -&device.id pci 0x7125 -+device.name 82810E DC-133 CGC [Chipset Graphics Controller] - - vendor.id pci 0x8086 -&device.id pci 0x7126 -+device.name 82810 DC-133 System and Graphics Controller - - vendor.id pci 0x8086 -&device.id pci 0x7128 -+device.name 82810-M DC-100 System and Graphics Controller - - vendor.id pci 0x8086 -&device.id pci 0x712a -+device.name 82810-M DC-133 System and Graphics Controller - - vendor.id pci 0x8086 -&device.id pci 0x7180 -+device.name 440LX/EX - 82443LX/EX Host bridge - - vendor.id pci 0x8086 -&device.id pci 0x7181 -+device.name 440LX/EX - 82443LX/EX AGP bridge - - vendor.id pci 0x8086 -&device.id pci 0x7190 -+device.name 440BX/ZX/DX - 82443BX/ZX/DX Host bridge - - vendor.id pci 0x8086 -&device.id pci 0x7190 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0500 -+subdevice.name Armada 1750 Laptop System Chipset - - vendor.id pci 0x8086 -&device.id pci 0x7190 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xb110 -+subdevice.name Armada M700/E500 - - vendor.id pci 0x8086 -&device.id pci 0x7190 -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Toshiba Tecra 8100 Laptop System Chipset - - vendor.id pci 0x8086 -&device.id pci 0x7190 -&subvendor.id pci 0x15ad -&subdevice.id pci 0x1976 -+subdevice.name virtualHW v3 - - vendor.id pci 0x8086 -&device.id pci 0x7190 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1050 -+subdevice.name CT7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x7190 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1051 -+subdevice.name CE7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x7191 -+device.name 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge - - vendor.id pci 0x8086 -&device.id pci 0x7192 -+device.name 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) - - vendor.id pci 0x8086 -&device.id pci 0x7192 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0460 -+subdevice.name Armada 1700 Laptop System Chipset - - vendor.id pci 0x8086 -&device.id pci 0x7192 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1000 -+subdevice.name CC7/CR7/CP7/VC7/VP7/VR7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x7194 -+device.name 82440MX Host Bridge - - vendor.id pci 0x8086 -&device.id pci 0x7194 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x0000 -+subdevice.name Versa Note Vxi - - vendor.id pci 0x8086 -&device.id pci 0x7194 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x10a0 -+subdevice.name CA3/CR3 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x7195 -+device.name 82440MX AC'97 Audio Controller - - vendor.id pci 0x8086 -&device.id pci 0x7195 -&subvendor.id pci 0x1033 -&subdevice.id pci 0x80cc -+subdevice.name Versa Note VXi - - vendor.id pci 0x8086 -&device.id pci 0x7195 -&subvendor.id pci 0x10cf -&subdevice.id pci 0x1099 -+subdevice.name QSound_SigmaTel Stac97 PCI Audio - - vendor.id pci 0x8086 -&device.id pci 0x7195 -&subvendor.id pci 0x11d4 -&subdevice.id pci 0x0040 -+subdevice.name SoundMAX Integrated Digital Audio - - vendor.id pci 0x8086 -&device.id pci 0x7195 -&subvendor.id pci 0x11d4 -&subdevice.id pci 0x0048 -+subdevice.name SoundMAX Integrated Digital Audio - - vendor.id pci 0x8086 -&device.id pci 0x7196 -+device.name 82440MX AC'97 Modem Controller - - vendor.id pci 0x8086 -&device.id pci 0x7198 -+device.name 82440MX ISA Bridge - - vendor.id pci 0x8086 -&device.id pci 0x7199 -+device.name 82440MX EIDE Controller - - vendor.id pci 0x8086 -&device.id pci 0x719a -+device.name 82440MX USB Universal Host Controller - - vendor.id pci 0x8086 -&device.id pci 0x719b -+device.name 82440MX Power Management Controller - - vendor.id pci 0x8086 -&device.id pci 0x71a0 -+device.name 440GX - 82443GX Host bridge - - vendor.id pci 0x8086 -&device.id pci 0x71a0 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1050 -+subdevice.name CT7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x71a0 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1051 -+subdevice.name CE7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x71a1 -+device.name 440GX - 82443GX AGP bridge - - vendor.id pci 0x8086 -&device.id pci 0x71a2 -+device.name 440GX - 82443GX Host bridge (AGP disabled) - - vendor.id pci 0x8086 -&device.id pci 0x71a2 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1000 -+subdevice.name CC7/CR7/CP7/VC7/VP7/VR7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0x7600 -+device.name 82372FB PIIX5 ISA - - vendor.id pci 0x8086 -&device.id pci 0x7601 -+device.name 82372FB PIIX5 IDE - - vendor.id pci 0x8086 -&device.id pci 0x7602 -+device.name 82372FB PIIX5 USB - - vendor.id pci 0x8086 -&device.id pci 0x7603 -+device.name 82372FB PIIX5 SMBus - - vendor.id pci 0x8086 -&device.id pci 0x7800 -+device.name 82740 (i740) AGP Graphics Accelerator - - vendor.id pci 0x8086 -&device.id pci 0x7800 -&subvendor.id pci 0x003d -&subdevice.id pci 0x0008 -+subdevice.name Starfighter AGP - - vendor.id pci 0x8086 -&device.id pci 0x7800 -&subvendor.id pci 0x003d -&subdevice.id pci 0x000b -+subdevice.name Starfighter AGP - - vendor.id pci 0x8086 -&device.id pci 0x7800 -&subvendor.id pci 0x1092 -&subdevice.id pci 0x0100 -+subdevice.name Stealth II G460 - - vendor.id pci 0x8086 -&device.id pci 0x7800 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x201a -+subdevice.name Lightspeed 740 - - vendor.id pci 0x8086 -&device.id pci 0x7800 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x202f -+subdevice.name Lightspeed 740 - - vendor.id pci 0x8086 -&device.id pci 0x7800 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0000 -+subdevice.name Terminator 2x/i - - vendor.id pci 0x8086 -&device.id pci 0x7800 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0100 -+subdevice.name Intel740 Graphics Accelerator - - vendor.id pci 0x8086 -&device.id pci 0x84c4 -+device.name 450KX/GX [Orion] - 82454KX/GX PCI bridge - - vendor.id pci 0x8086 -&device.id pci 0x84c5 -+device.name 450KX/GX [Orion] - 82453KX/GX Memory controller - - vendor.id pci 0x8086 -&device.id pci 0x84ca -+device.name 450NX - 82451NX Memory & I/O Controller - - vendor.id pci 0x8086 -&device.id pci 0x84cb -+device.name 450NX - 82454NX/84460GX PCI Expander Bridge - - vendor.id pci 0x8086 -&device.id pci 0x84e0 -+device.name 460GX - 84460GX System Address Controller (SAC) - - vendor.id pci 0x8086 -&device.id pci 0x84e1 -+device.name 460GX - 84460GX System Data Controller (SDC) - - vendor.id pci 0x8086 -&device.id pci 0x84e2 -+device.name 460GX - 84460GX AGP Bridge (GXB function 2) - - vendor.id pci 0x8086 -&device.id pci 0x84e3 -+device.name 460GX - 84460GX Memory Address Controller (MAC) - - vendor.id pci 0x8086 -&device.id pci 0x84e4 -+device.name 460GX - 84460GX Memory Data Controller (MDC) - - vendor.id pci 0x8086 -&device.id pci 0x84e6 -+device.name 460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB) - - vendor.id pci 0x8086 -&device.id pci 0x84ea -+device.name 460GX - 84460GX AGP Bridge (GXB function 1) - - vendor.id pci 0x8086 -&device.id pci 0x8500 -+device.name IXP4XX - Intel Network Processor family. IXP420, IXP421, IXP422, IXP425 and IXC1100 - - vendor.id pci 0x8086 -&device.id pci 0x9000 -+device.name IXP2000 Family Network Processor - - vendor.id pci 0x8086 -&device.id pci 0x9001 -+device.name IXP2400 Network Processor - - vendor.id pci 0x8086 -&device.id pci 0x9004 -+device.name IXP2800 Network Processor - - vendor.id pci 0x8086 -&device.id pci 0x9621 -+device.name Integrated RAID - - vendor.id pci 0x8086 -&device.id pci 0x9622 -+device.name Integrated RAID - - vendor.id pci 0x8086 -&device.id pci 0x9641 -+device.name Integrated RAID - - vendor.id pci 0x8086 -&device.id pci 0x96a1 -+device.name Integrated RAID - - vendor.id pci 0x8086 -&device.id pci 0xa01f -+device.name PRO/10GbE LR Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0xa11f -+device.name PRO/10GbE LR Server Adapter - - vendor.id pci 0x8086 -&device.id pci 0xb152 -+device.name 21152 PCI-to-PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0xb154 -+device.name 21154 PCI-to-PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0xb555 -+device.name 21555 Non transparent PCI-to-PCI Bridge - - vendor.id pci 0x8086 -&device.id pci 0xb555 -&subvendor.id pci 0x12d9 -&subdevice.id pci 0x000a -+subdevice.name PCI VoIP Gateway - - vendor.id pci 0x8086 -&device.id pci 0xb555 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1050 -+subdevice.name CT7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0xb555 -&subvendor.id pci 0x4c53 -&subdevice.id pci 0x1051 -+subdevice.name CE7 mainboard - - vendor.id pci 0x8086 -&device.id pci 0xb555 -&subvendor.id pci 0xe4bf -&subdevice.id pci 0x1000 -+subdevice.name CC8-1-BLUES - - vendor.id pci 0x8086 -&device.id pci 0xffff -+device.name 450NX/GX [Orion] - 82453KX/GX Memory controller [BUG] - - vendor.id pci 0x8401 -+vendor.name TRENDware International Inc. - - vendor.id pci 0x8800 -+vendor.name Trigem Computer Inc. - - vendor.id pci 0x8800 -&device.id pci 0x2008 -+device.name Video assistent component - - vendor.id pci 0x8866 -+vendor.name T-Square Design Inc. - - vendor.id pci 0x8888 -+vendor.name Silicon Magic - - vendor.id pci 0x8c4a -+vendor.name Winbond - - vendor.id pci 0x8c4a -&device.id pci 0x1980 -+device.name W89C940 misprogrammed [ne2k] - - vendor.id pci 0x8e0e -+vendor.name Computone Corporation - - vendor.id pci 0x8e2e -+vendor.name KTI - - vendor.id pci 0x8e2e -&device.id pci 0x3000 -+device.name ET32P2 - - vendor.id pci 0x9004 -+vendor.name Adaptec - - vendor.id pci 0x9004 -&device.id pci 0x0078 -+device.name AHA-2940U_CN - - vendor.id pci 0x9004 -&device.id pci 0x1078 -+device.name AIC-7810 - - vendor.id pci 0x9004 -&device.id pci 0x1160 -+device.name AIC-1160 [Family Fibre Channel Adapter] - - vendor.id pci 0x9004 -&device.id pci 0x2178 -+device.name AIC-7821 - - vendor.id pci 0x9004 -&device.id pci 0x3860 -+device.name AHA-2930CU - - vendor.id pci 0x9004 -&device.id pci 0x3b78 -+device.name AHA-4844W/4844UW - - vendor.id pci 0x9004 -&device.id pci 0x5075 -+device.name AIC-755x - - vendor.id pci 0x9004 -&device.id pci 0x5078 -+device.name AHA-7850 - - vendor.id pci 0x9004 -&device.id pci 0x5078 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7850 -+subdevice.name AHA-2904/Integrated AIC-7850 - - vendor.id pci 0x9004 -&device.id pci 0x5175 -+device.name AIC-755x - - vendor.id pci 0x9004 -&device.id pci 0x5178 -+device.name AIC-7851 - - vendor.id pci 0x9004 -&device.id pci 0x5275 -+device.name AIC-755x - - vendor.id pci 0x9004 -&device.id pci 0x5278 -+device.name AIC-7852 - - vendor.id pci 0x9004 -&device.id pci 0x5375 -+device.name AIC-755x - - vendor.id pci 0x9004 -&device.id pci 0x5378 -+device.name AIC-7850 - - vendor.id pci 0x9004 -&device.id pci 0x5475 -+device.name AIC-755x - - vendor.id pci 0x9004 -&device.id pci 0x5478 -+device.name AIC-7850 - - vendor.id pci 0x9004 -&device.id pci 0x5575 -+device.name AVA-2930 - - vendor.id pci 0x9004 -&device.id pci 0x5578 -+device.name AIC-7855 - - vendor.id pci 0x9004 -&device.id pci 0x5647 -+device.name ANA-7711 TCP Offload Engine - - vendor.id pci 0x9004 -&device.id pci 0x5647 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7710 -+subdevice.name ANA-7711F TCP Offload Engine - Optical - - vendor.id pci 0x9004 -&device.id pci 0x5647 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7711 -+subdevice.name ANA-7711LP TCP Offload Engine - Copper - - vendor.id pci 0x9004 -&device.id pci 0x5675 -+device.name AIC-755x - - vendor.id pci 0x9004 -&device.id pci 0x5678 -+device.name AIC-7856 - - vendor.id pci 0x9004 -&device.id pci 0x5775 -+device.name AIC-755x - - vendor.id pci 0x9004 -&device.id pci 0x5778 -+device.name AIC-7850 - - vendor.id pci 0x9004 -&device.id pci 0x5800 -+device.name AIC-5800 - - vendor.id pci 0x9004 -&device.id pci 0x5900 -+device.name ANA-5910/5930/5940 ATM155 & 25 LAN Adapter - - vendor.id pci 0x9004 -&device.id pci 0x5905 -+device.name ANA-5910A/5930A/5940A ATM Adapter - - vendor.id pci 0x9004 -&device.id pci 0x6038 -+device.name AIC-3860 - - vendor.id pci 0x9004 -&device.id pci 0x6075 -+device.name AIC-1480 / APA-1480 - - vendor.id pci 0x9004 -&device.id pci 0x6075 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7560 -+subdevice.name AIC-1480 / APA-1480 Cardbus - - vendor.id pci 0x9004 -&device.id pci 0x6078 -+device.name AIC-7860 - - vendor.id pci 0x9004 -&device.id pci 0x6178 -+device.name AIC-7861 - - vendor.id pci 0x9004 -&device.id pci 0x6178 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7861 -+subdevice.name AHA-2940AU Single - - vendor.id pci 0x9004 -&device.id pci 0x6278 -+device.name AIC-7860 - - vendor.id pci 0x9004 -&device.id pci 0x6378 -+device.name AIC-7860 - - vendor.id pci 0x9004 -&device.id pci 0x6478 -+device.name AIC-786x - - vendor.id pci 0x9004 -&device.id pci 0x6578 -+device.name AIC-786x - - vendor.id pci 0x9004 -&device.id pci 0x6678 -+device.name AIC-786x - - vendor.id pci 0x9004 -&device.id pci 0x6778 -+device.name AIC-786x - - vendor.id pci 0x9004 -&device.id pci 0x6915 -+device.name ANA620xx/ANA69011A - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x0008 -+subdevice.name ANA69011A/TX 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x0009 -+subdevice.name ANA69011A/TX 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x0010 -+subdevice.name ANA62022 2-port 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x0018 -+subdevice.name ANA62044 4-port 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x0019 -+subdevice.name ANA62044 4-port 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x0020 -+subdevice.name ANA62022 2-port 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x0028 -+subdevice.name ANA69011A/TX 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x8008 -+subdevice.name ANA69011A/TX 64 bit 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x8009 -+subdevice.name ANA69011A/TX 64 bit 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x8010 -+subdevice.name ANA62022 2-port 64 bit 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x8018 -+subdevice.name ANA62044 4-port 64 bit 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x8019 -+subdevice.name ANA62044 4-port 64 bit 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x8020 -+subdevice.name ANA62022 2-port 64 bit 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x6915 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x8028 -+subdevice.name ANA69011A/TX 64 bit 10/100 - - vendor.id pci 0x9004 -&device.id pci 0x7078 -+device.name AHA-294x / AIC-7870 - - vendor.id pci 0x9004 -&device.id pci 0x7178 -+device.name AHA-2940/2940W / AIC-7871 - - vendor.id pci 0x9004 -&device.id pci 0x7278 -+device.name AHA-3940/3940W / AIC-7872 - - vendor.id pci 0x9004 -&device.id pci 0x7378 -+device.name AHA-3985 / AIC-7873 - - vendor.id pci 0x9004 -&device.id pci 0x7478 -+device.name AHA-2944/2944W / AIC-7874 - - vendor.id pci 0x9004 -&device.id pci 0x7578 -+device.name AHA-3944/3944W / AIC-7875 - - vendor.id pci 0x9004 -&device.id pci 0x7678 -+device.name AHA-4944W/UW / AIC-7876 - - vendor.id pci 0x9004 -&device.id pci 0x7710 -+device.name ANA-7711F Network Accelerator Card (NAC) - Optical - - vendor.id pci 0x9004 -&device.id pci 0x7711 -+device.name ANA-7711C Network Accelerator Card (NAC) - Copper - - vendor.id pci 0x9004 -&device.id pci 0x7778 -+device.name AIC-787x - - vendor.id pci 0x9004 -&device.id pci 0x7810 -+device.name AIC-7810 - - vendor.id pci 0x9004 -&device.id pci 0x7815 -+device.name AIC-7815 RAID+Memory Controller IC - - vendor.id pci 0x9004 -&device.id pci 0x7815 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7815 -+subdevice.name ARO-1130U2 RAID Controller - - vendor.id pci 0x9004 -&device.id pci 0x7815 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7840 -+subdevice.name AIC-7815 RAID+Memory Controller IC - - vendor.id pci 0x9004 -&device.id pci 0x7850 -+device.name AIC-7850 - - vendor.id pci 0x9004 -&device.id pci 0x7855 -+device.name AHA-2930 - - vendor.id pci 0x9004 -&device.id pci 0x7860 -+device.name AIC-7860 - - vendor.id pci 0x9004 -&device.id pci 0x7870 -+device.name AIC-7870 - - vendor.id pci 0x9004 -&device.id pci 0x7871 -+device.name AHA-2940 - - vendor.id pci 0x9004 -&device.id pci 0x7872 -+device.name AHA-3940 - - vendor.id pci 0x9004 -&device.id pci 0x7873 -+device.name AHA-3980 - - vendor.id pci 0x9004 -&device.id pci 0x7874 -+device.name AHA-2944 - - vendor.id pci 0x9004 -&device.id pci 0x7880 -+device.name AIC-7880P - - vendor.id pci 0x9004 -&device.id pci 0x7890 -+device.name AIC-7890 - - vendor.id pci 0x9004 -&device.id pci 0x7891 -+device.name AIC-789x - - vendor.id pci 0x9004 -&device.id pci 0x7892 -+device.name AIC-789x - - vendor.id pci 0x9004 -&device.id pci 0x7893 -+device.name AIC-789x - - vendor.id pci 0x9004 -&device.id pci 0x7894 -+device.name AIC-789x - - vendor.id pci 0x9004 -&device.id pci 0x7895 -+device.name AHA-2940U/UW / AHA-39xx / AIC-7895 - - vendor.id pci 0x9004 -&device.id pci 0x7895 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7890 -+subdevice.name AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B - - vendor.id pci 0x9004 -&device.id pci 0x7895 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7891 -+subdevice.name AHA-2940U/2940UW Dual - - vendor.id pci 0x9004 -&device.id pci 0x7895 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7892 -+subdevice.name AHA-3940AU/AUW/AUWD/UWD - - vendor.id pci 0x9004 -&device.id pci 0x7895 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7894 -+subdevice.name AHA-3944AUWD - - vendor.id pci 0x9004 -&device.id pci 0x7895 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7895 -+subdevice.name AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B - - vendor.id pci 0x9004 -&device.id pci 0x7895 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7896 -+subdevice.name AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B - - vendor.id pci 0x9004 -&device.id pci 0x7895 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7897 -+subdevice.name AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B - - vendor.id pci 0x9004 -&device.id pci 0x7896 -+device.name AIC-789x - - vendor.id pci 0x9004 -&device.id pci 0x7897 -+device.name AIC-789x - - vendor.id pci 0x9004 -&device.id pci 0x8078 -+device.name AIC-7880U - - vendor.id pci 0x9004 -&device.id pci 0x8078 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7880 -+subdevice.name AIC-7880P Ultra/Ultra Wide SCSI Chipset - - vendor.id pci 0x9004 -&device.id pci 0x8178 -+device.name AHA-2940U/UW/D / AIC-7881U - - vendor.id pci 0x9004 -&device.id pci 0x8178 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7881 -+subdevice.name AHA-2940UW SCSI Host Adapter - - vendor.id pci 0x9004 -&device.id pci 0x8278 -+device.name AHA-3940U/UW/UWD / AIC-7882U - - vendor.id pci 0x9004 -&device.id pci 0x8378 -+device.name AHA-3940U/UW / AIC-7883U - - vendor.id pci 0x9004 -&device.id pci 0x8478 -+device.name AHA-2944UW / AIC-7884U - - vendor.id pci 0x9004 -&device.id pci 0x8578 -+device.name AHA-3944U/UWD / AIC-7885 - - vendor.id pci 0x9004 -&device.id pci 0x8678 -+device.name AHA-4944UW / AIC-7886 - - vendor.id pci 0x9004 -&device.id pci 0x8778 -+device.name AHA-2940UW Pro / AIC-788x - - vendor.id pci 0x9004 -&device.id pci 0x8778 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7887 -+subdevice.name 2940UW Pro Ultra-Wide SCSI Controller - - vendor.id pci 0x9004 -&device.id pci 0x8878 -+device.name AHA-2930UW / AIC-7888 - - vendor.id pci 0x9004 -&device.id pci 0x8878 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7888 -+subdevice.name AHA-2930UW SCSI Controller - - vendor.id pci 0x9004 -&device.id pci 0x8b78 -+device.name ABA-1030 - - vendor.id pci 0x9004 -&device.id pci 0xec78 -+device.name AHA-4944W/UW - - vendor.id pci 0x9005 -+vendor.name Adaptec - - vendor.id pci 0x9005 -&device.id pci 0x0010 -+device.name AHA-2940U2/U2W - - vendor.id pci 0x9005 -&device.id pci 0x0010 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x2180 -+subdevice.name AHA-2940U2 SCSI Controller - - vendor.id pci 0x9005 -&device.id pci 0x0010 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x8100 -+subdevice.name AHA-2940U2B SCSI Controller - - vendor.id pci 0x9005 -&device.id pci 0x0010 -&subvendor.id pci 0x9005 -&subdevice.id pci 0xa100 -+subdevice.name AHA-2940U2B SCSI Controller - - vendor.id pci 0x9005 -&device.id pci 0x0010 -&subvendor.id pci 0x9005 -&subdevice.id pci 0xa180 -+subdevice.name AHA-2940U2W SCSI Controller - - vendor.id pci 0x9005 -&device.id pci 0x0010 -&subvendor.id pci 0x9005 -&subdevice.id pci 0xe100 -+subdevice.name AHA-2950U2B SCSI Controller - - vendor.id pci 0x9005 -&device.id pci 0x0011 -+device.name AHA-2930U2 - - vendor.id pci 0x9005 -&device.id pci 0x0013 -+device.name 78902 - - vendor.id pci 0x9005 -&device.id pci 0x0013 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0003 -+subdevice.name AAA-131U2 Array1000 1 Channel RAID Controller - - vendor.id pci 0x9005 -&device.id pci 0x0013 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x000f -+subdevice.name AIC7890_ARO - - vendor.id pci 0x9005 -&device.id pci 0x001f -+device.name AHA-2940U2/U2W / 7890/7891 - - vendor.id pci 0x9005 -&device.id pci 0x001f -&subvendor.id pci 0x9005 -&subdevice.id pci 0x000f -+subdevice.name 2940U2W SCSI Controller - - vendor.id pci 0x9005 -&device.id pci 0x001f -&subvendor.id pci 0x9005 -&subdevice.id pci 0xa180 -+subdevice.name 2940U2W SCSI Controller - - vendor.id pci 0x9005 -&device.id pci 0x0020 -+device.name AIC-7890 - - vendor.id pci 0x9005 -&device.id pci 0x002f -+device.name AIC-7890 - - vendor.id pci 0x9005 -&device.id pci 0x0030 -+device.name AIC-7890 - - vendor.id pci 0x9005 -&device.id pci 0x003f -+device.name AIC-7890 - - vendor.id pci 0x9005 -&device.id pci 0x0050 -+device.name AHA-3940U2x/395U2x - - vendor.id pci 0x9005 -&device.id pci 0x0050 -&subvendor.id pci 0x9005 -&subdevice.id pci 0xf500 -+subdevice.name AHA-3950U2B - - vendor.id pci 0x9005 -&device.id pci 0x0050 -&subvendor.id pci 0x9005 -&subdevice.id pci 0xffff -+subdevice.name AHA-3950U2B - - vendor.id pci 0x9005 -&device.id pci 0x0051 -+device.name AHA-3950U2D - - vendor.id pci 0x9005 -&device.id pci 0x0051 -&subvendor.id pci 0x9005 -&subdevice.id pci 0xb500 -+subdevice.name AHA-3950U2D - - vendor.id pci 0x9005 -&device.id pci 0x0053 -+device.name AIC-7896 SCSI Controller - - vendor.id pci 0x9005 -&device.id pci 0x0053 -&subvendor.id pci 0x9005 -&subdevice.id pci 0xffff -+subdevice.name AIC-7896 SCSI Controller mainboard implementation - - vendor.id pci 0x9005 -&device.id pci 0x005f -+device.name AIC-7896U2/7897U2 - - vendor.id pci 0x9005 -&device.id pci 0x0080 -+device.name AIC-7892A U160/m - - vendor.id pci 0x9005 -&device.id pci 0x0080 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xe2a0 -+subdevice.name Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter - - vendor.id pci 0x9005 -&device.id pci 0x0080 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x6220 -+subdevice.name AHA-29160C - - vendor.id pci 0x9005 -&device.id pci 0x0080 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x62a0 -+subdevice.name 29160N Ultra160 SCSI Controller - - vendor.id pci 0x9005 -&device.id pci 0x0080 -&subvendor.id pci 0x9005 -&subdevice.id pci 0xe220 -+subdevice.name 29160LP Low Profile Ultra160 SCSI Controller - - vendor.id pci 0x9005 -&device.id pci 0x0080 -&subvendor.id pci 0x9005 -&subdevice.id pci 0xe2a0 -+subdevice.name 29160 Ultra160 SCSI Controller - - vendor.id pci 0x9005 -&device.id pci 0x0081 -+device.name AIC-7892B U160/m - - vendor.id pci 0x9005 -&device.id pci 0x0081 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x62a1 -+subdevice.name 19160 Ultra160 SCSI Controller - - vendor.id pci 0x9005 -&device.id pci 0x0083 -+device.name AIC-7892D U160/m - - vendor.id pci 0x9005 -&device.id pci 0x008f -+device.name AIC-7892P U160/m - - vendor.id pci 0x9005 -&device.id pci 0x008f -&subvendor.id pci 0x1179 -&subdevice.id pci 0x0001 -+subdevice.name Magnia Z310 - - vendor.id pci 0x9005 -&device.id pci 0x008f -&subvendor.id pci 0x15d9 -&subdevice.id pci 0x9005 -+subdevice.name Onboard SCSI Host Adapter - - vendor.id pci 0x9005 -&device.id pci 0x00c0 -+device.name AHA-3960D / AIC-7899A U160/m - - vendor.id pci 0x9005 -&device.id pci 0x00c0 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0xf620 -+subdevice.name Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter - - vendor.id pci 0x9005 -&device.id pci 0x00c0 -&subvendor.id pci 0x9005 -&subdevice.id pci 0xf620 -+subdevice.name AHA-3960D U160/m - - vendor.id pci 0x9005 -&device.id pci 0x00c1 -+device.name AIC-7899B U160/m - - vendor.id pci 0x9005 -&device.id pci 0x00c3 -+device.name AIC-7899D U160/m - - vendor.id pci 0x9005 -&device.id pci 0x00c5 -+device.name RAID subsystem HBA - - vendor.id pci 0x9005 -&device.id pci 0x00c5 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00c5 -+subdevice.name PowerEdge 2400,2500,2550,4400 - - vendor.id pci 0x9005 -&device.id pci 0x00cf -+device.name AIC-7899P U160/m - - vendor.id pci 0x9005 -&device.id pci 0x00cf -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00ce -+subdevice.name PowerEdge 1400 - - vendor.id pci 0x9005 -&device.id pci 0x00cf -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00d1 -+subdevice.name PowerEdge 2550 - - vendor.id pci 0x9005 -&device.id pci 0x00cf -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00d9 -+subdevice.name PowerEdge 2500 - - vendor.id pci 0x9005 -&device.id pci 0x00cf -&subvendor.id pci 0x10f1 -&subdevice.id pci 0x2462 -+subdevice.name Thunder K7 S2462 - - vendor.id pci 0x9005 -&device.id pci 0x00cf -&subvendor.id pci 0x15d9 -&subdevice.id pci 0x9005 -+subdevice.name Onboard SCSI Host Adapter - - vendor.id pci 0x9005 -&device.id pci 0x00cf -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3411 -+subdevice.name SDS2 Mainboard - - vendor.id pci 0x9005 -&device.id pci 0x0250 -+device.name ServeRAID Controller - - vendor.id pci 0x9005 -&device.id pci 0x0250 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x0279 -+subdevice.name ServeRAID-xx - - vendor.id pci 0x9005 -&device.id pci 0x0250 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x028c -+subdevice.name ServeRAID-xx - - vendor.id pci 0x9005 -&device.id pci 0x0279 -+device.name ServeRAID 6M - - vendor.id pci 0x9005 -&device.id pci 0x0283 -+device.name AAC-RAID - - vendor.id pci 0x9005 -&device.id pci 0x0283 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0283 -+subdevice.name Catapult - - vendor.id pci 0x9005 -&device.id pci 0x0284 -+device.name AAC-RAID - - vendor.id pci 0x9005 -&device.id pci 0x0284 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0284 -+subdevice.name Tomcat - - vendor.id pci 0x9005 -&device.id pci 0x0285 -+device.name AAC-RAID - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x0295 -+subdevice.name SATA 6Ch (Bearcat) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0287 -+subdevice.name PowerEdge Expandable RAID Controller 320/DC - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0291 -+subdevice.name CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x17aa -&subdevice.id pci 0x0286 -+subdevice.name Legend S220 (Legend Crusader) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x17aa -&subdevice.id pci 0x0287 -+subdevice.name Legend S230 (Legend Vulcan) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0285 -+subdevice.name 2200S (Vulcan) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0286 -+subdevice.name 2120S (Crusader) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0287 -+subdevice.name 2200S (Vulcan-2m) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0288 -+subdevice.name 3230S (Harrier) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0289 -+subdevice.name 3240S (Tornado) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x028a -+subdevice.name ASR-2020S PCI-X ZCR (Skyhawk) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x028b -+subdevice.name ASR-2020S SO-DIMM PCI-X ZCR (Terminator) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0290 -+subdevice.name AAR-2410SA PCI SATA 4ch (Jaguar II) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0292 -+subdevice.name AAR-2810SA PCI SATA 8ch (Corsair-8) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0293 -+subdevice.name AAR-21610SA PCI SATA 16ch (Corsair-16) - - vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0294 -+subdevice.name ESD SO-DIMM PCI-X SATA ZCR (Prowler) - - vendor.id pci 0x9005 -&device.id pci 0x0286 -+device.name AAC-RAID (Rocket) - - vendor.id pci 0x9005 -&device.id pci 0x0286 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x028c -+subdevice.name ASR-2230S + ASR-2230SLP PCI-X (Lancer) - - vendor.id pci 0x9005 -&device.id pci 0x8000 -+device.name ASC-29320A U320 - - vendor.id pci 0x9005 -&device.id pci 0x800f -+device.name AIC-7901 U320 - - vendor.id pci 0x9005 -&device.id pci 0x8010 -+device.name ASC-39320 U320 - - vendor.id pci 0x9005 -&device.id pci 0x8011 -+device.name ASC-32320D U320 - - vendor.id pci 0x9005 -&device.id pci 0x8011 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x00ac -+subdevice.name ASC-39320D U320 - - vendor.id pci 0x9005 -&device.id pci 0x8011 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0041 -+subdevice.name ASC-39320D U320 - - vendor.id pci 0x9005 -&device.id pci 0x8012 -+device.name ASC-29320 U320 - - vendor.id pci 0x9005 -&device.id pci 0x8013 -+device.name ASC-29320B U320 - - vendor.id pci 0x9005 -&device.id pci 0x8014 -+device.name ASC-29320LP U320 - - vendor.id pci 0x9005 -&device.id pci 0x8015 -+device.name ASC-39320B U320 - - vendor.id pci 0x9005 -&device.id pci 0x8016 -+device.name ASC-39320A U320 - - vendor.id pci 0x9005 -&device.id pci 0x8017 -+device.name ASC-29320ALP U320 - - vendor.id pci 0x9005 -&device.id pci 0x801c -+device.name ASC-39320D U320 - - vendor.id pci 0x9005 -&device.id pci 0x801d -+device.name AIC-7902B U320 - - vendor.id pci 0x9005 -&device.id pci 0x801e -+device.name AIC-7901A U320 - - vendor.id pci 0x9005 -&device.id pci 0x801f -+device.name AIC-7902 U320 - - vendor.id pci 0x9005 -&device.id pci 0x8080 -+device.name ASC-29320A U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x808f -+device.name AIC-7901 U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x8090 -+device.name ASC-39320 U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x8091 -+device.name ASC-39320D U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x8092 -+device.name ASC-29320 U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x8093 -+device.name ASC-29320B U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x8094 -+device.name ASC-29320LP U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x8095 -+device.name ASC-39320(B) U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x8096 -+device.name ASC-39320A U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x8097 -+device.name ASC-29320ALP U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x809c -+device.name ASC-39320D(B) U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x809d -+device.name AIC-7902(B) U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x809e -+device.name AIC-7901A U320 w/HostRAID - - vendor.id pci 0x9005 -&device.id pci 0x809f -+device.name AIC-7902 U320 w/HostRAID - - vendor.id pci 0x907f -+vendor.name Atronics - - vendor.id pci 0x907f -&device.id pci 0x2015 -+device.name IDE-2015PL - - vendor.id pci 0x919a -+vendor.name Gigapixel Corp - - vendor.id pci 0x9412 -+vendor.name Holtek - - vendor.id pci 0x9412 -&device.id pci 0x6565 -+device.name 6565 - - vendor.id pci 0x9699 -+vendor.name Omni Media Technology Inc - - vendor.id pci 0x9699 -&device.id pci 0x6565 -+device.name 6565 - - vendor.id pci 0x9710 -+vendor.name NetMos Technology - - vendor.id pci 0x9710 -&device.id pci 0x7780 -+device.name USB IRDA-port - - vendor.id pci 0x9710 -&device.id pci 0x9815 -+device.name PCI 9815 Multi-I/O Controller - - vendor.id pci 0x9710 -&device.id pci 0x9815 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0020 -+subdevice.name 2P0S (2 port parallel adaptor) - - vendor.id pci 0x9710 -&device.id pci 0x9835 -+device.name PCI 9835 Multi-I/O Controller - - vendor.id pci 0x9710 -&device.id pci 0x9835 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0002 -+subdevice.name 2S (16C550 UART) - - vendor.id pci 0x9710 -&device.id pci 0x9835 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0012 -+subdevice.name 1P2S - - vendor.id pci 0x9710 -&device.id pci 0x9845 -+device.name PCI 9845 Multi-I/O Controller - - vendor.id pci 0x9710 -&device.id pci 0x9845 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0004 -+subdevice.name 0P4S (4 port 16550A serial card) - - vendor.id pci 0x9710 -&device.id pci 0x9845 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0006 -+subdevice.name 0P6S (6 port 16550a serial card) - - vendor.id pci 0x9710 -&device.id pci 0x9855 -+device.name PCI 9855 Multi-I/O Controller - - vendor.id pci 0x9710 -&device.id pci 0x9855 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0014 -+subdevice.name 1P4S - - vendor.id pci 0x9902 -+vendor.name Stargen Inc. - - vendor.id pci 0x9902 -&device.id pci 0x0001 -+device.name SG2010 PCI over Starfabric Bridge - - vendor.id pci 0x9902 -&device.id pci 0x0002 -+device.name SG2010 PCI to Starfabric Gateway - - vendor.id pci 0x9902 -&device.id pci 0x0003 -+device.name SG1010 Starfabric Switch and PCI Bridge - - vendor.id pci 0xa0a0 -+vendor.name AOPEN Inc. - - vendor.id pci 0xa0f1 -+vendor.name UNISYS Corporation - - vendor.id pci 0xa200 -+vendor.name NEC Corporation - - vendor.id pci 0xa259 -+vendor.name Hewlett Packard - - vendor.id pci 0xa25b -+vendor.name Hewlett Packard GmbH PL24-MKT - - vendor.id pci 0xa304 -+vendor.name Sony - - vendor.id pci 0xa727 -+vendor.name 3Com Corporation - - vendor.id pci 0xa727 -&device.id pci 0x0013 -+device.name 3CRPAG175 Wireless PC Card - - vendor.id pci 0xaa42 -+vendor.name Scitex Digital Video - - vendor.id pci 0xac1e -+vendor.name Digital Receiver Technology Inc - - vendor.id pci 0xac3d -+vendor.name Actuality Systems - - vendor.id pci 0xaecb -+vendor.name Adrienne Electronics Corporation - - vendor.id pci 0xb1b3 -+vendor.name Shiva Europe Limited - - vendor.id pci 0xbd11 -+vendor.name Pinnacle Systems, Inc. (Wrong ID) - - vendor.id pci 0xc001 -+vendor.name TSI Telsys - - vendor.id pci 0xc0a9 -+vendor.name Micron/Crucial Technology - - vendor.id pci 0xc0de -+vendor.name Motorola - - vendor.id pci 0xc0fe -+vendor.name Motion Engineering, Inc. - - vendor.id pci 0xca50 -+vendor.name Varian Australia Pty Ltd - - vendor.id pci 0xcafe -+vendor.name Chrysalis-ITS - - vendor.id pci 0xcccc -+vendor.name Catapult Communications - - vendor.id pci 0xcddd -+vendor.name Tyzx, Inc. - - vendor.id pci 0xcddd -&device.id pci 0x0101 -+device.name DeepSea 1 High Speed Stereo Vision Frame Grabber - - vendor.id pci 0xcddd -&device.id pci 0x0200 -+device.name DeepSea 2 High Speed Stereo Vision Frame Grabber - - vendor.id pci 0xd4d4 -+vendor.name Dy4 Systems Inc - - vendor.id pci 0xd4d4 -&device.id pci 0x0601 -+device.name PCI Mezzanine Card - - vendor.id pci 0xd531 -+vendor.name I+ME ACTIA GmbH - - vendor.id pci 0xd84d -+vendor.name Exsys - - vendor.id pci 0xdead -+vendor.name Indigita Corporation - - vendor.id pci 0xe000 -+vendor.name Winbond - - vendor.id pci 0xe000 -&device.id pci 0xe000 -+device.name W89C940 - - vendor.id pci 0xe159 -+vendor.name Tiger Jet Network Inc. - - vendor.id pci 0xe159 -&device.id pci 0x0001 -+device.name Tiger3XX Modem/ISDN interface - - vendor.id pci 0xe159 -&device.id pci 0x0001 -&subvendor.id pci 0x0059 -&subdevice.id pci 0x0001 -+subdevice.name 128k ISDN-S/T Adapter - - vendor.id pci 0xe159 -&device.id pci 0x0001 -&subvendor.id pci 0x0059 -&subdevice.id pci 0x0003 -+subdevice.name 128k ISDN-U Adapter - - vendor.id pci 0xe159 -&device.id pci 0x0002 -+device.name Tiger100APC ISDN chipset - - vendor.id pci 0xe4bf -+vendor.name EKF Elektronik GmbH - - vendor.id pci 0xe55e -+vendor.name Essence Technology, Inc. - - vendor.id pci 0xea01 -+vendor.name Eagle Technology - - vendor.id pci 0xea60 -+vendor.name RME - - vendor.id pci 0xea60 -&device.id pci 0x9896 -+device.name Digi32 - - vendor.id pci 0xea60 -&device.id pci 0x9897 -+device.name Digi32 Pro - - vendor.id pci 0xea60 -&device.id pci 0x9898 -+device.name Digi32/8 - - vendor.id pci 0xeabb -+vendor.name Aashima Technology B.V. - - vendor.id pci 0xeace -+vendor.name Endace Measurement Systems, Ltd - - vendor.id pci 0xeace -&device.id pci 0x3100 -+device.name DAG 3.10 OC-3/OC-12 - - vendor.id pci 0xeace -&device.id pci 0x3200 -+device.name DAG 3.2x OC-3/OC-12 - - vendor.id pci 0xeace -&device.id pci 0x320e -+device.name DAG 3.2E Fast Ethernet - - vendor.id pci 0xeace -&device.id pci 0x340e -+device.name DAG 3.4E Fast Ethernet - - vendor.id pci 0xeace -&device.id pci 0x341e -+device.name DAG 3.41E Fast Ethernet - - vendor.id pci 0xeace -&device.id pci 0x3500 -+device.name DAG 3.5 OC-3/OC-12 - - vendor.id pci 0xeace -&device.id pci 0x351c -+device.name DAG 3.5ECM Fast Ethernet - - vendor.id pci 0xeace -&device.id pci 0x4100 -+device.name DAG 4.10 OC-48 - - vendor.id pci 0xeace -&device.id pci 0x4110 -+device.name DAG 4.11 OC-48 - - vendor.id pci 0xeace -&device.id pci 0x4220 -+device.name DAG 4.2 OC-48 - - vendor.id pci 0xeace -&device.id pci 0x422e -+device.name DAG 4.2E Dual Gigabit Ethernet - - vendor.id pci 0xec80 -+vendor.name Belkin Corporation - - vendor.id pci 0xec80 -&device.id pci 0xec00 -+device.name F5D6000 - - vendor.id pci 0xecc0 -+vendor.name Echo Digital Audio Corporation - - vendor.id pci 0xecc0 -&device.id pci 0x0050 -+device.name Gina24_301 - - vendor.id pci 0xecc0 -&device.id pci 0x0051 -+device.name Gina24_361 - - vendor.id pci 0xecc0 -&device.id pci 0x0060 -+device.name Layla24 - - vendor.id pci 0xecc0 -&device.id pci 0x0070 -+device.name Mona_301_80 - - vendor.id pci 0xecc0 -&device.id pci 0x0071 -+device.name Mona_301_66 - - vendor.id pci 0xecc0 -&device.id pci 0x0072 -+device.name Mona_361 - - vendor.id pci 0xecc0 -&device.id pci 0x0080 -+device.name Mia - - vendor.id pci 0xedd8 -+vendor.name ARK Logic Inc - - vendor.id pci 0xedd8 -&device.id pci 0xa091 -+device.name 1000PV [Stingray] - - vendor.id pci 0xedd8 -&device.id pci 0xa099 -+device.name 2000PV [Stingray] - - vendor.id pci 0xedd8 -&device.id pci 0xa0a1 -+device.name 2000MT - - vendor.id pci 0xedd8 -&device.id pci 0xa0a9 -+device.name 2000MI - - vendor.id pci 0xf1d0 -+vendor.name AJA Video - - vendor.id pci 0xf1d0 -&device.id pci 0xcafe -+device.name KONA SD SMPTE 259M I/O - - vendor.id pci 0xf1d0 -&device.id pci 0xefac -+device.name KONA SD SMPTE 259M I/O - - vendor.id pci 0xf1d0 -&device.id pci 0xfacd -+device.name KONA HD SMPTE 292M I/O - - vendor.id pci 0xfa57 -+vendor.name Interagon AS - - vendor.id pci 0xfa57 -&device.id pci 0x0001 -+device.name PMC [Pattern Matching Chip] - - vendor.id pci 0xfebd -+vendor.name Ultraview Corp. - - vendor.id pci 0xfeda -+vendor.name Broadcom Inc (nee Epigram) - - vendor.id pci 0xfeda -&device.id pci 0xa0fa -+device.name BCM4210 iLine10 HomePNA 2.0 - - vendor.id pci 0xfeda -&device.id pci 0xa10e -+device.name BCM4230 iLine10 HomePNA 2.0 - - vendor.id pci 0xfede -+vendor.name Fedetec Inc. - - vendor.id pci 0xfede -&device.id pci 0x0003 -+device.name TABIC PCI v3 - - vendor.id pci 0xfffe -+vendor.name VMWare Inc - - vendor.id pci 0xfffe -&device.id pci 0x0405 -+device.name Virtual SVGA 4.0 - - vendor.id pci 0xfffe -&device.id pci 0x0710 -+device.name Virtual SVGA - - vendor.id pci 0xffff -+vendor.name Illegal Vendor ID - - baseclass.id 0x000 -+baseclass.name Unclassified device - - baseclass.id 0x000 -&subclass.id 0x00 -+subclass.name Non-VGA unclassified device - - baseclass.id 0x000 -&subclass.id 0x01 -+subclass.name VGA compatible unclassified device - - baseclass.id 0x001 -+baseclass.name Mass storage controller - - baseclass.id 0x001 -&subclass.id 0x00 -+subclass.name SCSI storage controller - - baseclass.id 0x001 -&subclass.id 0x01 -+subclass.name IDE interface - - baseclass.id 0x001 -&subclass.id 0x02 -+subclass.name Floppy disk controller - - baseclass.id 0x001 -&subclass.id 0x03 -+subclass.name IPI bus controller - - baseclass.id 0x001 -&subclass.id 0x04 -+subclass.name RAID bus controller - - baseclass.id 0x001 -&subclass.id 0x80 -+subclass.name Unknown mass storage controller - - baseclass.id 0x002 -+baseclass.name Network controller - - baseclass.id 0x002 -&subclass.id 0x00 -+subclass.name Ethernet controller - - baseclass.id 0x002 -&subclass.id 0x01 -+subclass.name Token ring network controller - - baseclass.id 0x002 -&subclass.id 0x02 -+subclass.name FDDI network controller - - baseclass.id 0x002 -&subclass.id 0x03 -+subclass.name ATM network controller - - baseclass.id 0x002 -&subclass.id 0x04 -+subclass.name ISDN controller - - baseclass.id 0x002 -&subclass.id 0x80 -+subclass.name Network controller - - baseclass.id 0x003 -+baseclass.name Display controller - - baseclass.id 0x003 -&subclass.id 0x00 -+subclass.name VGA compatible controller - - baseclass.id 0x003 -&subclass.id 0x00 -&progif.id 0x00 -+progif.name VGA - - baseclass.id 0x003 -&subclass.id 0x00 -&progif.id 0x01 -+progif.name 8514 - - baseclass.id 0x003 -&subclass.id 0x01 -+subclass.name XGA compatible controller - - baseclass.id 0x003 -&subclass.id 0x02 -+subclass.name 3D controller - - baseclass.id 0x003 -&subclass.id 0x80 -+subclass.name Display controller - - baseclass.id 0x004 -+baseclass.name Multimedia controller - - baseclass.id 0x004 -&subclass.id 0x00 -+subclass.name Multimedia video controller - - baseclass.id 0x004 -&subclass.id 0x01 -+subclass.name Multimedia audio controller - - baseclass.id 0x004 -&subclass.id 0x02 -+subclass.name Computer telephony device - - baseclass.id 0x004 -&subclass.id 0x80 -+subclass.name Multimedia controller - - baseclass.id 0x005 -+baseclass.name Memory controller - - baseclass.id 0x005 -&subclass.id 0x00 -+subclass.name RAM memory - - baseclass.id 0x005 -&subclass.id 0x01 -+subclass.name FLASH memory - - baseclass.id 0x005 -&subclass.id 0x80 -+subclass.name Memory controller - - baseclass.id 0x006 -+baseclass.name Bridge - - baseclass.id 0x006 -&subclass.id 0x00 -+subclass.name Host bridge - - baseclass.id 0x006 -&subclass.id 0x01 -+subclass.name ISA bridge - - baseclass.id 0x006 -&subclass.id 0x02 -+subclass.name EISA bridge - - baseclass.id 0x006 -&subclass.id 0x03 -+subclass.name MicroChannel bridge - - baseclass.id 0x006 -&subclass.id 0x04 -+subclass.name PCI bridge - - baseclass.id 0x006 -&subclass.id 0x04 -&progif.id 0x00 -+progif.name Normal decode - - baseclass.id 0x006 -&subclass.id 0x04 -&progif.id 0x01 -+progif.name Subtractive decode - - baseclass.id 0x006 -&subclass.id 0x05 -+subclass.name PCMCIA bridge - - baseclass.id 0x006 -&subclass.id 0x06 -+subclass.name NuBus bridge - - baseclass.id 0x006 -&subclass.id 0x07 -+subclass.name CardBus bridge - - baseclass.id 0x006 -&subclass.id 0x08 -+subclass.name RACEway bridge - - baseclass.id 0x006 -&subclass.id 0x08 -&progif.id 0x00 -+progif.name Transparent mode - - baseclass.id 0x006 -&subclass.id 0x08 -&progif.id 0x01 -+progif.name Endpoint mode - - baseclass.id 0x006 -&subclass.id 0x09 -+subclass.name Semi-transparent PCI-to-PCI bridge - - baseclass.id 0x006 -&subclass.id 0x09 -&progif.id 0x40 -+progif.name Primary bus towards host CPU - - baseclass.id 0x006 -&subclass.id 0x09 -&progif.id 0x80 -+progif.name Secondary bus towards host CPU - - baseclass.id 0x006 -&subclass.id 0x0a -+subclass.name InfiniBand to PCI host bridge - - baseclass.id 0x006 -&subclass.id 0x80 -+subclass.name Bridge - - baseclass.id 0x007 -+baseclass.name Communication controller - - baseclass.id 0x007 -&subclass.id 0x00 -+subclass.name Serial controller - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x00 -+progif.name 8250 - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x01 -+progif.name 16450 - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x02 -+progif.name 16550 - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x03 -+progif.name 16650 - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x04 -+progif.name 16750 - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x05 -+progif.name 16850 - - baseclass.id 0x007 -&subclass.id 0x00 -&progif.id 0x06 -+progif.name 16950 - - baseclass.id 0x007 -&subclass.id 0x01 -+subclass.name Parallel controller - - baseclass.id 0x007 -&subclass.id 0x01 -&progif.id 0x00 -+progif.name SPP - - baseclass.id 0x007 -&subclass.id 0x01 -&progif.id 0x01 -+progif.name BiDir - - baseclass.id 0x007 -&subclass.id 0x01 -&progif.id 0x02 -+progif.name ECP - - baseclass.id 0x007 -&subclass.id 0x01 -&progif.id 0x03 -+progif.name IEEE1284 - - baseclass.id 0x007 -&subclass.id 0x01 -&progif.id 0xfe -+progif.name IEEE1284 Target - - baseclass.id 0x007 -&subclass.id 0x02 -+subclass.name Multiport serial controller - - baseclass.id 0x007 -&subclass.id 0x03 -+subclass.name Modem - - baseclass.id 0x007 -&subclass.id 0x03 -&progif.id 0x00 -+progif.name Generic - - baseclass.id 0x007 -&subclass.id 0x03 -&progif.id 0x01 -+progif.name Hayes/16450 - - baseclass.id 0x007 -&subclass.id 0x03 -&progif.id 0x02 -+progif.name Hayes/16550 - - baseclass.id 0x007 -&subclass.id 0x03 -&progif.id 0x03 -+progif.name Hayes/16650 - - baseclass.id 0x007 -&subclass.id 0x03 -&progif.id 0x04 -+progif.name Hayes/16750 - - baseclass.id 0x007 -&subclass.id 0x80 -+subclass.name Communication controller - - baseclass.id 0x008 -+baseclass.name Generic system peripheral - - baseclass.id 0x008 -&subclass.id 0x00 -+subclass.name PIC - - baseclass.id 0x008 -&subclass.id 0x00 -&progif.id 0x00 -+progif.name 8259 - - baseclass.id 0x008 -&subclass.id 0x00 -&progif.id 0x01 -+progif.name ISA PIC - - baseclass.id 0x008 -&subclass.id 0x00 -&progif.id 0x02 -+progif.name EISA PIC - - baseclass.id 0x008 -&subclass.id 0x00 -&progif.id 0x10 -+progif.name IO-APIC - - baseclass.id 0x008 -&subclass.id 0x00 -&progif.id 0x20 -+progif.name IO(X)-APIC - - baseclass.id 0x008 -&subclass.id 0x01 -+subclass.name DMA controller - - baseclass.id 0x008 -&subclass.id 0x01 -&progif.id 0x00 -+progif.name 8237 - - baseclass.id 0x008 -&subclass.id 0x01 -&progif.id 0x01 -+progif.name ISA DMA - - baseclass.id 0x008 -&subclass.id 0x01 -&progif.id 0x02 -+progif.name EISA DMA - - baseclass.id 0x008 -&subclass.id 0x02 -+subclass.name Timer - - baseclass.id 0x008 -&subclass.id 0x02 -&progif.id 0x00 -+progif.name 8254 - - baseclass.id 0x008 -&subclass.id 0x02 -&progif.id 0x01 -+progif.name ISA Timer - - baseclass.id 0x008 -&subclass.id 0x02 -&progif.id 0x02 -+progif.name EISA Timers - - baseclass.id 0x008 -&subclass.id 0x03 -+subclass.name RTC - - baseclass.id 0x008 -&subclass.id 0x03 -&progif.id 0x00 -+progif.name Generic - - baseclass.id 0x008 -&subclass.id 0x03 -&progif.id 0x01 -+progif.name ISA RTC - - baseclass.id 0x008 -&subclass.id 0x04 -+subclass.name PCI Hot-plug controller - - baseclass.id 0x008 -&subclass.id 0x80 -+subclass.name System peripheral - - baseclass.id 0x009 -+baseclass.name Input device controller - - baseclass.id 0x009 -&subclass.id 0x00 -+subclass.name Keyboard controller - - baseclass.id 0x009 -&subclass.id 0x01 -+subclass.name Digitizer Pen - - baseclass.id 0x009 -&subclass.id 0x02 -+subclass.name Mouse controller - - baseclass.id 0x009 -&subclass.id 0x03 -+subclass.name Scanner controller - - baseclass.id 0x009 -&subclass.id 0x04 -+subclass.name Gameport controller - - baseclass.id 0x009 -&subclass.id 0x04 -&progif.id 0x00 -+progif.name Generic - - baseclass.id 0x009 -&subclass.id 0x04 -&progif.id 0x10 -+progif.name Extended - - baseclass.id 0x009 -&subclass.id 0x80 -+subclass.name Input device controller - - baseclass.id 0x00a -+baseclass.name Docking station - - baseclass.id 0x00a -&subclass.id 0x00 -+subclass.name Generic Docking Station - - baseclass.id 0x00a -&subclass.id 0x80 -+subclass.name Docking Station - - baseclass.id 0x00b -+baseclass.name Processor - - baseclass.id 0x00b -&subclass.id 0x00 -+subclass.name 386 - - baseclass.id 0x00b -&subclass.id 0x01 -+subclass.name 486 - - baseclass.id 0x00b -&subclass.id 0x02 -+subclass.name Pentium - - baseclass.id 0x00b -&subclass.id 0x10 -+subclass.name Alpha - - baseclass.id 0x00b -&subclass.id 0x20 -+subclass.name Power PC - - baseclass.id 0x00b -&subclass.id 0x30 -+subclass.name MIPS - - baseclass.id 0x00b -&subclass.id 0x40 -+subclass.name Co-processor - - baseclass.id 0x00c -+baseclass.name Serial bus controller - - baseclass.id 0x00c -&subclass.id 0x00 -+subclass.name FireWire (IEEE 1394) - - baseclass.id 0x00c -&subclass.id 0x00 -&progif.id 0x00 -+progif.name Generic - - baseclass.id 0x00c -&subclass.id 0x00 -&progif.id 0x10 -+progif.name OHCI - - baseclass.id 0x00c -&subclass.id 0x01 -+subclass.name ACCESS Bus - - baseclass.id 0x00c -&subclass.id 0x02 -+subclass.name SSA - - baseclass.id 0x00c -&subclass.id 0x03 -+subclass.name USB Controller - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0x00 -+progif.name UHCI - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0x10 -+progif.name OHCI - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0x20 -+progif.name EHCI - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0x80 -+progif.name Unspecified - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0xfe -+progif.name USB Device - - baseclass.id 0x00c -&subclass.id 0x04 -+subclass.name Fibre Channel - - baseclass.id 0x00c -&subclass.id 0x05 -+subclass.name SMBus - - baseclass.id 0x00c -&subclass.id 0x06 -+subclass.name InfiniBand - - baseclass.id 0x00d -+baseclass.name Wireless controller - - baseclass.id 0x00d -&subclass.id 0x00 -+subclass.name IRDA controller - - baseclass.id 0x00d -&subclass.id 0x01 -+subclass.name Consumer IR controller - - baseclass.id 0x00d -&subclass.id 0x10 -+subclass.name RF controller - - baseclass.id 0x00d -&subclass.id 0x80 -+subclass.name Wireless controller - - baseclass.id 0x00e -+baseclass.name Intelligent controller - - baseclass.id 0x00e -&subclass.id 0x00 -+subclass.name I2O - - baseclass.id 0x00f -+baseclass.name Satellite communications controller - - baseclass.id 0x00f -&subclass.id 0x00 -+subclass.name Satellite TV controller - - baseclass.id 0x00f -&subclass.id 0x01 -+subclass.name Satellite audio communication controller - - baseclass.id 0x00f -&subclass.id 0x03 -+subclass.name Satellite voice communication controller - - baseclass.id 0x00f -&subclass.id 0x04 -+subclass.name Satellite data communication controller - - baseclass.id 0x010 -+baseclass.name Encryption controller - - baseclass.id 0x010 -&subclass.id 0x00 -+subclass.name Network and computing encryption device - - baseclass.id 0x010 -&subclass.id 0x10 -+subclass.name Entertainment encryption device - - baseclass.id 0x010 -&subclass.id 0x80 -+subclass.name Encryption controller - - baseclass.id 0x011 -+baseclass.name Signal processing controller - - baseclass.id 0x011 -&subclass.id 0x00 -+subclass.name DPIO module - - baseclass.id 0x011 -&subclass.id 0x01 -+subclass.name Performance counters - - baseclass.id 0x011 -&subclass.id 0x10 -+subclass.name Communication synchronizer - - baseclass.id 0x011 -&subclass.id 0x80 -+subclass.name Signal processing controller - diff --git a/src/hwinfo/src/ids/src/pcmcia b/src/hwinfo/src/ids/src/pcmcia deleted file mode 100644 index 4cc45b697a..0000000000 --- a/src/hwinfo/src/ids/src/pcmcia +++ /dev/null @@ -1,346 +0,0 @@ - vendor.id pcmcia 0x0004 -&device.id pcmcia 0x0004 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe fmvj18x_cs - - vendor.id pcmcia 0x000b -&device.id pcmcia 0x7100 -|vendor.id pcmcia 0x0101 -&device.id pcmcia 0x0777 -|vendor.id pcmcia 0x0126 -&device.id pcmcia 0x8000 -|vendor.id pcmcia 0x0250 -&device.id pcmcia 0x0002 -|vendor.id pcmcia 0x0274 -&device.id pcmcia 0x1612 -|vendor.id pcmcia 0x02d2 -&device.id pcmcia 0x0001 -|vendor.id pcmcia 0x50c2 -&device.id pcmcia 0x0001 -|vendor.id pcmcia 0xc00f -&device.id pcmcia 0x0000 -+driver.module.modprobe hostap_cs - - vendor.id pcmcia 0x000b -&device.id pcmcia 0x7300 -|vendor.id pcmcia 0x0138 -&device.id pcmcia 0x0002 -|vendor.id pcmcia 0x0156 -&device.id pcmcia 0x0002 -|vendor.id pcmcia 0x0274 -&device.id pcmcia 0x1613 -|vendor.id pcmcia 0x028a -&device.id pcmcia 0x0002 -|vendor.id pcmcia 0xc250 -&device.id pcmcia 0x0002 -+driver.module.modprobe hostap_cs -+driver.module.modprobe orinoco_cs - - vendor.id pcmcia 0x0032 -&device.id pcmcia 0x0704 -|vendor.id pcmcia 0x00a4 -&device.id pcmcia 0x002d -|vendor.id pcmcia 0x2080 -&device.id pcmcia 0x0001 -+driver.module.modprobe ide-cs - - vendor.id pcmcia 0x0057 -&device.id pcmcia 0x1004 -|vendor.id pcmcia 0x0104 -&device.id pcmcia 0x000d -|vendor.id pcmcia 0x0104 -&device.id pcmcia 0x0075 -|vendor.id pcmcia 0x0104 -&device.id pcmcia 0x0145 -|vendor.id pcmcia 0x0149 -&device.id pcmcia 0x0230 -|vendor.id pcmcia 0x0149 -&device.id pcmcia 0x4530 -|vendor.id pcmcia 0x0186 -&device.id pcmcia 0x0110 -|vendor.id pcmcia 0x01bf -&device.id pcmcia 0x2216 -|vendor.id pcmcia 0x01bf -&device.id pcmcia 0x2328 -|vendor.id pcmcia 0x01bf -&device.id pcmcia 0x8041 -|vendor.id pcmcia 0x0213 -&device.id pcmcia 0x2452 -|vendor.id pcmcia 0x026f -&device.id pcmcia 0x0300 -|vendor.id pcmcia 0x026f -&device.id pcmcia 0x0307 -|vendor.id pcmcia 0x026f -&device.id pcmcia 0x030a -|vendor.id pcmcia 0x0274 -&device.id pcmcia 0x1103 -|vendor.id pcmcia 0x0274 -&device.id pcmcia 0x1121 -|vendor.id pcmcia 0xc00f -&device.id pcmcia 0x0002 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe pcnet_cs - - vendor.id pcmcia 0x0089 -&device.id pcmcia 0x0001 -|vendor.id pcmcia 0x01eb -&device.id pcmcia 0x080a -|vendor.id pcmcia 0x0261 -&device.id pcmcia 0x0002 -|vendor.id pcmcia 0x0268 -&device.id pcmcia 0x0001 -|vendor.id pcmcia 0x026f -&device.id pcmcia 0x0305 -|vendor.id pcmcia 0x028a -&device.id pcmcia 0x0673 -|vendor.id pcmcia 0x02aa -&device.id pcmcia 0x0002 -|vendor.id pcmcia 0x02ac -&device.id pcmcia 0x0002 -|vendor.id pcmcia 0x14ea -&device.id pcmcia 0xb001 -|vendor.id pcmcia 0x50c2 -&device.id pcmcia 0x7300 -|vendor.id pcmcia 0x9005 -&device.id pcmcia 0x0021 -+driver.module.modprobe orinoco_cs - -# tulip_cb - vendor.id pcmcia 0x0089 -&device.id pcmcia 0x0102 -|vendor.id pcmcia 0x0089 -&device.id pcmcia 0x0113 -|vendor.id pcmcia 0x00a4 -&device.id pcmcia 0x0113 -|vendor.id pcmcia 0x0105 -&device.id pcmcia 0x0500 -|vendor.id pcmcia 0x0149 -&device.id pcmcia 0x0231 -|vendor.id pcmcia 0x0149 -&device.id pcmcia 0xc2ab -|vendor.id pcmcia 0x0186 -&device.id pcmcia 0x0101 -|vendor.id pcmcia 0x01bf -&device.id pcmcia 0x2220 -|vendor.id pcmcia 0x01bf -&device.id pcmcia 0x2225 -|vendor.id pcmcia 0x01bf -&device.id pcmcia 0x2227 -|vendor.id pcmcia 0x01bf -&device.id pcmcia 0x8036 -|vendor.id pcmcia 0x01da -&device.id pcmcia 0x0081 -|vendor.id pcmcia 0x01da -&device.id pcmcia 0x0090 -|vendor.id pcmcia 0x021b -&device.id pcmcia 0x0510 -|vendor.id pcmcia 0x022d -&device.id pcmcia 0x2103 -|vendor.id pcmcia 0x02ac -&device.id pcmcia 0x1012 -|vendor.id pcmcia 0x13d1 -&device.id pcmcia 0xab02+0x0002 -|vendor.id pcmcia 0x50c7 -&device.id pcmcia 0xcafe -|vendor.id pcmcia 0x9513 -&device.id pcmcia 0x0081 -|vendor.id pcmcia 0xe815 -&device.id pcmcia 0x0081 -+baseclass.id 0x002 -+subclass.id 0x00 - -# eepro100_cb - vendor.id pcmcia 0x0089 -&device.id pcmcia 0x0103 -+baseclass.id 0x002 -+subclass.id 0x00 - - vendor.id pcmcia 0x0089 -&device.id pcmcia 0x0301 -|vendor.id pcmcia 0x0101 -&device.id pcmcia 0x0039 -|vendor.id pcmcia 0x0104 -&device.id pcmcia 0x0006 -|vendor.id pcmcia 0x0105 -&device.id pcmcia 0x410a -|vendor.id pcmcia 0x010b -&device.id pcmcia 0x0d50+0x0004 -|vendor.id pcmcia 0x010b -&device.id pcmcia 0xd180 -|vendor.id pcmcia 0x0137 -&device.id pcmcia 0x000e -|vendor.id pcmcia 0x0137 -&device.id pcmcia 0x001b -|vendor.id pcmcia 0x0137 -&device.id pcmcia 0x0025 -|vendor.id pcmcia 0x0137 -&device.id pcmcia 0x0045 -|vendor.id pcmcia 0x0137 -&device.id pcmcia 0x0052 -|vendor.id pcmcia 0x018a -&device.id pcmcia 0x0001 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe serial_cs - -# eepro100_cb - vendor.id pcmcia 0x0089 -&device.id pcmcia 0x1103 -+baseclass.id 0x002 -+subclass.id 0x00 - -# tulip_cb - vendor.id pcmcia 0x00a4 -&device.id pcmcia 0x0103 -+baseclass.id 0x002 -+subclass.id 0x00 - - vendor.id pcmcia 0x0101 -&device.id pcmcia 0x0035 -|vendor.id pcmcia 0x0101 -&device.id pcmcia 0x003d -|vendor.id pcmcia 0x0101 -&device.id pcmcia 0x0562 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe 3c589_cs - - vendor.id pcmcia 0x0101 -&device.id pcmcia 0x0556 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe 3c574_cs - - vendor.id pcmcia 0x0101 -&device.id pcmcia 0x0574 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe 3c574_cs - - vendor.id pcmcia 0x0101 -&device.id pcmcia 0x0589 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe 3c589_cs - - vendor.id pcmcia 0x0101 -&device.id pcmcia 0x0620 -|vendor.id pcmcia 0x0101 -&device.id pcmcia 0x0696 -|vendor.id pcmcia 0x01bf -&device.id pcmcia 0x3302 -|vendor.id pcmcia 0x01bf -&device.id pcmcia 0xb301 -|vendor.id pcmcia 0xd601 -&device.id pcmcia 0x0007 -+driver.module.modprobe atmel_cs - - vendor.id pcmcia 0x0104 -&device.id pcmcia 0x0070 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe serial_cs - - vendor.id pcmcia 0x0105 -&device.id pcmcia 0x0007 -|vendor.id pcmcia 0x015f -&device.id pcmcia 0x0005 -|vendor.id pcmcia 0x015f -&device.id pcmcia 0x0007 -|vendor.id pcmcia 0x015f -&device.id pcmcia 0x000a -+driver.module.modprobe airo_cs - - vendor.id pcmcia 0x0137 -&device.id pcmcia 0x0003 -+driver.module.modprobe parport_cs - -# epic_cb - vendor.id pcmcia 0x0140 -&device.id pcmcia 0x000f -|vendor.id pcmcia 0x0140 -&device.id pcmcia 0x0012 -|vendor.id pcmcia 0x016c -&device.id pcmcia 0x0021 -+baseclass.id 0x002 -+subclass.id 0x00 - -# epic_cb - vendor.id pcmcia 0x0140 -&device.id pcmcia 0x0011 -+baseclass.id 0x002 -+subclass.id 0x00 - - vendor.id pcmcia 0x0149 -&device.id pcmcia 0xc1ab -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe axnet_cs -+driver.module.modprobe pcnet_cs - - vendor.id pcmcia 0x016c -&device.id pcmcia 0x0020 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe smc91c92_cs - - vendor.id pcmcia 0x016c -&device.id pcmcia 0x0023 -|vendor.id pcmcia 0x0186 -&device.id pcmcia 0x0100 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe smc91c92_cs - - vendor.id pcmcia 0x0175 -&device.id pcmcia 0x0000 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe pcnet_cs - - vendor.id pcmcia 0x018a -&device.id pcmcia 0x0301 -|vendor.id pcmcia 0x026f -&device.id pcmcia 0x0301 -|vendor.id pcmcia 0x026f -&device.id pcmcia 0x0303 -|vendor.id pcmcia 0x026f -&device.id pcmcia 0x0309 -|vendor.id pcmcia 0x0274 -&device.id pcmcia 0x1106 -|vendor.id pcmcia 0x8a01 -&device.id pcmcia 0xc1ab -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe axnet_cs - - vendor.id pcmcia 0x01a6 -&device.id pcmcia 0x0000 -+driver.module.modprobe ray_cs - - vendor.id pcmcia 0x01bf -&device.id pcmcia 0x010a -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe xirc2ps_cs - - vendor.id pcmcia 0x020c -&device.id pcmcia 0x0103 -+driver.module.modprobe sedl_cs - - vendor.id pcmcia 0x021b -&device.id pcmcia 0x0202 -+baseclass.id 0x002 -+subclass.id 0x00 -+driver.module.modprobe pcnet_cs -+driver.module.modprobe axnet_cs - - vendor.id pcmcia 0xd601 -&device.id pcmcia 0x0002 -|vendor.id pcmcia 0xd601 -&device.id pcmcia 0x0005 -+driver.module.modprobe hostap_cs -+driver.module.modprobe orinoco_cs - diff --git a/src/hwinfo/src/ids/src/ppc b/src/hwinfo/src/ids/src/ppc deleted file mode 100644 index 1499c585f8..0000000000 --- a/src/hwinfo/src/ids/src/ppc +++ /dev/null @@ -1,23 +0,0 @@ -# modules.alias -# tg3 vs. bcm5700: #34486, #36992, #38647 - vendor.id pci 0x14e4 -&device.id pci 0x1644+0x0006 -|vendor.id pci 0x14e4 -&device.id pci 0x1653+0x0002 -|vendor.id pci 0x14e4 -&device.id pci 0x165d+0x0002 -|vendor.id pci 0x14e4 -&device.id pci 0x166e -|vendor.id pci 0x14e4 -&device.id pci 0x1696 -|vendor.id pci 0x14e4 -&device.id pci 0x169c -|vendor.id pci 0x14e4 -&device.id pci 0x16a6+0x0003 -|vendor.id pci 0x14e4 -&device.id pci 0x16c6+0x0002 -|vendor.id pci 0x14e4 -&device.id pci 0x170d+0x0002 -+driver.module.modprobe bcm5700 -+driver.module.modprobe tg3 - diff --git a/src/hwinfo/src/ids/src/s390 b/src/hwinfo/src/ids/src/s390 deleted file mode 100644 index dc9cf1c55b..0000000000 --- a/src/hwinfo/src/ids/src/s390 +++ /dev/null @@ -1,274 +0,0 @@ -# special s390 hardware - vendor.id special 0x6001 -+vendor.name IBM - - vendor.id special 0x6001 -&device.id special 0x1731 -&subdevice.id special 0x1732 -&detail.ccw.data.cu_model 1 -+device.name OSA Express Network card -+baseclass.id 2 -+subclass.id 0x86 -+driver.module.modprobe qeth - - vendor.id special 0x6001 -&device.id special 0x1731 -&subdevice.id special 0x1732 -&detail.ccw.data.cu_model 3 -+device.name zFCP controller -+baseclass.id 1 -+subclass.id 0 -+driver.module.modprobe zfcp - - vendor.id special 0x6001 -&device.id special 0x1731 -&subdevice.id special 0x1732 -&detail.ccw.data.cu_model 5 -+device.name Hipersocket -+baseclass.id 2 -+subclass.id 0x87 -+driver.module.modprobe qeth - - vendor.id special 0x6001 -&device.id special 0x2540 -&baseclass.id 0x10c -+device.name z/VM Virtual Card Reader - - vendor.id special 0x6001 -&device.id special 0x2540 -&baseclass.id 0x109 -+device.name z/VM Virtual Card Punch - - vendor.id special 0x6001 -&device.id special 0x2701 -+device.name 2701 Data Adapter - - vendor.id special 0x6001 -&device.id special 0x3890 -+device.name Document Processor - - vendor.id special 0x6001 -&device.id special 0x3250 -+device.name 3250 Display - - vendor.id special 0x6001 -&device.id special 0x3178 -|device.id special 0x3179 -|device.id special 0x3180 -|device.id special 0x3190 -|device.id special 0x3270 -|device.id special 0x3277 -|device.id special 0x3278 -|device.id special 0x3279 -|device.id special 0x3290 -+device.name 3270-Family Display -+baseclass.id 0x108 -+subclass.id 1 - - vendor.id special 0x6001 -&device.id special 0x3203 -|device.id special 0x3211 -|device.id special 0x3262 -|device.id special 0x4245 -|device.id special 0x4248 -|device.id special 0x6562 -+device.name Impact Printer -+baseclass.id 0x109 - - vendor.id special 0x6001 -&device.id special 0x3203 -&detail.ccw.data.cu_model 5 -+device.name z/VM Virtual Printer -+baseclass.id 0x109 - - vendor.id special 0x6001 -&device.id special 0x3215 -+device.name 3215 Display -+baseclass.id 0x108 -+subclass.id 1 - - vendor.id special 0x6001 -&device.id special 0x3990 -&subdevice.id special 0x3390 -|subdevice.id special 0x3380 -|subdevice.id special 0x3350 -|subdevice.id special 0x3330 -|subdevice.id special 0x3375 -|subdevice.id special 0x3851 -+device.name DASD -+baseclass.id 0x106 -+subclass.id 0 -+progif.id 1 -+driver.module.modprobe dasd_eckd_mod - - vendor.id special 0x6001 -&device.id special 0x2105 -&subdevice.id special 0x3390 -|subdevice.id special 0x3380 -+device.name DASD -+baseclass.id 0x106 -+subclass.id 0 -+progif.id 1 -+driver.module.modprobe dasd_eckd_mod - - vendor.id special 0x6001 -&device.id special 0x3880 -&subdevice.id special 0x3390 -+device.name DASD -+baseclass.id 0x106 -+subclass.id 0 -+progif.id 1 -+driver.module.modprobe dasd_eckd_mod - - vendor.id special 0x6001 -&device.id special 0x3880 -&subdevice.id special 0x3370 -+device.name DASD -+baseclass.id 0x106 -+subclass.id 0 -+progif.id 2 -+driver.module.modprobe dasd_fba_mod - - vendor.id special 0x6001 -&device.id special 0x9343 -&subdevice.id special 0x9345 -+device.name DASD -+baseclass.id 0x106 -+subclass.id 0 -+progif.id 1 -+driver.module.modprobe dasd_eckd_mod - - vendor.id special 0x6001 -&device.id special 0x6310 -&subdevice.id special 0x9336 -+device.name DASD -+baseclass.id 0x106 -+subclass.id 0 -+progif.id 2 -+driver.module.modprobe dasd_fba_mod - - vendor.id special 0x6001 -&device.id special 0x2107 -|device.id special 0x1750 -+device.name DASD -+baseclass.id 0x106 -+subclass.id 0 -+progif.id 1 -+driver.module.modprobe dasd_eckd_mod - - vendor.id special 0x6001 -&device.id special 0x3705 -&device.id special 0x3725 -&device.id special 0x3745 -+device.name 37x5 Line Adapter - - vendor.id special 0x6001 -&device.id special 0x3286 -&device.id special 0x3287 -&device.id special 0x3288 -&device.id special 0x3289 -+device.name 328x Display Printer - - vendor.id special 0x6001 -&device.id special 0x3420 -+device.name 3420 Tape Drive -+baseclass.id 0x106 -+subclass.id 1 -+driver.module.modprobe tape_34xx - - vendor.id special 0x6001 -&device.id special 0x3422 -+device.name 3422 Tape Drive -+baseclass.id 0x106 -+subclass.id 1 -+driver.module.modprobe tape_34xx - - vendor.id special 0x6001 -&device.id special 0x3480 -+device.name 3480 Tape Drive -+baseclass.id 0x106 -+subclass.id 1 -+driver.module.modprobe tape_34xx - - vendor.id special 0x6001 -&device.id special 0x3490 -+device.name 3490 Tape Drive -+baseclass.id 0x106 -+subclass.id 1 -+driver.module.modprobe tape_34xx - - vendor.id special 0x6001 -&device.id special 0x3505 -+device.name 3505 Card Reader - - vendor.id special 0x6001 -&device.id special 0x3525 -+device.name 3525 Card Punch - - vendor.id special 0x6001 -&device.id special 0x3800 -+device.name 3800 Printer -+baseclass.id 0x109 - - vendor.id special 0x6001 -&device.id special 0x3820 -+device.name 3820 Printer -+baseclass.id 0x109 - - vendor.id special 0x6001 -&device.id special 0x5080 -+device.name 5080 Graphics Display - - vendor.id special 0x6001 -&device.id special 0x9032 -|device.id special 0x9033 -+device.name 903x ES Connection Director - - vendor.id special 0x6001 -&device.id special 0x0001 -+device.name Token ring card - - vendor.id special 0x6001 -&device.id special 0x3088 -&detail.ccw.data.cu_model 8 -+device.name parallel CTC Adapter -+baseclass.id 2 -+subclass.id 0x88 -+driver.module.modprobe ctc - - vendor.id special 0x6001 -&device.id special 0x3088 -&detail.ccw.data.cu_model 0x1f -+device.name ESCON Adapter -+baseclass.id 2 -+subclass.id 0x8f -+driver.module.modprobe ctc - - vendor.id special 0x6001 -&device.id special 0x3088 -&detail.ccw.data.cu_model 0x1e -+device.name FICON Adapter -+baseclass.id 2 -+subclass.id 0x8e - - vendor.id special 0x6001 -&device.id special 0x3088 -&detail.ccw.data.cu_model 1 -+device.name P/390 -+baseclass.id 2 -+subclass.id 0x89 - - vendor.id special 0x6001 -&device.id special 0x3088 -&detail.ccw.data.cu_model 0x60 -+device.name OSA2 Adapter -+baseclass.id 2 -+subclass.id 0x89 -+driver.module.modprobe lcs - - vendor.id special 0x6001 -&device.id special 0x0005 -+device.name IUCV -+baseclass.id 2 -+subclass.id 0x90 -+driver.module.modprobe netiucv diff --git a/src/hwinfo/src/ids/src/scanner b/src/hwinfo/src/ids/src/scanner deleted file mode 100644 index 38fc5df93e..0000000000 --- a/src/hwinfo/src/ids/src/scanner +++ /dev/null @@ -1,775 +0,0 @@ -# usb scanner - - vendor.id usb 0x03f0 -+vendor.name HP - - vendor.id usb 0x03f0 -&device.id usb 0x0101 -+device.name 4100C - - vendor.id usb 0x03f0 -&device.id usb 0x0101+0x0002 -|vendor.id usb 0x03f0 -&device.id usb 0x0105 -|vendor.id usb 0x03f0 -&device.id usb 0x0201 -|vendor.id usb 0x03f0 -&device.id usb 0x0205 -|vendor.id usb 0x03f0 -&device.id usb 0x0305 -|vendor.id usb 0x03f0 -&device.id usb 0x0401 -|vendor.id usb 0x03f0 -&device.id usb 0x0405 -|vendor.id usb 0x03f0 -&device.id usb 0x0505 -|vendor.id usb 0x03f0 -&device.id usb 0x0601 -|vendor.id usb 0x03f0 -&device.id usb 0x0605 -|vendor.id usb 0x03f0 -&device.id usb 0x0701 -|vendor.id usb 0x03f0 -&device.id usb 0x0705 -|vendor.id usb 0x03f0 -&device.id usb 0x0801 -|vendor.id usb 0x03f0 -&device.id usb 0x0805 -|vendor.id usb 0x03f0 -&device.id usb 0x0901 -|vendor.id usb 0x03f0 -&device.id usb 0x0a01 -|vendor.id usb 0x03f0 -&device.id usb 0x1005 -|vendor.id usb 0x03f0 -&device.id usb 0x1105 -|vendor.id usb 0x03f0 -&device.id usb 0x1205 -|vendor.id usb 0x03f0 -&device.id usb 0x1305 -|vendor.id usb 0x03f0 -&device.id usb 0x1411 -|vendor.id usb 0x03f0 -&device.id usb 0x2005 -|vendor.id usb 0x03f0 -&device.id usb 0x2205 -|vendor.id usb 0x03f0 -&device.id usb 0x2f11 -|vendor.id usb 0x0400 -&device.id usb 0x1000+0x0002 -|vendor.id usb 0x043d -&device.id usb 0x002d -|vendor.id usb 0x043d -&device.id usb 0x003d -|vendor.id usb 0x0458 -&device.id usb 0x2001 -|vendor.id usb 0x0458 -&device.id usb 0x2007+0x0003 -|vendor.id usb 0x0458 -&device.id usb 0x2011 -|vendor.id usb 0x0458 -&device.id usb 0x2013 -|vendor.id usb 0x0458 -&device.id usb 0x2015+0x0002 -|vendor.id usb 0x0458 -&device.id usb 0x2018 -|vendor.id usb 0x0458 -&device.id usb 0x201b -|vendor.id usb 0x0461 -&device.id usb 0x0300+0x0004 -|vendor.id usb 0x0461 -&device.id usb 0x0340+0x0002 -|vendor.id usb 0x0461 -&device.id usb 0x0345+0x0003 -|vendor.id usb 0x0461 -&device.id usb 0x0360+0x0002 -|vendor.id usb 0x0461 -&device.id usb 0x0364 -|vendor.id usb 0x0461 -&device.id usb 0x0371 -|vendor.id usb 0x0461 -&device.id usb 0x0377 -|vendor.id usb 0x0461 -&device.id usb 0x0380+0x0004 -|vendor.id usb 0x0475 -&device.id usb 0x0210 -|vendor.id usb 0x049f -&device.id usb 0x001a -|vendor.id usb 0x049f -&device.id usb 0x0021 -|vendor.id usb 0x04a5 -&device.id usb 0x1a20 -|vendor.id usb 0x04a5 -&device.id usb 0x1a2a -|vendor.id usb 0x04a5 -&device.id usb 0x2022 -|vendor.id usb 0x04a5 -&device.id usb 0x2040 -|vendor.id usb 0x04a5 -&device.id usb 0x2060 -|vendor.id usb 0x04a5 -&device.id usb 0x207e -|vendor.id usb 0x04a5 -&device.id usb 0x20b0 -|vendor.id usb 0x04a5 -&device.id usb 0x20be -|vendor.id usb 0x04a5 -&device.id usb 0x20c0 -|vendor.id usb 0x04a5 -&device.id usb 0x20de -|vendor.id usb 0x04a5 -&device.id usb 0x20fc -|vendor.id usb 0x04a5 -&device.id usb 0x20fe -|vendor.id usb 0x04a7 -&device.id usb 0x0211 -|vendor.id usb 0x04a7 -&device.id usb 0x0221 -|vendor.id usb 0x04a7 -&device.id usb 0x0224 -|vendor.id usb 0x04a7 -&device.id usb 0x0226 -|vendor.id usb 0x04a7 -&device.id usb 0x0229 -|vendor.id usb 0x04a7 -&device.id usb 0x022c -|vendor.id usb 0x04a7 -&device.id usb 0x0231 -|vendor.id usb 0x04a7 -&device.id usb 0x0311 -|vendor.id usb 0x04a7 -&device.id usb 0x0321 -|vendor.id usb 0x04a7 -&device.id usb 0x0331 -|vendor.id usb 0x04a9 -&device.id usb 0x2201+0x0002 -|vendor.id usb 0x04a9 -&device.id usb 0x2204+0x0005 -|vendor.id usb 0x04a9 -&device.id usb 0x220a+0x0007 -|vendor.id usb 0x04a9 -&device.id usb 0x2212+0x0002 -|vendor.id usb 0x04a9 -&device.id usb 0x2215 -|vendor.id usb 0x04a9 -&device.id usb 0x3042 -|vendor.id usb 0x04b0 -&device.id usb 0x4000 -|vendor.id usb 0x04b8 -&device.id usb 0x0101+0x0007 -|vendor.id usb 0x04b8 -&device.id usb 0x0109+0x0004 -|vendor.id usb 0x04b8 -&device.id usb 0x010e+0x0003 -|vendor.id usb 0x04b8 -&device.id usb 0x0112 -|vendor.id usb 0x04b8 -&device.id usb 0x0114 -|vendor.id usb 0x04b8 -&device.id usb 0x011b+0x0005 -|vendor.id usb 0x04b8 -&device.id usb 0x0801+0x0002 -|vendor.id usb 0x04c5 -&device.id usb 0x1029 -|vendor.id usb 0x04c5 -&device.id usb 0x1041+0x0002 -|vendor.id usb 0x04f9 -&device.id usb 0x010f -|vendor.id usb 0x04f9 -&device.id usb 0x0111 -|vendor.id usb 0x055f -&device.id usb 0x0001+0x0003 -|vendor.id usb 0x055f -&device.id usb 0x0006+0x0003 -|vendor.id usb 0x055f -&device.id usb 0x0010 -|vendor.id usb 0x055f -&device.id usb 0x0210 -|vendor.id usb 0x055f -&device.id usb 0x0218+0x0002 -|vendor.id usb 0x055f -&device.id usb 0x021c+0x0003 -|vendor.id usb 0x055f -&device.id usb 0x0400+0x0002 -|vendor.id usb 0x055f -&device.id usb 0x0409 -|vendor.id usb 0x055f -&device.id usb 0x0873 -|vendor.id usb 0x055f -&device.id usb 0x1000 -|vendor.id usb 0x05cb -&device.id usb 0x1483 -|vendor.id usb 0x05d8 -&device.id usb 0x4001+0x0004 -|vendor.id usb 0x05d8 -&device.id usb 0x4006 -|vendor.id usb 0x05d8 -&device.id usb 0x4009 -|vendor.id usb 0x05da -&device.id usb 0x0099+0x0002 -|vendor.id usb 0x05da -&device.id usb 0x00b6 -|vendor.id usb 0x05da -&device.id usb 0x20a7 -|vendor.id usb 0x05da -&device.id usb 0x20c9 -|vendor.id usb 0x05da -&device.id usb 0x30ce+0x0002 -|vendor.id usb 0x05da -&device.id usb 0x30d4 -|vendor.id usb 0x05da -&device.id usb 0x30d8 -|vendor.id usb 0x05da -&device.id usb 0x40b3 -|vendor.id usb 0x05da -&device.id usb 0x40b8 -|vendor.id usb 0x05da -&device.id usb 0x40ca+0x0002 -|vendor.id usb 0x05da -&device.id usb 0x40dd -|vendor.id usb 0x05da -&device.id usb 0x40ff -|vendor.id usb 0x05e3 -&device.id usb 0x0120 -|vendor.id usb 0x0638 -&device.id usb 0x0268 -|vendor.id usb 0x0638 -&device.id usb 0x026a -|vendor.id usb 0x0638 -&device.id usb 0x0a10 -|vendor.id usb 0x0638 -&device.id usb 0x0a13 -|vendor.id usb 0x0638 -&device.id usb 0x0a16 -|vendor.id usb 0x0638 -&device.id usb 0x0a18 -|vendor.id usb 0x0638 -&device.id usb 0x0a20 -|vendor.id usb 0x0638 -&device.id usb 0x0a23+0x0002 -|vendor.id usb 0x0681 -&device.id usb 0x0005 -|vendor.id usb 0x0681 -&device.id usb 0x0010 -|vendor.id usb 0x0686 -&device.id usb 0x4004 -|vendor.id usb 0x0686 -&device.id usb 0x400d -|vendor.id usb 0x06bd -&device.id usb 0x0001+0x0002 -|vendor.id usb 0x06bd -&device.id usb 0x0100 -|vendor.id usb 0x06bd -&device.id usb 0x2061 -|vendor.id usb 0x06bd -&device.id usb 0x208d -|vendor.id usb 0x06bd -&device.id usb 0x208f -|vendor.id usb 0x06bd -&device.id usb 0x2091 -|vendor.id usb 0x06bd -&device.id usb 0x2093 -|vendor.id usb 0x06bd -&device.id usb 0x2095 -|vendor.id usb 0x06bd -&device.id usb 0x2097 -|vendor.id usb 0x06bd -&device.id usb 0x20fd -|vendor.id usb 0x06bd -&device.id usb 0x20ff -|vendor.id usb 0x06dc -&device.id usb 0x0014 -|vendor.id usb 0x07b3 -&device.id usb 0x0001 -|vendor.id usb 0x07b3 -&device.id usb 0x0005 -|vendor.id usb 0x07b3 -&device.id usb 0x0007 -|vendor.id usb 0x07b3 -&device.id usb 0x000f+0x0009 -|vendor.id usb 0x07b3 -&device.id usb 0x0400+0x0002 -|vendor.id usb 0x07b3 -&device.id usb 0x0403 -|vendor.id usb 0x07b3 -&device.id usb 0x0413 -|vendor.id usb 0x0a82 -&device.id usb 0x4600 -|vendor.id usb 0x1606 -&device.id usb 0x0010 -|vendor.id usb 0x1606 -&device.id usb 0x0030 -|vendor.id usb 0x1606 -&device.id usb 0x0060 -|vendor.id usb 0x1606 -&device.id usb 0x0070 -|vendor.id usb 0x1606 -&device.id usb 0x0130 -|vendor.id usb 0x1606 -&device.id usb 0x0160 -|vendor.id usb 0x1606 -&device.id usb 0x0230 -+baseclass.id 0x10c -+subclass.id 0x00 - - vendor.id usb 0x03f0 -&device.id usb 0x0102 -+device.name PhotoSmart S20 - - vendor.id usb 0x03f0 -&device.id usb 0x0105 -+device.name 4200C - - vendor.id usb 0x03f0 -&device.id usb 0x0201 -+device.name 6200C - - vendor.id usb 0x03f0 -&device.id usb 0x0205 -+device.name 3300C - - vendor.id usb 0x03f0 -&device.id usb 0x0305 -+device.name 4300C - - vendor.id usb 0x03f0 -&device.id usb 0x0401 -+device.name 5200C - - vendor.id usb 0x03f0 -&device.id usb 0x0405 -+device.name 3400C - - vendor.id usb 0x03f0 -&device.id usb 0x0601 -+device.name 6300C - - vendor.id usb 0x03f0 -&device.id usb 0x0605 -+device.name 2200C - - vendor.id usb 0x0400 -+vendor.name National Semiconductor - - vendor.id usb 0x0400 -&device.id usb 0x1000 -+device.name BearPaw 1200 - - vendor.id usb 0x0400 -&device.id usb 0x1001 -+device.name BearPaw 2400 - - vendor.id usb 0x0458 -+vendor.name KYE Systems - - vendor.id usb 0x0458 -&device.id usb 0x2001 -+device.name Genius ColorPage-Vivid Pro - - vendor.id usb 0x0458 -&device.id usb 0x2007 -+device.name ColorPage HR6 V2 - - vendor.id usb 0x0458 -&device.id usb 0x2008 -+device.name Unknown 2008 - - vendor.id usb 0x0458 -&device.id usb 0x2009 -+device.name Unknown 2009 - - vendor.id usb 0x0458 -&device.id usb 0x2013 -+device.name Unknown 2013 - - vendor.id usb 0x0458 -&device.id usb 0x2015 -+device.name Unknown 2015 - - vendor.id usb 0x0458 -&device.id usb 0x2016 -+device.name Unknown 2016 - - vendor.id usb 0x0461 -+vendor.name Colorado - - vendor.id usb 0x0461 -&device.id usb 0x0034 -+baseclass.id 0x10c -+subclass.id 0x00 -+device.name USB 9600 - - vendor.id usb 0x0461 -&device.id usb 0x0300 -|vendor.id usb 0x0461 -&device.id usb 0x0302 -+device.name G2-300 - - vendor.id usb 0x0461 -&device.id usb 0x0301 -|vendor.id usb 0x0461 -&device.id usb 0x0303 -+device.name G2E-300 - - vendor.id usb 0x0461 -&device.id usb 0x0341 -+device.name 600U - - vendor.id usb 0x0461 -&device.id usb 0x0346 -+device.name 6136u - - vendor.id usb 0x0461 -&device.id usb 0x0361 -|vendor.id usb 0x0638 -&device.id usb 0x0268 -+device.name 1200U - - vendor.id usb 0x0461 -&device.id usb 0x0380 -|vendor.id usb 0x0461 -&device.id usb 0x0382 -+device.name G2-600 - - vendor.id usb 0x0461 -&device.id usb 0x0381 -+device.name ReadyScan 636i - - vendor.id usb 0x0461 -&device.id usb 0x0383 -+device.name G2E-600 - - vendor.id usb 0x04a5 -+vendor.name Acer - - vendor.id usb 0x04a5 -&device.id usb 0x1a20 -+device.name Prisa Acerscan 310U - - vendor.id usb 0x04a5 -&device.id usb 0x1a2a -|vendor.id usb 0x04a5 -&device.id usb 0x2040 -|vendor.id usb 0x04a5 -&device.id usb 0x2060 -+device.name Prisa Acerscan 620U - - vendor.id usb 0x04a5 -&device.id usb 0x2022 -+device.name Vuego Scan Brisa 340U - - vendor.id usb 0x04a5 -&device.id usb 0x207e -+device.name Prisa Acerscan 640BU - - vendor.id usb 0x04a5 -&device.id usb 0x20b0 -+device.name S2W 3300U/4300U - - vendor.id usb 0x04a5 -&device.id usb 0x20be -+device.name Prisa Acerscan 640BT - - vendor.id usb 0x04a5 -&device.id usb 0x20c0 -+device.name Prisa Acerscan 1240UT - - vendor.id usb 0x04a5 -&device.id usb 0x20de -+device.name S2W 3300U - - vendor.id usb 0x04a7 -+vendor.name Visioneer - - vendor.id usb 0x04a7 -&device.id usb 0x0211 -+device.name OneTouch 7600 USB - - vendor.id usb 0x04a7 -&device.id usb 0x0221 -+device.name OneTouch 5300 USB - - vendor.id usb 0x04a7 -&device.id usb 0x0231 -+device.name 6100 USB - - vendor.id usb 0x04a7 -&device.id usb 0x0311 -+device.name 6200 EPP/USB - - vendor.id usb 0x04a7 -&device.id usb 0x0321 -+device.name OneTouch 8100 EPP/USB - - vendor.id usb 0x04a7 -&device.id usb 0x0331 -+device.name OneTouch 8600 EPP/USB - - vendor.id usb 0x04a9 -+vendor.name Canon - - vendor.id usb 0x04a9 -&device.id usb 0x2202 -+device.name FB620U - - vendor.id usb 0x04a9 -&device.id usb 0x2207 -+device.name 1220U - - vendor.id usb 0x04a9 -&device.id usb 0x220b -+device.name D646U - - vendor.id usb 0x04b0 -+vendor.name Nikon - - vendor.id usb 0x04b0 -&device.id usb 0x4000 -+device.name Coolscan IV - - vendor.id usb 0x04b8 -+vendor.name Epson - - vendor.id usb 0x04b8 -&device.id usb 0x0101 -+device.name Perfection 636U - - vendor.id usb 0x04b8 -&device.id usb 0x0103 -+device.name Perfection 610 - - vendor.id usb 0x04b8 -&device.id usb 0x0104 -+device.name Perfection 1200U - - vendor.id usb 0x04b8 -&device.id usb 0x0106 -+device.name Stylus Scan 2500 - - vendor.id usb 0x04b8 -&device.id usb 0x0107 -+device.name Expression 1600 - - vendor.id usb 0x04b8 -&device.id usb 0x010a -+device.name Perfection 1640SU - - vendor.id usb 0x04b8 -&device.id usb 0x010b -+device.name Perfection 1240U - - vendor.id usb 0x04b8 -&device.id usb 0x010c -+device.name Perfection 640 - - vendor.id usb 0x04b8 -&device.id usb 0x010e -+device.name Expression 1680 - - vendor.id usb 0x04b8 -&device.id usb 0x0110 -+device.name Perfection 1650 - - vendor.id usb 0x04b8 -&device.id usb 0x0112 -+device.name Perfection 2450 - - vendor.id usb 0x04b8 -&device.id usb 0x011f -+device.name Perfection 1670 - - vendor.id usb 0x04ce -+vendor.name ScanLogic - - vendor.id usb 0x04ce -&device.id usb 0x0300 -|vendor.id usb 0x05da -&device.id usb 0x0094 -|vendor.id usb 0x05da -&device.id usb 0x00a0 -+baseclass.id 0x10c -+subclass.id 0x00 -+device.name Phantom 336CX - - vendor.id usb 0x055f -+vendor.name Mustek - - vendor.id usb 0x055f -&device.id usb 0x0001 -+device.name 1200 CU - - vendor.id usb 0x055f -&device.id usb 0x0002 -+device.name 600 CU - - vendor.id usb 0x055f -&device.id usb 0x0003 -+device.name 1200 USB - - vendor.id usb 0x055f -&device.id usb 0x0006 -+device.name 1200 UB - - vendor.id usb 0x055f -&device.id usb 0x0008 -+device.name 1200 CU Plus - - vendor.id usb 0x055f -&device.id usb 0x0873 -+device.name 600 USB - - vendor.id usb 0x05d8 -+vendor.name Lifetec - - vendor.id usb 0x05d8 -&device.id usb 0x4002 -+device.name LT9385 - - vendor.id usb 0x05da -+vendor.name Microtek - - vendor.id usb 0x05da -&device.id usb 0x0099 -+device.name ScanMaker X6 - - vendor.id usb 0x05da -&device.id usb 0x009a -+device.name Phantom C6 - - vendor.id usb 0x05da -&device.id usb 0x00a3 -|vendor.id usb 0x05da -&device.id usb 0x80a3 -+baseclass.id 0x10c -+subclass.id 0x00 -+device.name ScanMaker V6USL - - vendor.id usb 0x05da -&device.id usb 0x80ac -+baseclass.id 0x10c -+subclass.id 0x00 -+device.name ScanMaker V6UL - - vendor.id usb 0x0638 -+vendor.name iVina - - vendor.id usb 0x06bd -+vendor.name Agfa - - vendor.id usb 0x06bd -&device.id usb 0x0001 -+device.name SnapScan 1212U - - vendor.id usb 0x06bd -&device.id usb 0x0002 -+device.name SnapScan 1236U - - vendor.id usb 0x06bd -&device.id usb 0x0100 -+device.name SnapScan Touch - - vendor.id usb 0x06bd -&device.id usb 0x2061 -+device.name SnapScan 1212U? - - vendor.id usb 0x06bd -&device.id usb 0x208d -+device.name SnapScan e40 - - vendor.id usb 0x06bd -&device.id usb 0x2091 -+device.name SnapScan e20 - - vendor.id usb 0x06bd -&device.id usb 0x2095 -+device.name SnapScan e25 - - vendor.id usb 0x06bd -&device.id usb 0x2097 -+device.name SnapScan e26 - - vendor.id usb 0x07b3 -+vendor.name Plustek - - vendor.id usb 0x07b3 -&device.id usb 0x0011 -+device.name OpticPro UT24 - - vendor.id usb 0x07b3 -&device.id usb 0x0017 -+device.name OpticPro UT12 - - vendor.id usb 0x0ff5 -+vendor.name Mustek? - - vendor.id usb 0x0ff5 -&device.id usb 0x0010 -+baseclass.id 0x10c -+subclass.id 0x00 -+device.name BearPaw 1200F - - vendor.id usb 0x1606 -+vendor.name UMAX - - vendor.id usb 0x1606 -&device.id usb 0x0002 -+baseclass.id 0x10c -+subclass.id 0x00 -+device.name Astra 1236U - - vendor.id usb 0x1606 -&device.id usb 0x0010 -+device.name Astra 1220U - - vendor.id usb 0x1606 -&device.id usb 0x0030 -+device.name Astra 2000U - - vendor.id usb 0x1606 -&device.id usb 0x0130 -+device.name Astra 2100U - - vendor.id usb 0x1606 -&device.id usb 0x0230 -+device.name Astra 2200U - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# hp officejet - vendor.id usb 0x03f0 -&device.id usb 0x2811 -|vendor.id usb 0x03f0 -&device.id usb 0x2911 -|vendor.id usb 0x03f0 -&device.id usb 0x2a11 -|vendor.id usb 0x03f0 -&device.id usb 0x2d11 -+requires hp-officeJet - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# 45074 - vendor.id usb 0x04b8 -&device.id usb 0x0805 -+baseclass.id 0x10c -+subclass.id 0x00 -+device.name Stylus CX6400 - - vendor.id usb 0x04b8 -&device.id usb 0x0806 -+baseclass.id 0x10c -+subclass.id 0x00 -+device.name Stylus Photo RX600 - - vendor.id usb 0x04b8 -&device.id usb 0x0807 -+baseclass.id 0x10c -+subclass.id 0x00 -+device.name Stylus Photo RX500 - - vendor.id usb 0x04b8 -&device.id usb 0x0808 -+baseclass.id 0x10c -+subclass.id 0x00 -+device.name Stylus CX5400 - diff --git a/src/hwinfo/src/ids/src/sound b/src/hwinfo/src/ids/src/sound deleted file mode 100644 index f28c396ade..0000000000 --- a/src/hwinfo/src/ids/src/sound +++ /dev/null @@ -1,389 +0,0 @@ -# sound cards - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# module info from kernel/sound/*.ko - - vendor.id ADS -&device.id eisa 0x7150 -|vendor.id ADS -&device.id eisa 0x7181 -|vendor.id AZT -&device.id eisa 0x1022 -|vendor.id LWC -&device.id eisa 0x1061 -|vendor.id MDK -&device.id eisa 0x1605 -|vendor.id SMM -&device.id eisa 0x7180 -|vendor.id TER -&device.id eisa 0x1112 -|vendor.id TER -&device.id eisa 0x1411 -+driver.module.modprobe snd-ad1816a - - vendor.id ADV -&device.id eisa 0x550a -+driver.module.modprobe snd-interwave-stb -+driver.module.modprobe snd-interwave - - vendor.id ADV -&device.id eisa 0x55ff -|vendor.id CDC -&device.id eisa 0x1111 -|vendor.id DXP -&device.id eisa 0x3201 -|vendor.id GRV -&device.id eisa 0x0001 -|vendor.id STB -&device.id eisa 0x011a -+driver.module.modprobe snd-interwave - - vendor.id ALS -&device.id eisa 0x0001 -|vendor.id ALS -&device.id eisa 0x0110 -|vendor.id ALS -&device.id eisa 0x0120 -|vendor.id ALS -&device.id eisa 0x0200 -|vendor.id RTL -&device.id eisa 0x3000 -+driver.module.modprobe snd-als100 - - vendor.id ALS -&device.id eisa 0x0007 -|vendor.id RWB -&device.id eisa 0x1688 -+driver.module.modprobe snd-dt019x - - vendor.id AZT -&device.id eisa 0x1008 -|vendor.id AZT -&device.id eisa 0x2320 -|vendor.id AZT -&device.id eisa 0x3000 -|vendor.id AZT -&device.id eisa 0x3002 -|vendor.id AZT -&device.id eisa 0x3005 -|vendor.id AZT -&device.id eisa 0x3011 -+driver.module.modprobe snd-azt2320 - - vendor.id CMI -&device.id eisa 0x0001 -+driver.module.modprobe snd-cmi8330 - - vendor.id CSC -&device.id eisa 0x0000 -|vendor.id CSC -&device.id eisa 0x0100 -|vendor.id GIM -&device.id eisa 0x0100 -+driver.module.modprobe cs4232 - - vendor.id CSC -&device.id eisa 0x0225 -|vendor.id CSC -&device.id eisa 0x0437 -|vendor.id CSC -&device.id eisa 0x0735 -|vendor.id CSC -&device.id eisa 0x0b35+0x0002 -|vendor.id CSC -&device.id eisa 0x1335 -|vendor.id CSC -&device.id eisa 0x1425 -|vendor.id CSC -&device.id eisa 0x1525 -|vendor.id CSC -&device.id eisa 0x1e37 -|vendor.id CSC -&device.id eisa 0x4237 -|vendor.id CSC -&device.id eisa 0x4336 -|vendor.id CSC -&device.id eisa 0x4536 -|vendor.id CSC -&device.id eisa 0x4625 -|vendor.id CSC -&device.id eisa 0x4637 -|vendor.id CSC -&device.id eisa 0x4837 -|vendor.id CSC -&device.id eisa 0x6835+0x0002 -|vendor.id CSC -&device.id eisa 0x7537 -|vendor.id CSC -&device.id eisa 0x8025 -|vendor.id CSC -&device.id eisa 0x8037 -|vendor.id CSC -&device.id eisa 0x9836+0x0002 -|vendor.id CSC -&device.id eisa 0xa836 -|vendor.id CSC -&device.id eisa 0xc835 -|vendor.id CSC -&device.id eisa 0xd925 -|vendor.id CSC -&device.id eisa 0xd937 -|vendor.id CSC -&device.id eisa 0xe825 -|vendor.id CSC -&device.id eisa 0xe835+0x0002 -|vendor.id CSC -&device.id eisa 0xe936 -|vendor.id CSC -&device.id eisa 0xf235 -|vendor.id CSC -&device.id eisa 0xf238 -+driver.module.modprobe snd-cs4236 - - vendor.id CSC -&device.id eisa 0x0d32 -|vendor.id CSC -&device.id eisa 0x1a32 -|vendor.id CSC -&device.id eisa 0x4232 -|vendor.id CSC -&device.id eisa 0xf032 -+driver.module.modprobe snd-cs4232 - - vendor.id CSC -&device.id eisa 0x4236 -+driver.module.modprobe snd-cs4232 -+driver.module.modprobe snd-cs4236 - - vendor.id CSC -&device.id eisa 0x7532 -|vendor.id CSC -&device.id eisa 0x7632 -+driver.module.modprobe snd-cs4232 -+driver.module.modprobe snd-wavefront - - vendor.id CTL -&device.id eisa 0x0024+0x0009 -|vendor.id CTL -&device.id eisa 0x0051 -|vendor.id CTL -&device.id eisa 0x0070 -|vendor.id CTL -&device.id eisa 0x0080 -|vendor.id CTL -&device.id eisa 0x0086 -|vendor.id CTL -&device.id eisa 0x00f0 -+driver.module.modprobe snd-sb16 - - vendor.id CTL -&device.id eisa 0x0035 -|vendor.id CTL -&device.id eisa 0x0039 -|vendor.id CTL -&device.id eisa 0x0042+0x0007 -|vendor.id CTL -&device.id eisa 0x0054 -|vendor.id CTL -&device.id eisa 0x009a -|vendor.id CTL -&device.id eisa 0x009c+0x0004 -|vendor.id CTL -&device.id eisa 0x00b2 -|vendor.id CTL -&device.id eisa 0x00c1 -|vendor.id CTL -&device.id eisa 0x00c3 -|vendor.id CTL -&device.id eisa 0x00c5 -|vendor.id CTL -&device.id eisa 0x00c7 -|vendor.id CTL -&device.id eisa 0x00e4 -|vendor.id CTL -&device.id eisa 0x00e9 -|vendor.id CTL -&device.id eisa 0x00ed -+driver.module.modprobe snd-sbawe - - vendor.id ENS -&device.id eisa 0x3081 -+driver.module.modprobe snd-sscape - - vendor.id ESS -&device.id eisa 0x0003 -|vendor.id ESS -&device.id eisa 0x1868+0x0002 -|vendor.id ESS -&device.id eisa 0x1878+0x0002 -+driver.module.modprobe snd-es18xx - - vendor.id ESS -&device.id eisa 0x0968 -+driver.module.modprobe snd-es968 - - vendor.id NMX -&device.id eisa 0x2200 -|vendor.id YMH -&device.id eisa 0x0020 -|vendor.id YMH -&device.id eisa 0x0030 -|vendor.id YMH -&device.id eisa 0x0800+0x0002 -+driver.module.modprobe snd-opl3sa2 - - vendor.id OPT -&device.id eisa 0x0924+0x0002 -+driver.module.modprobe snd-opti92x-cs4231 -+driver.module.modprobe snd-opti92x-ad1848 - - vendor.id OPT -&device.id eisa 0x0931 -+driver.module.modprobe snd-opti93x - - vendor.id YMH -&device.id eisa 0x0021 -+driver.module.modprobe opl3sa2 - - vendor.id usb 0x041e -&device.id usb 0x3010 -|vendor.id usb 0x0499 -&device.id usb 0x1000+0x000b -|vendor.id usb 0x0499 -&device.id usb 0x100e+0x0008 -|vendor.id usb 0x0499 -&device.id usb 0x1017+0x0006 -|vendor.id usb 0x0499 -&device.id usb 0x101e -|vendor.id usb 0x0499 -&device.id usb 0x1020+0x000c -|vendor.id usb 0x0499 -&device.id usb 0x102e -|vendor.id usb 0x0499 -&device.id usb 0x1030+0x000d -|vendor.id usb 0x0499 -&device.id usb 0x2000+0x0003 -|vendor.id usb 0x0499 -&device.id usb 0x5000+0x0009 -|vendor.id usb 0x0499 -&device.id usb 0x500a+0x0003 -|vendor.id usb 0x0499 -&device.id usb 0x7000 -|vendor.id usb 0x0499 -&device.id usb 0x7010 -|vendor.id usb 0x0582 -&device.id usb 0x0000 -|vendor.id usb 0x0582 -&device.id usb 0x0002+0x0004 -|vendor.id usb 0x0582 -&device.id usb 0x0007+0x0003 -|vendor.id usb 0x0582 -&device.id usb 0x000b+0x0002 -|vendor.id usb 0x0582 -&device.id usb 0x0010 -|vendor.id usb 0x0582 -&device.id usb 0x0012 -|vendor.id usb 0x0582 -&device.id usb 0x0014 -|vendor.id usb 0x0582 -&device.id usb 0x0016 -|vendor.id usb 0x0582 -&device.id usb 0x001b -|vendor.id usb 0x0582 -&device.id usb 0x001d -|vendor.id usb 0x0582 -&device.id usb 0x0023 -|vendor.id usb 0x0582 -&device.id usb 0x0025 -|vendor.id usb 0x0582 -&device.id usb 0x0027 -|vendor.id usb 0x0582 -&device.id usb 0x0029 -|vendor.id usb 0x0582 -&device.id usb 0x002b -|vendor.id usb 0x0582 -&device.id usb 0x002d -|vendor.id usb 0x0582 -&device.id usb 0x002f -|vendor.id usb 0x0582 -&device.id usb 0x0033 -|vendor.id usb 0x0582 -&device.id usb 0x0037 -|vendor.id usb 0x0582 -&device.id usb 0x003b -|vendor.id usb 0x0582 -&device.id usb 0x0040 -|vendor.id usb 0x0582 -&device.id usb 0x0044 -|vendor.id usb 0x0582 -&device.id usb 0x0048 -|vendor.id usb 0x0582 -&device.id usb 0x004d -|vendor.id usb 0x0582 -&device.id usb 0x0050 -|vendor.id usb 0x0582 -&device.id usb 0x0052 -|vendor.id usb 0x0582 -&device.id usb 0x0065 -|vendor.id usb 0x0763 -&device.id usb 0x1002 -|vendor.id usb 0x0763 -&device.id usb 0x1011 -|vendor.id usb 0x0763 -&device.id usb 0x1015 -|vendor.id usb 0x0763 -&device.id usb 0x1021 -|vendor.id usb 0x0763 -&device.id usb 0x1033 -|vendor.id usb 0x0763 -&device.id usb 0x1041 -|vendor.id usb 0x0763 -&device.id usb 0x2001 -|vendor.id usb 0x0763 -&device.id usb 0x2003 -|vendor.id usb 0x0763 -&device.id usb 0x2008 -|vendor.id usb 0x0763 -&device.id usb 0x200d -|vendor.id usb 0x07fd -&device.id usb 0x0001 -|vendor.id usb 0x0ccd -&device.id usb 0x0013 -+driver.module.modprobe snd-usb-audio - - vendor.id usb 0x1604 -&device.id usb 0x8001 -|vendor.id usb 0x1604 -&device.id usb 0x8005 -|vendor.id usb 0x1604 -&device.id usb 0x8007 -+driver.module.modprobe snd-usb-usx2y - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# ppc audio - vendor.id special 0x0401 -&device.id special 0x0010+0x0004 -+driver.module.modprobe dmasound - -# ppc audio - vendor.id special 0x0402 -&device.id special 0x0014 -+driver.module.modprobe cs4232 - -# AMD7930 - vendor.id special 0x4001 -&device.id special 0x2001 -+driver.module.modprobe amd7930 - -# CS4231 - vendor.id special 0x4001 -&device.id special 0x2002+0x0002 -+driver.module.modprobe cs4231 - -# SS10/SS20 DBRI - vendor.id special 0x4001 -&device.id special 0x2004 -+driver.module.modprobe dbri - diff --git a/src/hwinfo/src/ids/src/special b/src/hwinfo/src/ids/src/special deleted file mode 100644 index 3090c507ae..0000000000 --- a/src/hwinfo/src/ids/src/special +++ /dev/null @@ -1,683 +0,0 @@ -# special ids - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# adb devices - - vendor.id special 0x0100 -+vendor.name Apple - - vendor.id special 0x0100 -&device.id special 0x0201 -+device.name ADB Keyboard 1 - - vendor.id special 0x0100 -&device.id special 0x0203 -+device.name ADB Keyboard 3 - - vendor.id special 0x0100 -&device.id special 0x0302 -+device.name ADB Mouse - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# generic mice - - vendor.id special 0x0200 -+vendor.name Unknown - - vendor.id special 0x0200 -&device.id special 0x0001 -+device.name Generic USB Mouse - - vendor.id special 0x0200 -&device.id special 0x0002 -+device.name Generic PS/2 Mouse - - vendor.id special 0x0200 -&device.id special 0x0003 -+device.name MS-Compatible Serial Mouse - - vendor.id special 0x0200 -&device.id special 0x0004 -+device.name Intelli/Wheel Mouse - - vendor.id special 0x0200 -&device.id special 0x0005 -+device.name Intelli/Wheel Mouse - - vendor.id special 0x0200 -&device.id special 0x0006 -+device.name Touch Pad - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# pc keyboards -# ids > 1 are keyboard ids as read via keyboard id command - - vendor.id special 0x0201 -+vendor.name Unknown - - vendor.id special 0x0201 -&device.id special 0x0000 -+device.name PC Keyboard - - vendor.id special 0x0201 -&device.id special 0x0001 -+device.name PS/2 Keyboard - - vendor.id special 0x0201 -&device.id special 0x0002 -+device.name UML Keyboard - - vendor.id special 0x0201 -&device.id special 0x41ab -+device.name MF2 Keyboard - - vendor.id special 0x0202 -+vendor.name Sun Microsystems - - vendor.id special 0x0202 -&device.id special 0x0000 -+device.name Sun Mouse - - vendor.id special 0x0202 -&device.id special 0x0002 -+device.name Type-2 Keyboard - - vendor.id special 0x0202 -&device.id special 0x0003 -+device.name Type-3 Keyboard - - vendor.id special 0x0202 -&device.id special 0x0004 -+device.name Type-4 Keyboard - - vendor.id special 0x0202 -&device.id special 0x0005 -+device.name Type-5 Keyboard - - vendor.id special 0x0202 -&device.id special 0x0005 -&subvendor.id special 0x0202 -&subdevice.id special 0x0001 -+subdevice.name Type-5 Unix Keyboard - - vendor.id special 0x0202 -&device.id special 0x0005 -&subvendor.id special 0x0202 -&subdevice.id special 0x0002 -+subdevice.name Type-5 Euro Keyboard - - vendor.id special 0x0203 -+vendor.name Unknown - - vendor.id special 0x0203 -&device.id special 0x0000 -+device.name Serial Console - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# Mac colors - - vendor.id special 0x0300 -&device.id special 0x0001 -+device.name Blueberry - - vendor.id special 0x0300 -&device.id special 0x0004 -+device.name Lime - - vendor.id special 0x0300 -&device.id special 0x0005 -+device.name Tangerine - - vendor.id special 0x0300 -&device.id special 0x0007 -+device.name Black - - vendor.id special 0x0300 -&device.id special 0x0008 -+device.name Snow - - vendor.id special 0x0300 -&device.id special 0x00ff -+device.name Graphite - -# Strawberry, Grape, Ruby, Indigo, Sage - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# special ppc hardware; ids shared with special 0x0402 - - vendor.id special 0x0401 -+vendor.name Apple - - vendor.id special 0x0401 -&device.id special 0x0010 -+device.name Integrated Sound (awacs) - - vendor.id special 0x0401 -&device.id special 0x0011 -+device.name Integrated Sound (screamer) - - vendor.id special 0x0401 -&device.id special 0x0012 -+device.name Integrated Sound (burgundy) - - vendor.id special 0x0401 -&device.id special 0x0013 -+device.name Integrated Sound (daca) - - vendor.id special 0x0401 -&device.id special 0x0020 -+device.name MACE Ethernet Controller - - vendor.id special 0x0401 -&device.id special 0x0021 -+device.name BMAC Ethernet Controller - - vendor.id special 0x0401 -&device.id special 0x0022 -+device.name BMAC+ Ethernet Controller - - vendor.id special 0x0401 -&device.id special 0x0030 -+device.name MESH SCSI Controller - - vendor.id special 0x0401 -&device.id special 0x0031 -+device.name 53c94 SCSI Controller - - vendor.id special 0x0401 -&device.id special 0x0040 -+device.name Super Woz Integrated Machine 3 - - vendor.id special 0x0401 -&device.id special 0x1000 -+device.name 21" Monitor - - vendor.id special 0x0401 -&device.id special 0x1114 -+device.name Portrait Monitor - - vendor.id special 0x0401 -&device.id special 0x1221 -+device.name 12" Monitor - - vendor.id special 0x0401 -&device.id special 0x1331 -+device.name 21" Monitor - - vendor.id special 0x0401 -&device.id special 0x1334 -+device.name 21" Monitor (mono) - - vendor.id special 0x0401 -&device.id special 0x1335 -+device.name 21" Monitor (mono) - - vendor.id special 0x0401 -&device.id special 0x140a -+device.name NTSC Monitor - - vendor.id special 0x0401 -&device.id special 0x151e -+device.name Portrait Monitor - - vendor.id special 0x0401 -&device.id special 0x1603 -+device.name 16" Monitor - - vendor.id special 0x0401 -&device.id special 0x160b -+device.name 19" Monitor - - vendor.id special 0x0401 -&device.id special 0x1623 -+device.name 21" Monitor - - vendor.id special 0x0401 -&device.id special 0x162b -+device.name 14" Monitor - - vendor.id special 0x0401 -&device.id special 0x1700 -+device.name PAL Monitor - - vendor.id special 0x0401 -&device.id special 0x1714 -+device.name NTSC Monitor - - vendor.id special 0x0401 -&device.id special 0x1717 -+device.name VGA Monitor - - vendor.id special 0x0401 -&device.id special 0x172d -+device.name 16" Monitor - - vendor.id special 0x0401 -&device.id special 0x1730 -+device.name PAL Monitor - - vendor.id special 0x0401 -&device.id special 0x173a -+device.name 19" Monitor - - vendor.id special 0x0401 -&device.id special 0x173f -+device.name Unknown Monitor - - vendor.id special 0x0401 -&device.id special 0x2000 -+device.name 800x600 LCD - - vendor.id special 0x0401 -&device.id special 0x2001 -+device.name 1024x768 LCD - - vendor.id special 0x0401 -&device.id special 0x3000 -+device.name Valkyrie - - vendor.id special 0x0401 -&device.id special 0x3001 -+device.name Platinum - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# chrp hardware; ids shared with special 0x0401 - - vendor.id special 0x0402 -+vendor.name IBM - - vendor.id special 0x0402 -&device.id special 0x0014 -+device.name CS4236B - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# parport zip controller - - vendor.id special 0x1800 -+vendor.name Iomega - - vendor.id special 0x1800 -&device.id special 0x0001 -+device.name MatchMaker - - vendor.id special 0x1800 -&device.id special 0x0002 -+device.name PPA3 - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# modem - - vendor.id special 0x2000 -+vendor.name Unknown - - vendor.id special 0x2000 -&device.id special 0x0001 -+baseclass.id 0x102 -+subclass.id 0x00 -+device.name AT Modem - - vendor.id special 0x2001 -+vendor.name U.S. Robotics, Inc. - - vendor.id special 0x2001 -&device.id special 0x0001 -+baseclass.id 0x102 -+subclass.id 0x00 -+device.name USRobotics Sportster Vi 33600 Faxmodem - - vendor.id special 0x2002 -+vendor.name 3Com U.S. Robotics, Inc. - - vendor.id special 0x2002 -&device.id special 0x0001 -+baseclass.id 0x102 -+subclass.id 0x00 -+device.name 3Com U.S. Robotics ISDN Pro TA - - vendor.id special 0x2003 -+vendor.name ZyXEL - - vendor.id special 0x2003 -&device.id special 0x0001 -+baseclass.id 0x102 -+subclass.id 0x00 -+device.name U1496C - - vendor.id special 0x2004 -+vendor.name Zoom Telephonics, Inc. - - vendor.id special 0x2004 -&device.id special 0x0001 -+baseclass.id 0x102 -+subclass.id 0x00 -+device.name Zoom FaxModem V.34X Plus Model 2836 - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# isa isdn cards - - vendor.id special 0x3000 -+vendor.name Unknown - - vendor.id special 0x3001 -+vendor.name Teles - - vendor.id special 0x3001 -&device.id special 0x0100 -+device.name Teles 16.0 - - vendor.id special 0x3001 -&device.id special 0x0101 -+device.name Teles 16.0 AB - - vendor.id special 0x3003 -+vendor.name Teles - - vendor.id special 0x3003 -&device.id special 0x0300 -+device.name Teles 16.3 - - vendor.id special 0x3003 -&device.id special 0x0301 -+device.name Teles 16.3 AB Video - - vendor.id special 0x3005 -+vendor.name AVM - - vendor.id special 0x3005 -&device.id special 0x0500 -+device.name AVM A1 or Fritz!Classic - - vendor.id special 0x3006 -+vendor.name Elsa - - vendor.id special 0x3006 -&device.id special 0x0601 -+device.name Elsa ML PC - - vendor.id special 0x3006 -&device.id special 0x0602 -+device.name Elsa ML PCC-8 - - vendor.id special 0x3006 -&device.id special 0x0603 -+device.name Elsa ML PCC-16 - - vendor.id special 0x3006 -&device.id special 0x0604 -+device.name Elsa ML PCF - - vendor.id special 0x3006 -&device.id special 0x0605 -+device.name Elsa ML PCF-Pro - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# sbus cards - - vendor.id special 0x4001 -+vendor.name Sun Microsystems - - -# Grafik cards - vendor.id special 0x4001 -&device.id special 0x0001 -+device.name Sun|Monochrome (bwtwo) - - vendor.id special 0x4001 -&device.id special 0x0002 -+device.name Sun|Color3 (cgthree) - - vendor.id special 0x4001 -&device.id special 0x0003 -+device.name Sun|CG8/RasterOps (cgeight) - - vendor.id special 0x4001 -&device.id special 0x0004 -+device.name Sun|GS (cgtwelve) - - vendor.id special 0x4001 -&device.id special 0x0005 -+device.name Sun|Graphics Tower (gt) - - vendor.id special 0x4001 -&device.id special 0x0006 -+device.name Quantum 3D MGXplus with 4M VRAM (mgx) - - vendor.id special 0x4001 -&device.id special 0x0007 -+device.name Quantum 3D MGXplus (mgx) - - vendor.id special 0x4001 -&device.id special 0x0008 -+device.name Sun|Double width GX (cgsix) - - vendor.id special 0x4001 -&device.id special 0x0009 -+device.name Sun|Single width GX (cgsix) - - vendor.id special 0x4001 -&device.id special 0x000a -+device.name Sun|Turbo GX with 1M VSIMM (cgsix) - - vendor.id special 0x4001 -&device.id special 0x000b -+device.name Sun|Turbo GX Plus (cgsix) - - vendor.id special 0x4001 -&device.id special 0x000c -+device.name Sun|Turbo GX (cgsix) - - vendor.id special 0x4001 -&device.id special 0x000d -+device.name Sun|Unknown GX (cgsix) - - vendor.id special 0x4001 -&device.id special 0x000e -+device.name Sun|SX with 4M VSIMM (cgfourteen) - - vendor.id special 0x4001 -&device.id special 0x000f -+device.name Sun|SX with 8M VSIMM (cgfourteen) - - vendor.id special 0x4001 -&device.id special 0x0010 -+device.name Sun|SX (cgfourteen) - - vendor.id special 0x4001 -&device.id special 0x0011 -+device.name Sun|ZX or Turbo ZX (leo) - - vendor.id special 0x4001 -&device.id special 0x0012 -+device.name Sun|Turbo ZX (leo) - - vendor.id special 0x4001 -&device.id special 0x0013 -+device.name Sun|TCX (8bit) - - vendor.id special 0x4001 -&device.id special 0x0014 -+device.name Sun|TCX (S24) - - vendor.id special 0x4001 -&device.id special 0x0015 -+device.name Sun|Elite3D-M6 Horizontal (afb) - - vendor.id special 0x4001 -&device.id special 0x0016 -+device.name Sun|Elite3D (afb) - - vendor.id special 0x4001 -&device.id special 0x0017 -+device.name Sun|FFB 67MHz Creator (ffb) - - vendor.id special 0x4001 -&device.id special 0x0018 -+device.name Sun|FFB 67MHz Creator 3D (ffb) - - vendor.id special 0x4001 -&device.id special 0x0019 -+device.name Sun|FFB 75MHz Creator 3D (ffb) - - vendor.id special 0x4001 -&device.id special 0x001a -+device.name Sun|FFB2 Vertical Creator (ffb) - - vendor.id special 0x4001 -&device.id special 0x001b -+device.name Sun|FFB2 Vertical Creator 3D (ffb) - - vendor.id special 0x4001 -&device.id special 0x001c -+device.name Sun|FFB2+ Vertical Creator (ffb) - - vendor.id special 0x4001 -&device.id special 0x001d -+device.name Sun|FFB2+ Vertical Creator 3D (ffb) - - vendor.id special 0x4001 -&device.id special 0x001e -+device.name Sun|FFB2 Horizontal Creator (ffb) - - vendor.id special 0x4001 -&device.id special 0x001f -+device.name Sun|FFB2 Horizontal Creator 3D (ffb) - - vendor.id special 0x4001 -&device.id special 0x0020 -+device.name Sun|FFB [unknown type] (ffb) - - vendor.id special 0x4001 -&device.id special 0x1001 -+device.name Sun Enhanced SCSI Processor (ESP) - - vendor.id special 0x4001 -&device.id special 0x1002 -+device.name Sun Swift (ESP) - - vendor.id special 0x4001 -&device.id special 0x1003 -+device.name Performance Technologies ISP - - vendor.id special 0x4001 -&device.id special 0x1004 -+device.name QLogic ISP - - vendor.id special 0x4001 -&device.id special 0x1101 -+device.name Sun SPARCStorage Array (fc4) - - vendor.id special 0x4001 -&device.id special 0x1102 -+device.name Sun Enterprise Network Array (fc4) - - -# audio chips - vendor.id special 0x4001 -&device.id special 0x2001 -+device.name AMD7930 - - vendor.id special 0x4001 -&device.id special 0x2002 -+device.name CS4231 EB2 DMA - - vendor.id special 0x4001 -&device.id special 0x2003 -+device.name CS4231 APC DMA - - vendor.id special 0x4001 -&device.id special 0x2004 -+device.name SS10/SS20 DBRI - - -# Network cards - vendor.id special 0x4001 -&device.id special 0x3001 -+device.name Sun Happy Meal Ethernet - - vendor.id special 0x4001 -&device.id special 0x3002 -+device.name Sun Lance Ethernet - - vendor.id special 0x4001 -&device.id special 0x3003 -+device.name Sun Quad Ethernet - - vendor.id special 0x4001 -&device.id special 0x3004 -+device.name MyriCOM MyriNET Gigabit Ethernet - - -# iSeries network - vendor.id special 0x6001 -&device.id special 0x1000 -+driver.module.modprobe iseries_veth - -# IBM vscsi - vendor.id special 0x6001 -&device.id special 0x1001 -+driver.module.modprobe ibmvscsic - - -# IBM veth - vendor.id special 0x6001 -&device.id special 0x1002 -+driver.module.modprobe ibmveth - - -# UML veth - vendor.id special 0x6010 -+vendor.name UML - - -# internal: usb scanner driver list - vendor.id special 0xf000 -&device.id special 0x0001 -+driver.module.modprobe usbscanner -+driver.module.modprobe microtek - - -# internal: special notebook packages -# see int.c::int_system() - vendor.id special 0xf001 -&device.id special 0x0001 -+device.name IBM Notebook -+requires tpctl|tpconfig|tpb|configure-thinkpad - - vendor.id special 0xf001 -&device.id special 0x0002 -+device.name Toshiba Notebook -+requires toshutils|fnfx - - vendor.id special 0xf001 -&device.id special 0x0003 -+device.name Sony Notebook -+requires spicctrl - - vendor.id special 0xf001 -&device.id special 0x0004 -+device.name HP Notebook -+driver.module.modprobe thermal|fan - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# altix things - - vendor.id special 0x4002 -+vendor.name SGI - -# look at net.c if module name changes - vendor.id special 0x4002 -&device.id special 0x0001 -+device.name Cross Partition Network adapter -+driver.module.modprobe xpnet - diff --git a/src/hwinfo/src/ids/src/storage b/src/hwinfo/src/ids/src/storage deleted file mode 100644 index 173c922a03..0000000000 --- a/src/hwinfo/src/ids/src/storage +++ /dev/null @@ -1,696 +0,0 @@ -# storage controller - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# scsi controller - -# modinfo - vendor.id pci 0x1000 -&device.id pci 0x0001+0x0006 -|vendor.id pci 0x1000 -&device.id pci 0x000a+0x0004 -|vendor.id pci 0x1000 -&device.id pci 0x000f+0x0002 -|vendor.id pci 0x1000 -&device.id pci 0x0012+0x0002 -|vendor.id pci 0x1000 -&device.id pci 0x0020+0x0002 -|vendor.id pci 0x1000 -&device.id pci 0x008f -+driver.module.modprobe sym53c8xx - -# message/fusion/ - vendor.id pci 0x1000 -&device.id pci 0x0030 -|vendor.id pci 0x1000 -&device.id pci 0x0621+0x0002 -|vendor.id pci 0x1000 -&device.id pci 0x0624 -|vendor.id pci 0x1000 -&device.id pci 0x0626 -|vendor.id pci 0x1000 -&device.id pci 0x0628 -+driver.module.modprobe mptscsih - - vendor.id pci 0x1014 -&device.id pci 0x0096 -+driver.module.modprobe ibmsis - -# modinfo - vendor.id pci 0x1000 -&device.id pci 0x0407 -|vendor.id pci 0x1000 -&device.id pci 0x1960 -|vendor.id pci 0x101e -&device.id pci 0x1960 -|vendor.id pci 0x101e -&device.id pci 0x9010 -|vendor.id pci 0x101e -&device.id pci 0x9060 -|vendor.id pci 0x1028 -&device.id pci 0x000e+0x0002 -|vendor.id pci 0x8086 -&device.id pci 0x1960 -+driver.module.modprobe megaraid - -# modinfo - vendor.id pci 0x1000 -&device.id pci 0x0407 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0530+0x0003 -|vendor.id pci 0x1000 -&device.id pci 0x0407 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0531 -|vendor.id pci 0x1000 -&device.id pci 0x0407 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0530 -|vendor.id pci 0x1000 -&device.id pci 0x0407 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0532 -|vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0001+0x0002 -|vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x004d -|vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0001+0x0002 -|vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x1734 -&subdevice.id pci 0x1065 -|vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0002 -|vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3431 -|vendor.id pci 0x1000 -&device.id pci 0x0408 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3499 -|vendor.id pci 0x1000 -&device.id pci 0x0409 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x3004 -|vendor.id pci 0x1000 -&device.id pci 0x0409 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x3008 -|vendor.id pci 0x1000 -&device.id pci 0x0409 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x3008 -|vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0518 -|vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0520 -|vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x0522+0x0002 -|vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1000 -&subdevice.id pci 0x4523 -|vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1000 -&subdevice.id pci 0xa520 -|vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0518 -|vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0520 -|vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0520 -|vendor.id pci 0x1000 -&device.id pci 0x1960 -&subvendor.id pci 0x8086 -&subdevice.id pci 0x0523 -|vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0471 -|vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0475 -|vendor.id pci 0x101e -&device.id pci 0x1960 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0493 -|vendor.id pci 0x1028 -&device.id pci 0x000e -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0123 -|vendor.id pci 0x1028 -&device.id pci 0x000f -&subvendor.id pci 0x1028 -&subdevice.id pci 0x014a -|vendor.id pci 0x1028 -&device.id pci 0x0013 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x016c+0x0005 -+driver.module.modprobe megaraid_mbox - -# override qla1280 info (#26325) - vendor.id pci 0x1077 -&device.id pci 0x1216 -&subvendor.id pci 0x101e -&subdevice.id pci 0x8493 -|vendor.id pci 0x1077 -&device.id pci 0x1216 -&subvendor.id pci 0x101e -&subdevice.id pci 0x8471 -+driver.module.modprobe megaraid - -# modinfo - vendor.id pci 0x1022 -&device.id pci 0x2020 -+driver.module.modprobe tmscsim - -# scsi/fdomain.c - vendor.id pci 0x1036 -&device.id pci 0x0000 -+driver.module.modprobe fdomain - -# scsi/eata_dma.c - vendor.id pci 0x1044 -&device.id pci 0xa400 -+driver.module.modprobe eata - -# scsi/dpti.c - baseclass.id 0x00e -&subclass.id 0x00 -&vendor.id pci 0x1044 -&device.id pci 0xa501 -|baseclass.id 0x00e -&subclass.id 0x00 -&vendor.id pci 0x1044 -&device.id pci 0xa511 -+driver.module.modprobe dpt_i2o - -# scsi/BusLogic.c - vendor.id pci 0x104b -&device.id pci 0x0140 -|vendor.id pci 0x104b -&device.id pci 0x1040 -|vendor.id pci 0x104b -&device.id pci 0x8130 -+driver.module.modprobe BusLogic - -# scsi/qla1280.c - vendor.id pci 0x1077 -&device.id pci 0x1016 -|vendor.id pci 0x1077 -&device.id pci 0x1080 -|vendor.id pci 0x1077 -&device.id pci 0x1216 -|vendor.id pci 0x1077 -&device.id pci 0x1240 -|vendor.id pci 0x1077 -&device.id pci 0x1280 -+driver.module.modprobe qla1280 - -# scsi/qlogicisp.c - vendor.id pci 0x1077 -&device.id pci 0x1020 -+driver.module.modprobe qlogicisp - -# scsi/qlogicfc.c - vendor.id pci 0x1077 -&device.id pci 0x2100 -+driver.module.modprobe qlogicfc - - vendor.id pci 0x1077 -&device.id pci 0x2200 -+driver.module.modprobe qla2200 -+driver.module.modprobe qlogicfc - - vendor.id pci 0x1077 -&device.id pci 0x2300 -|vendor.id pci 0x1077 -&device.id pci 0x2312 -+driver.module.modprobe qla2300 - -# scsi/inia100.c - vendor.id pci 0x1101 -&device.id pci 0x0002 -|vendor.id pci 0x1101 -&device.id pci 0x1060 -+driver.module.modprobe a100u2w - -# scsi/ini9100u.c - vendor.id pci 0x1101 -&device.id pci 0x9400+0x0002 -|vendor.id pci 0x1101 -&device.id pci 0x9500 -|vendor.id pci 0x134a -&device.id pci 0x0002 -+driver.module.modprobe initio - -# scsi/gdth.c - vendor.id pci 0x1119 -&device.id pci 0x0000+0x000e -|vendor.id pci 0x1119 -&device.id pci 0x0100+0x0300 -|vendor.id pci 0x8086 -&device.id pci 0x0600 -+driver.module.modprobe gdth - -# scsi/atp870u.c - vendor.id pci 0x1191 -&device.id pci 0x8002 -|vendor.id pci 0x1191 -&device.id pci 0x8010 -|vendor.id pci 0x1191 -&device.id pci 0x8020 -|vendor.id pci 0x1191 -&device.id pci 0x8030 -|vendor.id pci 0x1191 -&device.id pci 0x8040 -|vendor.id pci 0x1191 -&device.id pci 0x8050 -|vendor.id pci 0x1191 -&device.id pci 0x8060 -+driver.module.modprobe atp870u - -# scsi/pci2220i.c - vendor.id pci 0x1256 -&device.id pci 0x4401 -+driver.module.modprobe pci2220i - -# scsi/pci2000.c - vendor.id pci 0x1256 -&device.id pci 0x5201 -+driver.module.modprobe pci2000 - -# scsi/dmx3191d.c - vendor.id pci 0x134a -&device.id pci 0x0001 -+driver.module.modprobe dmx3191d - -# scsi/3w-xxxx.c - vendor.id pci 0x13c1 -&device.id pci 0x1000+0x0002 -+driver.module.modprobe 3w-xxxx - -# modules.alias - vendor.id pci 0x1de1 -&device.id pci 0x0391 -+driver.module.modprobe dc395x - -# scsi/aic7xxx/{aic7xxx_pci.c,aic79xx_pci.c} - vendor.id pci 0x9004 -&device.id pci 0x0078 -|vendor.id pci 0x9004 -&device.id pci 0x1078 -|vendor.id pci 0x9004 -&device.id pci 0x2178 -|vendor.id pci 0x9004 -&device.id pci 0x3860 -|vendor.id pci 0x9004 -&device.id pci 0x5078 -|vendor.id pci 0x9004 -&device.id pci 0x5578 -|vendor.id pci 0x9004 -&device.id pci 0x6038 -|vendor.id pci 0x9004 -&device.id pci 0x6075 -|vendor.id pci 0x9004 -&device.id pci 0x6078 -|vendor.id pci 0x9004 -&device.id pci 0x6178 -|vendor.id pci 0x9004 -&device.id pci 0x7078 -|vendor.id pci 0x9004 -&device.id pci 0x7178 -&subvendor.id pci 0x0000 -&subdevice.id pci 0x0000 -|vendor.id pci 0x9004 -&device.id pci 0x7278 -&subvendor.id pci 0x0000 -&subdevice.id pci 0x0000 -|vendor.id pci 0x9004 -&device.id pci 0x7378 -&subvendor.id pci 0x0000 -&subdevice.id pci 0x0000 -|vendor.id pci 0x9004 -&device.id pci 0x7478 -&subvendor.id pci 0x0000 -&subdevice.id pci 0x0000 -|vendor.id pci 0x9004 -&device.id pci 0x7578 -&subvendor.id pci 0x0000 -&subdevice.id pci 0x0000 -|vendor.id pci 0x9004 -&device.id pci 0x7678 -&subvendor.id pci 0x0000 -&subdevice.id pci 0x0000 -|vendor.id pci 0x9004 -&device.id pci 0x7815 -|vendor.id pci 0x9004 -&device.id pci 0x7890+0x0010 -&subvendor.id pci 0x9004 -&subdevice.id pci 0x7893 -|vendor.id pci 0x9004 -&device.id pci 0x7895 -|vendor.id pci 0x9004 -&device.id pci 0x8078 -|vendor.id pci 0x9004 -&device.id pci 0x8178 -|vendor.id pci 0x9004 -&device.id pci 0x8278 -|vendor.id pci 0x9004 -&device.id pci 0x8378 -|vendor.id pci 0x9004 -&device.id pci 0x8478 -|vendor.id pci 0x9004 -&device.id pci 0x8578 -|vendor.id pci 0x9004 -&device.id pci 0x8678 -|vendor.id pci 0x9004 -&device.id pci 0x8778 -|vendor.id pci 0x9004 -&device.id pci 0x8878 -|vendor.id pci 0x9005 -&device.id pci 0x0010+0x0010 -|vendor.id pci 0x9005 -&device.id pci 0x0050+0x0010 -|vendor.id pci 0x9005 -&device.id pci 0x0080+0x0010 -|vendor.id pci 0x9005 -&device.id pci 0x00c0+0x0010 -+driver.module.modprobe aic7xxx - - vendor.id pci 0x9005 -&device.id pci 0x8000+0x0020 -+driver.module.modprobe aic79xx - -# scsi/aha152x.c - vendor.id ADP -&device.id eisa 0x1505 -+driver.module.modprobe aha152x -+driver.module.config options aha152x aha152x=, -+driver.module.insmod aha152x aha152x=, - -# scsi/mesh.c - vendor.id special 0x0401 -&device.id special 0x0030 -+driver.module.modprobe mesh - -# scsi/mac53c94.c - vendor.id special 0x0401 -&device.id special 0x0031 -+driver.module.modprobe mac53c94 - -# iomega zip - vendor.id special 0x1800 -&device.id special 0x0001 -+driver.module.modprobe imm - -# iomega zip - vendor.id special 0x1800 -&device.id special 0x0002 -+driver.module.modprobe ppa - -# scsi/qlogicpti.c - vendor.id special 0x4001 -&device.id special 0x1003+0x0002 -+driver.module.modprobe qlogicpti - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# block devices (RAID, ...) - -# modules.alias - vendor.id pci 0x1011 -&device.id pci 0x1065 -&subvendor.id pci 0x1069 -&subdevice.id pci 0x0020 -|vendor.id pci 0x1069 -&device.id pci 0x0001+0x0002 -|vendor.id pci 0x1069 -&device.id pci 0x0010 -|vendor.id pci 0x1069 -&device.id pci 0x0050 -|vendor.id pci 0x1069 -&device.id pci 0xba56 -+driver.module.modprobe DAC960 -+baseclass.id 0x001 -+subclass.id 0x04 - -# pcimap - vendor.id pci 0x0e11 -&device.id pci 0xae10 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4030+0x0005 -|vendor.id pci 0x1000 -&device.id pci 0x0010 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4040 -|vendor.id pci 0x1000 -&device.id pci 0x0010 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4048 -|vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4050+0x0002 -|vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4058 -+driver.module.modprobe cpqarray - -# pcimap - vendor.id pci 0x0e11 -&device.id pci 0x0046 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x409a+0x0004 -|vendor.id pci 0x0e11 -&device.id pci 0xb060 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4070 -|vendor.id pci 0x0e11 -&device.id pci 0xb178 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4080 -|vendor.id pci 0x0e11 -&device.id pci 0xb178 -&subvendor.id pci 0x0e11 -&subdevice.id pci 0x4082+0x0002 -+driver.module.modprobe cciss - -# block/swim3.c - vendor.id special 0x0401 -&device.id special 0x0040 -+driver.module.modprobe swim3 - - baseclass.id 0x00e -&subclass.id 0x00+2 -+driver.module.insmod i2o_pci|i2o_core|i2o_config|i2o_block - -# scsi/aacraid/linit.c - vendor.id pci 0x1028 -&device.id pci 0x0001 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0001 -|vendor.id pci 0x1028 -&device.id pci 0x0002 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0002 -|vendor.id pci 0x1028 -&device.id pci 0x0003 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0003 -|vendor.id pci 0x1028 -&device.id pci 0x0004 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00d0 -|vendor.id pci 0x1028 -&device.id pci 0x0002 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00d1 -|vendor.id pci 0x1028 -&device.id pci 0x0002 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00d9 -|vendor.id pci 0x1028 -&device.id pci 0x000a -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0106 -|vendor.id pci 0x1028 -&device.id pci 0x000a -&subvendor.id pci 0x1028 -&subdevice.id pci 0x011b -|vendor.id pci 0x1028 -&device.id pci 0x000a -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0121 -|vendor.id pci 0x9005 -&device.id pci 0x0283 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0283 -|vendor.id pci 0x9005 -&device.id pci 0x0284 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0284 -|vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0286 -|vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0285 -|vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0287 -|vendor.id pci 0x9005 -&device.id pci 0x0285 -&subvendor.id pci 0x1028 -&subdevice.id pci 0x0287 -|vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x0364+2 -|vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x9005 -&subdevice.id pci 0x1364 -|vendor.id pci 0x1011 -&device.id pci 0x0046 -&subvendor.id pci 0x103c -&subdevice.id pci 0x10c2 -+driver.module.modprobe aacraid - -# modules.alias sata_* - baseclass.id 0x001 -&subclass.id 0x06 -&progif.id 0x00 -&vendor.id pci 0x1725 -&device.id pci 0x7174 -|baseclass.id 0x001 -&subclass.id 0x06 -&progif.id 0x00 -&vendor.id pci 0x8086 -&device.id pci 0x3200 -+driver.module.modprobe sata_vsc - - vendor.id pci 0x1039 -&device.id pci 0x0180+0x0002 -+driver.module.modprobe sata_sis - - vendor.id pci 0x105a -&device.id pci 0x3318+0x0002 -|vendor.id pci 0x105a -&device.id pci 0x3371 -|vendor.id pci 0x105a -&device.id pci 0x3373 -|vendor.id pci 0x105a -&device.id pci 0x3375+0x0002 -+driver.module.modprobe sata_promise - - vendor.id pci 0x105a -&device.id pci 0x6622 -+driver.module.modprobe sata_sx4 - - vendor.id pci 0x1095 -&device.id pci 0x0240 -|vendor.id pci 0x1095 -&device.id pci 0x3112 -|vendor.id pci 0x1095 -&device.id pci 0x3114 -|vendor.id pci 0x1095 -&device.id pci 0x3512 -+driver.module.modprobe sata_sil - - vendor.id pci 0x10de -&device.id pci 0x0036 -|vendor.id pci 0x10de -&device.id pci 0x003e -|vendor.id pci 0x10de -&device.id pci 0x0054+0x0002 -|vendor.id pci 0x10de -&device.id pci 0x008e -|vendor.id pci 0x10de -&device.id pci 0x00e3 -|vendor.id pci 0x10de -&device.id pci 0x00ee -+driver.module.modprobe sata_nv - - vendor.id pci 0x1106 -&device.id pci 0x3149 -+driver.module.modprobe sata_via - - vendor.id pci 0x1166 -&device.id pci 0x0240 -+driver.module.modprobe sata_svw - -# modules.alias, #38628 - baseclass.id 0x00b -&subclass.id 0x40 -&progif.id 0x00 -&vendor.id pci 0x10a9 -&device.id pci 0x100a -+driver.module.modprobe sgiioc4 -+baseclass.id 0x001 - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# usb controller - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0x00 -+driver.module.modprobe uhci-hcd - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0x10 -+driver.module.modprobe ohci-hcd - - baseclass.id 0x00c -&subclass.id 0x03 -&progif.id 0x20 -+driver.module.modprobe ehci-hcd - - baseclass.id 0x00c -&subclass.id 0x00 -&progif.id 0x10 -+driver.module.modprobe ohci1394 - - vendor.id pci 0x104c -&device.id pci 0x8000 -+driver.module.modprobe pcilynx - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# Compaq Virtual Management Device - -# make it a floppy - baseclass.id 0x106 -&vendor.id usb 0x049f -&device.id usb 0x0040 -+subclass.id 0x03 diff --git a/src/hwinfo/src/ids/src/tv b/src/hwinfo/src/ids/src/tv deleted file mode 100644 index c0adb626ca..0000000000 --- a/src/hwinfo/src/ids/src/tv +++ /dev/null @@ -1,435 +0,0 @@ -# video/tv cards - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# media/video/buz.c - - vendor.id pci 0x11de -&device.id pci 0x6057 -+driver.module.modprobe buz - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# media/video/zr36120.c -# (framegrabber) - vendor.id pci 0x11de -&device.id pci 0x6120 -+driver.module.modprobe zr36120 - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# media/video/bttv-cards.c, kernel 2.4.7 - - vendor.id pci 0x109e -+vendor.name Brooktree Corporation - - vendor.id pci 0x109e -&device.id pci 0x036e -+device.name Bt878 - - vendor.id pci 0x109e -&device.id pci 0x036f -+device.name Bt879 - - vendor.id pci 0x109e -&device.id pci 0x0350+0x0002 -|vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x107d -&subdevice.id pci 0x6606 -|vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x6606 -&subdevice.id pci 0x217d -|vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x107d -&subdevice.id pci 0x6606 -|vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x6606 -&subdevice.id pci 0x217d -+subdevice.name Leadtek WinFast TV 2000 -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x11bd -&subdevice.id pci 0x0012 -|vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0xbd11 -&subdevice.id pci 0x1200 -|vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x11bd -&subdevice.id pci 0x0012 -|vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0xbd11 -&subdevice.id pci 0x1200 -+subdevice.name Pinnacle PCTV -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0001 -|vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0003 -|vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0001 -|vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0003 -+subdevice.name AVerMedia TVPhone98 -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x153b -&subdevice.id pci 0x1117+0x0004 -|vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x153b -&subdevice.id pci 0x1134 -|vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x153b -&subdevice.id pci 0x1117+0x0004 -|vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x153b -&subdevice.id pci 0x1134 -+subdevice.name Terratec TValue -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x15b0 -&subdevice.id pci 0x400d -|vendor.id pci 0x109e -&device.id pci 0x036e -&subvendor.id pci 0x15b0 -&subdevice.id pci 0x4010 -|vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x15b0 -&subdevice.id pci 0x400d -|vendor.id pci 0x109e -&device.id pci 0x036f -&subvendor.id pci 0x15b0 -&subdevice.id pci 0x4010 -+subdevice.name Zoltrix Genie TV / Radio -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x0070 -&subdevice.id pci 0x13eb -+subdevice.name Hauppauge WinTV -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x0070 -&subdevice.id pci 0x3900 -+subdevice.name Hauppauge WinTV-D -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x0070 -&subdevice.id pci 0x4500 -+subdevice.name Hauppauge WinTV/PVR -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x0070 -&subdevice.id pci 0xff00 -+subdevice.name Osprey-100 -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x0070 -&subdevice.id pci 0xff01 -+subdevice.name Osprey-200 -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0001 -+subdevice.name ATI TV Wonder -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0003 -+subdevice.name ATI TV Wonder/VE -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x10b4 -&subdevice.id pci 0x2636 -+subdevice.name STB TV PCI FM, P/N 6000704 -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x10fc -&subdevice.id pci 0x4020 -+subdevice.name I-O Data Co. GV-BCV3/PCI -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x10fc -&subdevice.id pci 0x4050 -+subdevice.name I-O Data Co. GV-BCV4/PCI -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x121a -&subdevice.id pci 0x3000 -+subdevice.name VoodooTV 200 -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x144f -&subdevice.id pci 0x3000 -+subdevice.name TView 99 (CPH063) -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x144f -&subdevice.id pci 0x3002 -+subdevice.name Askey Magic TView -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0002 -+subdevice.name AVermedia TVCapture 98 -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x1461 -&subdevice.id pci 0x0004 -+subdevice.name AVerMedia TVCapture 98 -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x14c7 -&subdevice.id pci 0x0101 -+subdevice.name Modular Technology PCTV -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x14ff -&subdevice.id pci 0x3000 -+subdevice.name TView 99 (CPH061) -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x14ff -&subdevice.id pci 0x3002 -+subdevice.name Phoebe TV Master -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x153b -&subdevice.id pci 0x1123 -+subdevice.name Terratec TV Radio+ -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x153b -&subdevice.id pci 0x1127 -+subdevice.name Terratec TV+ -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x153b -&subdevice.id pci 0x1135 -+subdevice.name Terratec TValue Radio -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x15b0 -&subdevice.id pci 0x400a -+subdevice.name Zoltrix Genie TV -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x15cb -&subdevice.id pci 0x0101 -+subdevice.name AG GMV1 -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x1851 -&subdevice.id pci 0x1850 -+subdevice.name Chronos Video Shuttle II -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x1851 -&subdevice.id pci 0x1851 -+subdevice.name CyberMail AV -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x1852 -&subdevice.id pci 0x1852 -+subdevice.name Typhoon TView TV/FM Tuner -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - vendor.id pci 0x109e -&device.id pci 0x036e+0x0002 -&subvendor.id pci 0x2636 -&subdevice.id pci 0x10b4 -+subdevice.name STB ??? -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe bttv - - - vendor.id pci 0x14f1 -&device.id pci 0x8800 -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe cx8800 - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - vendor.id pci 0x1131 -&device.id pci 0x7130 -|vendor.id pci 0x1131 -&device.id pci 0x7133 -|vendor.id pci 0x1131 -&device.id pci 0x7134 -|vendor.id pci 0x1131 -&device.id pci 0x7135 -+baseclass.id 0x112 -+subclass.id 0x00 -+driver.module.modprobe saa7134 - - vendor.id pci 0x1131 -&device.id pci 0x7134 -&subvendor.id pci 0x1131 -&subdevice.id pci 0x2001 -+subdevice.name Proteus Pro [philips reference design] - - vendor.id pci 0x1131 -&device.id pci 0x7134 -&subvendor.id pci 0x1131 -&subdevice.id pci 0x6752 -+subdevice.name EMPRESS - - vendor.id pci 0x1131 -&device.id pci 0x7134 -&subvendor.id pci 0x1131 -&subdevice.id pci 0x4e85 -+subdevice.name SKNet Monster TV - - vendor.id pci 0x1131 -&device.id pci 0x7134 -&subvendor.id pci 0x153b -&subdevice.id pci 0x1142 -+subdevice.name Terratec Cinergy 400 TV - diff --git a/src/hwinfo/src/ids/src/usb b/src/hwinfo/src/ids/src/usb deleted file mode 100644 index 5b9426275f..0000000000 --- a/src/hwinfo/src/ids/src/usb +++ /dev/null @@ -1,6824 +0,0 @@ -# info from usbutils - - - vendor.id usb 0x0386 -+vendor.name LTS - - vendor.id usb 0x0386 -&device.id usb 0x0001 -+device.name PSX for USB Converter - - vendor.id usb 0x03e8 -+vendor.name AOX Inc. - - vendor.id usb 0x03e8 -&device.id usb 0x0004 -+device.name SE401 WebCam - - vendor.id usb 0x03e8 -&device.id usb 0x0008 -+device.name 101 Ethernet [klsi] - - vendor.id usb 0x03e9 -+vendor.name Thesys Microelectronics - - vendor.id usb 0x03ea -+vendor.name Data Broadcasting Corp. - - vendor.id usb 0x03eb -+vendor.name Atmel Corp. - - vendor.id usb 0x03eb -&device.id usb 0x3301 -+device.name 4-port Hub - - vendor.id usb 0x03eb -&device.id usb 0x3312 -+device.name 4-port Hub - - vendor.id usb 0x03eb -&device.id usb 0x7603 -+device.name AT76c503a D-Link DWL-120 - - vendor.id usb 0x03ec -+vendor.name Iwatsu America Inc. - - vendor.id usb 0x03ed -+vendor.name Mitel Corp. - - vendor.id usb 0x03ee -+vendor.name Mitsumi - - vendor.id usb 0x03ee -&device.id usb 0x0000 -+device.name CD-R/RW Drive - - vendor.id usb 0x03f0 -+vendor.name Hewlett-Packard - - vendor.id usb 0x03f0 -&device.id usb 0x0004 -+device.name DeskJet 895c - - vendor.id usb 0x03f0 -&device.id usb 0x0101 -+device.name ScanJet 4100c - - vendor.id usb 0x03f0 -&device.id usb 0x0102 -+device.name PhotoSmart S20 - - vendor.id usb 0x03f0 -&device.id usb 0x0104 -+device.name DeskJet 880c/970c - - vendor.id usb 0x03f0 -&device.id usb 0x0105 -+device.name ScanJet 4200c - - vendor.id usb 0x03f0 -&device.id usb 0x0107 -+device.name CD-Writer Plus - - vendor.id usb 0x03f0 -&device.id usb 0x010c -+device.name Multimedia Keyboard Hub - - vendor.id usb 0x03f0 -&device.id usb 0x0111 -+device.name G55xi Printer/Scanner/Copier - - vendor.id usb 0x03f0 -&device.id usb 0x011c -+device.name hn210w 802.11b Wireless Ethernet - - vendor.id usb 0x03f0 -&device.id usb 0x0201 -+device.name ScanJet 6200c - - vendor.id usb 0x03f0 -&device.id usb 0x0202 -+device.name PhotoSmart S20 - - vendor.id usb 0x03f0 -&device.id usb 0x0204 -+device.name DeskJet 815c - - vendor.id usb 0x03f0 -&device.id usb 0x0205 -+device.name ScanJet 3300c - - vendor.id usb 0x03f0 -&device.id usb 0x0207 -+device.name CD-Writer Plus 8200e - - vendor.id usb 0x03f0 -&device.id usb 0x020c -+device.name Multimedia Keyboard - - vendor.id usb 0x03f0 -&device.id usb 0x0304 -+device.name DeskJet 810c/812c - - vendor.id usb 0x03f0 -&device.id usb 0x0311 -+device.name OfficeJet G85xi - - vendor.id usb 0x03f0 -&device.id usb 0x0317 -+device.name LaserJet 1200 - - vendor.id usb 0x03f0 -&device.id usb 0x0401 -+device.name ScanJet 5200c - - vendor.id usb 0x03f0 -&device.id usb 0x0404 -+device.name DeskJet 830c/832c - - vendor.id usb 0x03f0 -&device.id usb 0x0405 -+device.name ScanJet 3400cse - - vendor.id usb 0x03f0 -&device.id usb 0x0504 -+device.name DeskJet 885c - - vendor.id usb 0x03f0 -&device.id usb 0x0601 -+device.name ScanJet 6300c - - vendor.id usb 0x03f0 -&device.id usb 0x0604 -+device.name DeskJet 840c - - vendor.id usb 0x03f0 -&device.id usb 0x0605 -+device.name ScanJet 2200c - - vendor.id usb 0x03f0 -&device.id usb 0x0701 -+device.name ScanJet 5300c/5370c - - vendor.id usb 0x03f0 -&device.id usb 0x0705 -+device.name ScanJet 4400c - - vendor.id usb 0x03f0 -&device.id usb 0x0804 -+device.name DeskJet 816c - - vendor.id usb 0x03f0 -&device.id usb 0x1004 -+device.name DeskJet 970c/970cse - - vendor.id usb 0x03f0 -&device.id usb 0x1104 -+device.name Deskjet 959C - - vendor.id usb 0x03f0 -&device.id usb 0x1105 -+device.name ScanJet 5470c - - vendor.id usb 0x03f0 -&device.id usb 0x1151 -+device.name 750xi Printer/Scanner/Copier - - vendor.id usb 0x03f0 -&device.id usb 0x1204 -+device.name DeskJet 930c - - vendor.id usb 0x03f0 -&device.id usb 0x2004 -+device.name DeskJet 640c - - vendor.id usb 0x03f0 -&device.id usb 0x3102 -+device.name PhotoSmart P1100 Printer w/ Card Reader - - vendor.id usb 0x03f0 -&device.id usb 0x4102 -+device.name PhotoSmart 618 Camera - - vendor.id usb 0x03f0 -&device.id usb 0x6202 -+device.name PhotoSmart 215 Camera - - vendor.id usb 0x03f0 -&device.id usb 0x6302 -+device.name PhotoSmart 318/612 Camera - - vendor.id usb 0x03f0 -&device.id usb 0xefbe -+device.name NEC Picty900 - - vendor.id usb 0x03f0 -&device.id usb 0xbef4 -+device.name NEC Picty760 - - vendor.id usb 0x03f0 -&device.id usb 0xf0be -+device.name NEC Picty920 - - vendor.id usb 0x03f0 -&device.id usb 0xf1be -+device.name NEC Picty800 - - vendor.id usb 0x03f1 -+vendor.name Genoa Technology - - vendor.id usb 0x03f2 -+vendor.name Oak Technology, Inc. - - vendor.id usb 0x03f3 -+vendor.name Adaptec, Inc. - - vendor.id usb 0x03f4 -+vendor.name Diebold, Inc. - - vendor.id usb 0x03f5 -+vendor.name Siemens Electromechanical - - vendor.id usb 0x03f8 -+vendor.name Epson Imaging Technology Center - - vendor.id usb 0x03f9 -+vendor.name KeyTronic Corp. - - vendor.id usb 0x03fb -+vendor.name OPTi Inc. - - vendor.id usb 0x03fc -+vendor.name Elitegroup Computer Systems - - vendor.id usb 0x03fd -+vendor.name Xilinx Inc. - - vendor.id usb 0x03fe -+vendor.name Farallon Comunications - - vendor.id usb 0x0400 -+vendor.name National Semiconductor - - vendor.id usb 0x0400 -&device.id usb 0x1000 -+device.name BearPaw 1200 Scanner - - vendor.id usb 0x0400 -&device.id usb 0x1001 -+device.name BearPaw 2400 Scanner - - vendor.id usb 0x0401 -+vendor.name National Registry Inc. - - vendor.id usb 0x0402 -+vendor.name Acer Labs Inc. - - vendor.id usb 0x0403 -+vendor.name Future Technology Devices - - vendor.id usb 0x0403 -&device.id usb 0x0000 -+device.name H4SMK 7 Port Hub - - vendor.id usb 0x0403 -&device.id usb 0x8070 -+device.name 7 Port Hub - - vendor.id usb 0x0403 -&device.id usb 0x8040 -+device.name 4 Port Hub - - vendor.id usb 0x0403 -&device.id usb 0x8370 -+device.name 7 Port Hub - - vendor.id usb 0x0403 -&device.id usb 0x8371 -+device.name PS/2 Keyboard And Mouse - - vendor.id usb 0x0403 -&device.id usb 0x8372 -+device.name FT8U100AX Serial Port - - vendor.id usb 0x0404 -+vendor.name NCR Corp. - - vendor.id usb 0x0405 -+vendor.name inSilicon - - vendor.id usb 0x0406 -+vendor.name Fujitsu-ICL Computers - - vendor.id usb 0x0407 -+vendor.name Fujitsu Personal Systems, Inc. - - vendor.id usb 0x0408 -+vendor.name Quanta Computer Inc. - - vendor.id usb 0x0409 -+vendor.name NEC Systems - - vendor.id usb 0x0409 -&device.id usb 0x0012 -+device.name ATerm IT75DSU ISDN TA - - vendor.id usb 0x0409 -&device.id usb 0x0014 -+device.name Japanese Keyboard - - vendor.id usb 0x0409 -&device.id usb 0x0027 -+device.name MultiSync Monitor - - vendor.id usb 0x0409 -&device.id usb 0x0058 -+device.name USB2.0 Hub Controller - - vendor.id usb 0x0409 -&device.id usb 0x55aa -+device.name Hub - - vendor.id usb 0x0409 -&device.id usb 0x55ab -+device.name Hub [iMac kbd] - - vendor.id usb 0x0409 -&device.id usb 0xefbe -+device.name P!cty 900 [HP DJ] - - vendor.id usb 0x0409 -&device.id usb 0xf0be -+device.name P!cty 920 [HP DJ 812c] - - vendor.id usb 0x040a -+vendor.name Kodak Co. - - vendor.id usb 0x040a -&device.id usb 0x0001 -+device.name DVC-323 - - vendor.id usb 0x040a -&device.id usb 0x0002 -+device.name DVC-325 - - vendor.id usb 0x040a -&device.id usb 0x0100 -+device.name DC-220 - - vendor.id usb 0x040a -&device.id usb 0x0110 -+device.name DC-260 - - vendor.id usb 0x040a -&device.id usb 0x0111 -+device.name DC-265 - - vendor.id usb 0x040a -&device.id usb 0x0112 -+device.name DC-290 - - vendor.id usb 0x040a -&device.id usb 0x0120 -+device.name DC-240 - - vendor.id usb 0x040a -&device.id usb 0x0121 -+device.name DC-240 (PTP firmware) - - vendor.id usb 0x040a -&device.id usb 0x0130 -+device.name DC-280 - - vendor.id usb 0x040a -&device.id usb 0x0131 -+device.name DC-5000 - - vendor.id usb 0x040a -&device.id usb 0x0132 -+device.name DC-3400 - - vendor.id usb 0x040a -&device.id usb 0x0140 -+device.name DC-4800 - - vendor.id usb 0x040a -&device.id usb 0x0300 -+device.name EZ-200 - - vendor.id usb 0x040a -&device.id usb 0x0400 -+device.name MC3 - - vendor.id usb 0x040b -+vendor.name Weltrend Semiconductor - - vendor.id usb 0x040c -+vendor.name VTech Computers Ltd. - - vendor.id usb 0x040d -+vendor.name VIA Technologies, Inc. - - vendor.id usb 0x040e -+vendor.name MCCI - - vendor.id usb 0x040f -+vendor.name Echo Speech Corp. - - vendor.id usb 0x0411 -+vendor.name Melco, Inc. - - vendor.id usb 0x0411 -&device.id usb 0x0001 -+device.name LUA-TX Ethernet [pegasus] - - vendor.id usb 0x0412 -+vendor.name Award Software International - - vendor.id usb 0x0413 -+vendor.name Leadtek Research Inc. - - vendor.id usb 0x0414 -+vendor.name Giga-Byte Technology Co., Ltd. - - vendor.id usb 0x0416 -+vendor.name Winbond Electronics Corp. - - vendor.id usb 0x0416 -&device.id usb 0x0961 -+device.name AVL Flash Card Reader - - vendor.id usb 0x0416 -&device.id usb 0x5518 -+device.name Hub - - vendor.id usb 0x0416 -&device.id usb 0x551a -+device.name PC Sync Keypad - - vendor.id usb 0x0416 -&device.id usb 0x551b -+device.name PC Async Keypad - - vendor.id usb 0x0416 -&device.id usb 0x551c -+device.name Sync Tenkey - - vendor.id usb 0x0416 -&device.id usb 0x551d -+device.name Async Tenkey - - vendor.id usb 0x0416 -&device.id usb 0x551e -+device.name Keyboard - - vendor.id usb 0x0416 -&device.id usb 0x551f -+device.name Keyboard w/ Sys and Media - - vendor.id usb 0x0416 -&device.id usb 0x5521 -+device.name Keyboard - - vendor.id usb 0x0416 -&device.id usb 0x6481 -+device.name 16-bit Scanner - - vendor.id usb 0x0417 -+vendor.name Symbios Logic - - vendor.id usb 0x0418 -+vendor.name AST Research - - vendor.id usb 0x0419 -+vendor.name Samsung Info. Systems America Inc. - - vendor.id usb 0x041a -+vendor.name Phoenix Technologies, Ltd. - - vendor.id usb 0x041b -+vendor.name d'TV - - vendor.id usb 0x041d -+vendor.name S3, Inc. - - vendor.id usb 0x041e -+vendor.name Creative Labs - - vendor.id usb 0x041e -&device.id usb 0x1002 -+device.name Nomad II MP3 Player - - vendor.id usb 0x041e -&device.id usb 0x1003 -+device.name Blaster GamePad Cobra - - vendor.id usb 0x041e -&device.id usb 0x1050 -+device.name GamePad Cobra - - vendor.id usb 0x041e -&device.id usb 0x4003 -+device.name VideoBlaster WebCam Go Plus [W9967CF] - - vendor.id usb 0x041e -&device.id usb 0x4004 -+device.name Nomad II MG MP3 Player - - vendor.id usb 0x041e -&device.id usb 0x400a -+device.name PC-Cam 300 - - vendor.id usb 0x041e -&device.id usb 0x400b -+device.name PC-Cam 600 - - vendor.id usb 0x041e -&device.id usb 0x400c -+device.name WebCam 5 [pwc] - - vendor.id usb 0x041f -+vendor.name LCS Telegraphics - - vendor.id usb 0x0420 -+vendor.name Chips and Technologies - - vendor.id usb 0x0421 -+vendor.name Nokia Mobile Phones - - vendor.id usb 0x0422 -+vendor.name ADI Systems Inc. - - vendor.id usb 0x0423 -+vendor.name Computer Access Technology Corp. - - vendor.id usb 0x0423 -&device.id usb 0x000a -+device.name NetMate Ethernet - - vendor.id usb 0x0423 -&device.id usb 0x000c -+device.name NetMate2 Ethernet - - vendor.id usb 0x0423 -&device.id usb 0x000d -+device.name USB Chief Analyzer - - vendor.id usb 0x0423 -&device.id usb 0x1237 -+device.name Andromeda Hub - - vendor.id usb 0x0424 -+vendor.name Standard Microsystems Corp. - - vendor.id usb 0x0425 -+vendor.name Motorola Semiconductors HK, Ltd. - - vendor.id usb 0x0426 -+vendor.name Integrated Device Technology - - vendor.id usb 0x0427 -+vendor.name Motorola Electronics Taiwan Ltd. - - vendor.id usb 0x0428 -+vendor.name Advanced Gravis Computer Tech. Ltd. - - vendor.id usb 0x0428 -&device.id usb 0x4001 -+device.name GamePad Pro - - vendor.id usb 0x0429 -+vendor.name Cirrus Logic - - vendor.id usb 0x042a -+vendor.name Ericsson Austrian, AG - - vendor.id usb 0x042b -+vendor.name Intel Corp. - - vendor.id usb 0x042c -+vendor.name Innovative Semiconductors, Inc. - - vendor.id usb 0x042d -+vendor.name Micronics - - vendor.id usb 0x042e -+vendor.name Acer, Inc. - - vendor.id usb 0x042f -+vendor.name Molex, Inc. - - vendor.id usb 0x0430 -+vendor.name Sun Microsystems - - vendor.id usb 0x0430 -&device.id usb 0x0005 -+device.name Type 6 Keyboard - - vendor.id usb 0x0430 -&device.id usb 0x0100 -+device.name 3-button Mouse - - vendor.id usb 0x0431 -+vendor.name Itac Systems, Inc. - - vendor.id usb 0x0432 -+vendor.name Unisys Corp. - - vendor.id usb 0x0433 -+vendor.name Alps Electric Inc. - - vendor.id usb 0x0433 -&device.id usb 0x1101 -+device.name IBM Game Controller - - vendor.id usb 0x0434 -+vendor.name Samsung Info. Systems America Inc. - - vendor.id usb 0x0435 -+vendor.name Hyundai Electronics America - - vendor.id usb 0x0436 -+vendor.name Taugagreining HF - - vendor.id usb 0x0437 -+vendor.name Framatome Connectors USA - - vendor.id usb 0x0438 -+vendor.name Advanced Micro Devices - - vendor.id usb 0x0439 -+vendor.name Voice Technologies Group - - vendor.id usb 0x043d -+vendor.name Lexmark International Inc. - - vendor.id usb 0x043d -&device.id usb 0x0002 -+device.name Optra E310 Printer - - vendor.id usb 0x043d -&device.id usb 0x0009 -+device.name Optra S2450 Printer - - vendor.id usb 0x043d -&device.id usb 0x000c -+device.name Optra E312 Printer - - vendor.id usb 0x043d -&device.id usb 0x0017 -+device.name Z32 printer - - vendor.id usb 0x043d -&device.id usb 0x0018 -+device.name Z52 Printer - - vendor.id usb 0x043d -&device.id usb 0x0020 -+device.name Z51 Printer - - vendor.id usb 0x043d -&device.id usb 0x003d -+device.name X83 Scan/Print/Copy - - vendor.id usb 0x043e -+vendor.name LG Electronics USA Inc. - - vendor.id usb 0x043e -&device.id usb 0x42bd -+device.name Flatron 795FT Plus Monitor - - vendor.id usb 0x043e -&device.id usb 0x7001 -+device.name MF-PD100 Soul Digital MP3 Player - - vendor.id usb 0x043e -&device.id usb 0x8484 -+device.name LPC-U30 Webcam II - - vendor.id usb 0x043e -&device.id usb 0x8585 -+device.name LPC-UC35 Webcam - - vendor.id usb 0x043f -+vendor.name RadiSys Corp. - - vendor.id usb 0x0440 -+vendor.name Eizo Nanao Corp. - - vendor.id usb 0x0441 -+vendor.name Winbond Systems Lab. - - vendor.id usb 0x0441 -&device.id usb 0x1456 -+device.name Hub - - vendor.id usb 0x0442 -+vendor.name Ericsson Inc. - - vendor.id usb 0x0443 -+vendor.name Gateway 2000 - - vendor.id usb 0x0445 -+vendor.name Lucent Technologies - - vendor.id usb 0x0446 -+vendor.name NMB Technologies, Inc. - - vendor.id usb 0x0447 -+vendor.name Momentum Microsystems - - vendor.id usb 0x044a -+vendor.name Shamrock Tech. Co., Ltd. - - vendor.id usb 0x044b -+vendor.name WSI - - vendor.id usb 0x044c -+vendor.name CCL/ITRI - - vendor.id usb 0x044d -+vendor.name Siemens Nixdorf - - vendor.id usb 0x044e -+vendor.name Alps Electric Co. - - vendor.id usb 0x044e -&device.id usb 0x2002 -+device.name MD-5500 Printer - - vendor.id usb 0x044f -+vendor.name ThrustMaster, Inc. - - vendor.id usb 0x044f -&device.id usb 0xa0a3 -+device.name Fusion Digital GamePad - - vendor.id usb 0x044f -&device.id usb 0xb300 -+device.name Firestorm Dual Power - - vendor.id usb 0x0450 -+vendor.name DFI Inc. - - vendor.id usb 0x0451 -+vendor.name Texas Instruments - - vendor.id usb 0x0451 -&device.id usb 0x1428 -+device.name Hub - - vendor.id usb 0x0451 -&device.id usb 0x1446 -+device.name TUSB2040/2070 Hub - - vendor.id usb 0x0451 -&device.id usb 0x2036 -+device.name TUSB2036 Hub - - vendor.id usb 0x0451 -&device.id usb 0x2046 -+device.name TUSB2046 Hub - - vendor.id usb 0x0451 -&device.id usb 0x2077 -+device.name TUSB2077 Hub - - vendor.id usb 0x0451 -&device.id usb 0xe001 -+device.name GraphLink - - vendor.id usb 0x0452 -+vendor.name Mitsubishi Electronics America, Inc. - - vendor.id usb 0x0453 -+vendor.name CMD Technology - - vendor.id usb 0x0454 -+vendor.name Vobis Microcomputer AG - - vendor.id usb 0x0455 -+vendor.name Telematics International, Inc. - - vendor.id usb 0x0456 -+vendor.name Analog Devices, Inc. - - vendor.id usb 0x0457 -+vendor.name Silicon Integrated Systems Corp. - - vendor.id usb 0x0458 -+vendor.name KYE Systems Corp.(Mouse Systems) - - vendor.id usb 0x0458 -&device.id usb 0x0001 -+device.name Mouse - - vendor.id usb 0x0458 -&device.id usb 0x0002 -+device.name Genius NetMouse Pro - - vendor.id usb 0x0458 -&device.id usb 0x0003 -+device.name Genius NetScroll+ - - vendor.id usb 0x0458 -&device.id usb 0x0100 -+device.name EasyPen Tablet - - vendor.id usb 0x0458 -&device.id usb 0x0101 -+device.name CueCat - - vendor.id usb 0x0458 -&device.id usb 0x1003 -+device.name Genius VideoCam - - vendor.id usb 0x0458 -&device.id usb 0x1004 -+device.name Flight2000 F-23 Joystick - - vendor.id usb 0x0458 -&device.id usb 0x2001 -+device.name ColorPage-Vivid Pro Scanner - - vendor.id usb 0x0459 -+vendor.name Adobe Systems, Inc. - - vendor.id usb 0x045a -+vendor.name Diamond Multimedia Systems - - vendor.id usb 0x045a -&device.id usb 0x0b4a -+device.name SupraMax 2890 56K Modem [Lucent Atlas] - - vendor.id usb 0x045a -&device.id usb 0x0b68 -+device.name SupraMax 56K Modem - - vendor.id usb 0x045b -+vendor.name Hitachi, Ltd. - - vendor.id usb 0x045d -+vendor.name Nortel Networks - - vendor.id usb 0x045e -+vendor.name Microsoft Corp. - - vendor.id usb 0x045e -&device.id usb 0x0008 -+device.name SideWinder Precision Pro - - vendor.id usb 0x045e -&device.id usb 0x0009 -+device.name IntelliMouse - - vendor.id usb 0x045e -&device.id usb 0x000b -+device.name Natural Keyboard Elite - - vendor.id usb 0x045e -&device.id usb 0x0014 -+device.name Digital Sound System 80 - - vendor.id usb 0x045e -&device.id usb 0x001a -+device.name SideWinder Precision Racing Wheel - - vendor.id usb 0x045e -&device.id usb 0x001b -+device.name SideWinder Force Feedback 2 Joystick - - vendor.id usb 0x045e -&device.id usb 0x001d -+device.name Natural Keyboard Pro - - vendor.id usb 0x045e -&device.id usb 0x001e -+device.name IntelliMouse Explorer - - vendor.id usb 0x045e -&device.id usb 0x0024 -+device.name Trackball Explorer - - vendor.id usb 0x045e -&device.id usb 0x0025 -+device.name IntelliEye Mouse - - vendor.id usb 0x045e -&device.id usb 0x0026 -+device.name SideWinder GamePad Pro - - vendor.id usb 0x045e -&device.id usb 0x0027 -+device.name SideWinder PnP GamePad - - vendor.id usb 0x045e -&device.id usb 0x0028 -+device.name SideWinder Dual Strike - - vendor.id usb 0x045e -&device.id usb 0x0029 -+device.name IntelliMouse Optical - - vendor.id usb 0x045e -&device.id usb 0x002b -+device.name Internet Keyboard Pro - - vendor.id usb 0x045e -&device.id usb 0x0034 -+device.name SideWinder Force Feedback Wheel - - vendor.id usb 0x045e -&device.id usb 0x0033 -+device.name Sidewinder Strategic Commander - - vendor.id usb 0x045e -&device.id usb 0x0038 -+device.name SideWinder Precision 2 - - vendor.id usb 0x045e -&device.id usb 0x0039 -+device.name IntelliMouse Optical - - vendor.id usb 0x045e -&device.id usb 0x003b -+device.name SideWinder Game Voice - - vendor.id usb 0x045e -&device.id usb 0x003c -+device.name SideWinder Joystick - - vendor.id usb 0x045e -&device.id usb 0x0040 -+device.name Wheel Mouse Optical - - vendor.id usb 0x0460 -+vendor.name Ace Cad Enterprise Co., Ltd. - - vendor.id usb 0x0461 -+vendor.name Primax Electronics - - vendor.id usb 0x0461 -&device.id usb 0x0300 -+device.name G2-300 Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0301 -+device.name G2E-300 Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0302 -+device.name G2-300 #2 Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0303 -+device.name G2E-300 #2 Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0340 -+device.name Colorado 9600 Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0341 -+device.name Colorado 600u Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0346 -+device.name Memorex Maxx 6136u Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0347 -+device.name Visioneer 4400 Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0360 -+device.name Colorado 19200 Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0361 -+device.name Colorado 1200u Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0380 -+device.name G2-600 Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0381 -+device.name ReadyScan 636i Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0382 -+device.name G2-600 #2 Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0383 -+device.name G2E-600 Scanner - - vendor.id usb 0x0461 -&device.id usb 0x0813 -+device.name IBM UltraPort Camera - - vendor.id usb 0x0461 -&device.id usb 0x081a -+device.name Fujifilm IX-30 Camera - - vendor.id usb 0x0461 -&device.id usb 0x4d01 -+device.name Comfort Keyboard - - vendor.id usb 0x0461 -&device.id usb 0x4d02 -+device.name Mouse-in-a-Box - - vendor.id usb 0x0461 -&device.id usb 0x4d03 -+device.name Kensington Mouse-in-a-box - - vendor.id usb 0x0461 -&device.id usb 0x4d04 -+device.name Mouse - - vendor.id usb 0x0463 -+vendor.name MGE UPS Systems - - vendor.id usb 0x0463 -&device.id usb 0xffff -+device.name Ellipse UPS - - vendor.id usb 0x0464 -+vendor.name AMP Incorporated - - vendor.id usb 0x0467 -+vendor.name AT&T Paradyne - - vendor.id usb 0x0468 -+vendor.name Wieson Electronic Co., Ltd. - - vendor.id usb 0x046a -+vendor.name Cherry Mikroschalter GmbH - - vendor.id usb 0x046a -&device.id usb 0x0001 -+device.name My3000 Keyboard - - vendor.id usb 0x046a -&device.id usb 0x0003 -+device.name My3000 Hub - - vendor.id usb 0x046b -+vendor.name American Megatrends - - vendor.id usb 0x046c -+vendor.name Toshiba Corp., Digital Media Equipment - - vendor.id usb 0x046d -+vendor.name Logitech Inc. - - vendor.id usb 0x046d -&device.id usb 0x0203 -+device.name M2452 Keyboard - - vendor.id usb 0x046d -&device.id usb 0x0301 -+device.name M4848 Mouse - - vendor.id usb 0x046d -&device.id usb 0x0401 -+device.name HP PageScan - - vendor.id usb 0x046d -&device.id usb 0x0402 -+device.name NEC PageScan - - vendor.id usb 0x046d -&device.id usb 0x040f -+device.name Logitech/Storm PageScan - - vendor.id usb 0x046d -&device.id usb 0x0801 -+device.name QuickCam Home - - vendor.id usb 0x046d -&device.id usb 0x0810 -+device.name QuickCam Pro - - vendor.id usb 0x046d -&device.id usb 0x0840 -+device.name QuickCam Express - - vendor.id usb 0x046d -&device.id usb 0x0850 -+device.name QuickCam Web - - vendor.id usb 0x046d -&device.id usb 0x0870 -+device.name QuickCam Express - - vendor.id usb 0x046d -&device.id usb 0x08b0 -+device.name QuickCam 3000 Pro [pwc] - - vendor.id usb 0x046d -&device.id usb 0x0900 -+device.name ClickSmart 310 - - vendor.id usb 0x046d -&device.id usb 0x0901 -+device.name ClickSmart 510 - - vendor.id usb 0x046d -&device.id usb 0x0950 -+device.name Pocket Camera - - vendor.id usb 0x046d -&device.id usb 0xc000 -+device.name N43 [Pilot Mouse] - - vendor.id usb 0x046d -&device.id usb 0xc001 -+device.name N48/M-BB48 [FirstMouse Plus] - - vendor.id usb 0x046d -&device.id usb 0xc002 -+device.name M-BA47 [MouseMan Plus] - - vendor.id usb 0x046d -&device.id usb 0xc004 -+device.name WingMan Gaming Mouse - - vendor.id usb 0x046d -&device.id usb 0xc00b -+device.name MouseMan Wheel - - vendor.id usb 0x046d -&device.id usb 0xc00c -+device.name Optical Wheel Mouse - - vendor.id usb 0x046d -&device.id usb 0xc00e -+device.name Optical Mouse - - vendor.id usb 0x046d -&device.id usb 0xc012 -+device.name Optical Mouse - - vendor.id usb 0x046d -&device.id usb 0xc030 -+device.name iFeel Mouse - - vendor.id usb 0x046d -&device.id usb 0xc032 -+device.name MouseMan iFeel - - vendor.id usb 0x046d -&device.id usb 0xc202 -+device.name WingMan Formula - - vendor.id usb 0x046d -&device.id usb 0xc207 -+device.name WingMan Extreme Digital 3D - - vendor.id usb 0x046d -&device.id usb 0xc208 -+device.name WingMan Gamepad Extreme - - vendor.id usb 0x046d -&device.id usb 0xc209 -+device.name WingMan Gamepad - - vendor.id usb 0x046d -&device.id usb 0xc20a -+device.name WingMan RumblePad - - vendor.id usb 0x046d -&device.id usb 0xc20c -+device.name WingMan Precision - - vendor.id usb 0x046d -&device.id usb 0xc281 -+device.name WingMan Force - - vendor.id usb 0x046d -&device.id usb 0xc283 -+device.name WingMan Force 3D - - vendor.id usb 0x046d -&device.id usb 0xc285 -+device.name WingMan Strike Force 3D - - vendor.id usb 0x046d -&device.id usb 0xc291 -+device.name WingMan Formula Force - - vendor.id usb 0x046d -&device.id usb 0xc295 -+device.name Momo Force Steering Wheel - - vendor.id usb 0x046d -&device.id usb 0xc2a0 -+device.name Wingman Force Feedback Mouse - - vendor.id usb 0x046d -&device.id usb 0xc308 -+device.name Internet Navigator Keyboard - - vendor.id usb 0x046d -&device.id usb 0xc401 -+device.name TrackMan Marble Wheel - - vendor.id usb 0x046d -&device.id usb 0xc501 -+device.name Cordless Mouse Receiver - - vendor.id usb 0x046d -&device.id usb 0xc503 -+device.name Cordless Mouse+Keyboard Receiver - - vendor.id usb 0x046d -&device.id usb 0xc504 -+device.name Cordless Mouse+Keyboard Receiver - - vendor.id usb 0x046d -&device.id usb 0xd001 -+device.name QuickCam Pro - - vendor.id usb 0x046e -+vendor.name Behavior Tech. Computer - - vendor.id usb 0x046e -&device.id usb 0x6782 -+device.name BTC 7932 mouse+keyboard - - vendor.id usb 0x046f -+vendor.name Crystal Semiconductor - - vendor.id usb 0x0471 -+vendor.name Philips - - vendor.id usb 0x0471 -&device.id usb 0x0101 -+device.name DSS350 Digital Speaker System - - vendor.id usb 0x0471 -&device.id usb 0x0104 -+device.name DSS330 Digital Speaker System [uda1321] - - vendor.id usb 0x0471 -&device.id usb 0x0201 -+device.name Hub - - vendor.id usb 0x0471 -&device.id usb 0x0222 -+device.name Creative Nomad Jukebox - - vendor.id usb 0x0471 -&device.id usb 0x0302 -+device.name PCA645VC WebCam [pwc] - - vendor.id usb 0x0471 -&device.id usb 0x0303 -+device.name PCA646VC WebCam [pwc] - - vendor.id usb 0x0471 -&device.id usb 0x0304 -+device.name Askey VC010 WebCam [pwc] - - vendor.id usb 0x0471 -&device.id usb 0x0307 -+device.name PCVC675K WebCam [pwc] - - vendor.id usb 0x0471 -&device.id usb 0x0308 -+device.name PCVC680K WebCam [pwc] - - vendor.id usb 0x0471 -&device.id usb 0x030c -+device.name PCVC690K WebCam [pwc] - - vendor.id usb 0x0471 -&device.id usb 0x0310 -+device.name PCVC730K WebCam [pwc] - - vendor.id usb 0x0471 -&device.id usb 0x0311 -+device.name PCVC740K ToUcam Pro [pwc] - - vendor.id usb 0x0471 -&device.id usb 0x0312 -+device.name PCVC750K WebCam [pwc] - - vendor.id usb 0x0471 -&device.id usb 0x0471 -+device.name Digital Speaker System - - vendor.id usb 0x0471 -&device.id usb 0x0601 -+device.name OVU1020 IR Dongle (Kbd+Mouse) - - vendor.id usb 0x0471 -&device.id usb 0x0701 -+device.name 150P1 TFT Display - - vendor.id usb 0x0471 -&device.id usb 0x1801 -+device.name Diva MP3 player - - vendor.id usb 0x0472 -+vendor.name Chicony - - vendor.id usb 0x0472 -&device.id usb 0x0065 -+device.name PFU-65 Keyboard - - vendor.id usb 0x0473 -+vendor.name Sanyo Information Business Co., Ltd. - - vendor.id usb 0x0474 -+vendor.name Sanyo Electric Co. Ltd. - - vendor.id usb 0x0475 -+vendor.name Relisys/Teco Information System - - vendor.id usb 0x0476 -+vendor.name AESP - - vendor.id usb 0x0477 -+vendor.name Seagate Technology - - vendor.id usb 0x0478 -+vendor.name Connectix Corp. - - vendor.id usb 0x0478 -&device.id usb 0x0001 -+device.name QuickCam - - vendor.id usb 0x0478 -&device.id usb 0x0002 -+device.name QuickClip - - vendor.id usb 0x0479 -+vendor.name Advanced Peripheral Laboratories - - vendor.id usb 0x047a -+vendor.name USAR Systems - - vendor.id usb 0x047b -+vendor.name Silitek Corp. - - vendor.id usb 0x047b -&device.id usb 0x0002 -+device.name Keyboard and Mouse - - vendor.id usb 0x047b -&device.id usb 0x0101 -+device.name BlueTooth Keyboard and Mouse - - vendor.id usb 0x047b -&device.id usb 0x1002 -+device.name HP ScanJet 4300c Parallel Port - - vendor.id usb 0x047c -+vendor.name Dell Computer Corp. - - vendor.id usb 0x047d -+vendor.name Kensington - - vendor.id usb 0x047d -&device.id usb 0x1003 -+device.name Orbit TrackBall - - vendor.id usb 0x047d -&device.id usb 0x1005 -+device.name TurboBall - - vendor.id usb 0x047d -&device.id usb 0x5002 -+device.name VideoCam CABO II - - vendor.id usb 0x047d -&device.id usb 0x5003 -+device.name VideoCam - - vendor.id usb 0x047d -&device.id usb 0x4006 -+device.name Gravis Eliminator AfterShock - - vendor.id usb 0x047d -&device.id usb 0x4005 -+device.name Gravis Eliminator GamePad Pro - - vendor.id usb 0x047d -&device.id usb 0x4008 -+device.name Gravis Destroyer TiltPad - - vendor.id usb 0x047e -+vendor.name Agere (Lucent) - - vendor.id usb 0x047e -&device.id usb 0x1001 -+device.name USS720 Parallel Port - - vendor.id usb 0x047e -&device.id usb 0xf101 -+device.name Atlas Modem - - vendor.id usb 0x047f -+vendor.name Plantronics, Inc. - - vendor.id usb 0x0480 -+vendor.name Toshiba America Info. Systems, Inc. - - vendor.id usb 0x0481 -+vendor.name Zenith Data Systems - - vendor.id usb 0x0482 -+vendor.name Kyocera Electronics, Inc. - - vendor.id usb 0x0483 -+vendor.name SGS Thomson Microelectronics - - vendor.id usb 0x0483 -&device.id usb 0x7554 -+device.name 56k SoftModem - - vendor.id usb 0x0484 -+vendor.name Specialix - - vendor.id usb 0x0485 -+vendor.name Nokia Monitors - - vendor.id usb 0x0486 -+vendor.name ASUS Computers Inc. - - vendor.id usb 0x0487 -+vendor.name Stewart Connector - - vendor.id usb 0x0488 -+vendor.name Cirque Corp. - - vendor.id usb 0x0489 -+vendor.name Foxconn / Hon Hai - - vendor.id usb 0x0489 -&device.id usb 0x0502 -+device.name SmartMedia Card Reader Firmware Loader - - vendor.id usb 0x0489 -&device.id usb 0x0503 -+device.name SmartMedia Card Reader - - vendor.id usb 0x048a -+vendor.name S-MOS Systems, Inc. - - vendor.id usb 0x048c -+vendor.name Alps Electric Ireland Ltd. - - vendor.id usb 0x048d -+vendor.name Integrated Technology Express - - vendor.id usb 0x048f -+vendor.name Eicon Tech. - - vendor.id usb 0x0490 -+vendor.name United Microelectronics Corp. - - vendor.id usb 0x0491 -+vendor.name Capetronic - - vendor.id usb 0x0492 -+vendor.name Samsung SemiConductor, Inc. - - vendor.id usb 0x0493 -+vendor.name MAG Technology Co., Ltd. - - vendor.id usb 0x0495 -+vendor.name ESS Technology, Inc. - - vendor.id usb 0x0496 -+vendor.name Micron Electronics - - vendor.id usb 0x0497 -+vendor.name Smile International - - vendor.id usb 0x0498 -+vendor.name Capetronic (Kaohsiung) Corp. - - vendor.id usb 0x0499 -+vendor.name Yamaha Corp. - - vendor.id usb 0x0499 -&device.id usb 0x6001 -+device.name CRW2200UX Lightspeed 2 External CD-RW Drive - - vendor.id usb 0x049a -+vendor.name Gandalf Technologies Ltd. - - vendor.id usb 0x049b -+vendor.name Curtis Computer Products - - vendor.id usb 0x049c -+vendor.name Acer Advanced Labs, Inc. - - vendor.id usb 0x049c -&device.id usb 0x0002 -+device.name Keyboard (???) - - vendor.id usb 0x049d -+vendor.name VLSI Technology - - vendor.id usb 0x049f -+vendor.name Compaq Computer Corp. - - vendor.id usb 0x049f -&device.id usb 0x0003 -+device.name iPAQ PocketPC - - vendor.id usb 0x049f -&device.id usb 0x000e -+device.name Internet Keyboard - - vendor.id usb 0x049f -&device.id usb 0x0018 -+device.name PA-1/PA-2 MP3 Player - - vendor.id usb 0x049f -&device.id usb 0x0033 -+device.name Evo N600c Builtin Wireless Ethernet [orinoco] - - vendor.id usb 0x049f -&device.id usb 0x505a -+device.name SA-11x0 based Linux Device, or Itsy (experimental) - - vendor.id usb 0x049f -&device.id usb 0x8511 -+device.name iPAQ Networking 10/100 Ethernet [pegasus2] - - vendor.id usb 0x04a0 -+vendor.name Digital Equipment Corp. - - vendor.id usb 0x04a1 -+vendor.name SystemSoft Corp. - - vendor.id usb 0x04a2 -+vendor.name FirePower Systems - - vendor.id usb 0x04a3 -+vendor.name Trident Microsystems Inc. - - vendor.id usb 0x04a4 -+vendor.name Hitachi, Ltd. - - vendor.id usb 0x04a5 -+vendor.name Acer Peripherals Inc. - - vendor.id usb 0x04a5 -&device.id usb 0x0001 -+device.name Keyboard - - vendor.id usb 0x04a5 -&device.id usb 0x12a6 -+device.name AcerScan C310U - - vendor.id usb 0x04a5 -&device.id usb 0x1a20 -+device.name Prisa 310U - - vendor.id usb 0x04a5 -&device.id usb 0x1a2a -+device.name Prisa 620U - - vendor.id usb 0x04a5 -&device.id usb 0x2022 -+device.name Prisa 320U/340U - - vendor.id usb 0x04a5 -&device.id usb 0x2040 -+device.name Prisa 620UT - - vendor.id usb 0x04a5 -&device.id usb 0x2060 -+device.name Prisa 620U+/640U - - vendor.id usb 0x04a5 -&device.id usb 0x207e -+device.name Prisa 640BU - - vendor.id usb 0x04a5 -&device.id usb 0x20b0 -+device.name S2W 3300U/4300U - - vendor.id usb 0x04a5 -&device.id usb 0x20be -+device.name Prisa 640BT - - vendor.id usb 0x04a5 -&device.id usb 0x20c0 -+device.name Prisa 1240UT - - vendor.id usb 0x04a5 -&device.id usb 0x20de -+device.name S2W 4300U+ - - vendor.id usb 0x04a5 -&device.id usb 0x20fe -+device.name SW2 5300U - - vendor.id usb 0x04a5 -&device.id usb 0x9213 -+device.name Kbd Hub - - vendor.id usb 0x04a6 -+vendor.name Nokia Display Products - - vendor.id usb 0x04a7 -+vendor.name Visioneer - - vendor.id usb 0x04a7 -&device.id usb 0x0211 -+device.name OneTouch 7600 Scanner - - vendor.id usb 0x04a7 -&device.id usb 0x0221 -+device.name OneTouch 5300 Scanner - - vendor.id usb 0x04a7 -&device.id usb 0x0224 -+device.name Microtek Scanport 3000 - - vendor.id usb 0x04a7 -&device.id usb 0x0231 -+device.name 6100 Scanner - - vendor.id usb 0x04a7 -&device.id usb 0x0311 -+device.name 6200 EPP/USB Scanner - - vendor.id usb 0x04a7 -&device.id usb 0x0321 -+device.name OneTouch 8100 EPP/USB Scanner - - vendor.id usb 0x04a7 -&device.id usb 0x0331 -+device.name OneTouch 8600 EPP/USB Scanner - - vendor.id usb 0x04a8 -+vendor.name Multivideo Labs, Inc. - - vendor.id usb 0x04a9 -+vendor.name Canon Inc. - - vendor.id usb 0x04a9 -&device.id usb 0x1051 -+device.name BJC-3000 Color Printer - - vendor.id usb 0x04a9 -&device.id usb 0x1056 -+device.name BJC-2110 Color Printer - - vendor.id usb 0x04a9 -&device.id usb 0x105b -+device.name S600 Printer - - vendor.id usb 0x04a9 -&device.id usb 0x105d -+device.name S450 Printer - - vendor.id usb 0x04a9 -&device.id usb 0x1062 -+device.name S500 Printer - - vendor.id usb 0x04a9 -&device.id usb 0x1064 -+device.name S300 Printer - - vendor.id usb 0x04a9 -&device.id usb 0x2204 -+device.name CanoScan FB630U - - vendor.id usb 0x04a9 -&device.id usb 0x2205 -+device.name CanoScan FB1210U - - vendor.id usb 0x04a9 -&device.id usb 0x2206 -+device.name CanoScan N650U - - vendor.id usb 0x04a9 -&device.id usb 0x2207 -+device.name CanoScan 1220U - - vendor.id usb 0x04a9 -&device.id usb 0x2208 -+device.name CanoScan D660U - - vendor.id usb 0x04a9 -&device.id usb 0x220d -+device.name CanoScan N670U - - vendor.id usb 0x04a9 -&device.id usb 0x3041 -+device.name PowerShot S10 - - vendor.id usb 0x04a9 -&device.id usb 0x3043 -+device.name PowerShot S20 - - vendor.id usb 0x04a9 -&device.id usb 0x3045 -+device.name PowerShot S100 - - vendor.id usb 0x04a9 -&device.id usb 0x3047 -+device.name Digital IXUS - - vendor.id usb 0x04a9 -&device.id usb 0x3048 -+device.name PowerShot G1 - - vendor.id usb 0x04a9 -&device.id usb 0x3049 -+device.name PowerShot Pro90 IS - - vendor.id usb 0x04a9 -&device.id usb 0x304b -+device.name IXY Digital 300 - - vendor.id usb 0x04a9 -&device.id usb 0x304e -+device.name PowerShot A20 - - vendor.id usb 0x04a9 -&device.id usb 0x304f -+device.name PowerShot A10 - - vendor.id usb 0x04a9 -&device.id usb 0x3056 -+device.name PowerShot S40 - - vendor.id usb 0x04a9 -&device.id usb 0x3058 -+device.name PowerShot A40 - - vendor.id usb 0x04aa -+vendor.name DaeWoo Telecom, Ltd. - - vendor.id usb 0x04ab -+vendor.name Chromatic Research - - vendor.id usb 0x04ac -+vendor.name Micro Audiometrics Corp. - - vendor.id usb 0x04ad -+vendor.name Dooin Electronics - - vendor.id usb 0x04af -+vendor.name Winnov L.P. - - vendor.id usb 0x04b0 -+vendor.name Nikon Corp. - - vendor.id usb 0x04b0 -&device.id usb 0x0102 -+device.name Coolpix 990 - - vendor.id usb 0x04b0 -&device.id usb 0x0103 -+device.name Coolpix 880 - - vendor.id usb 0x04b0 -&device.id usb 0x0104 -+device.name Coolpix 995 - - vendor.id usb 0x04b0 -&device.id usb 0x0106 -+device.name Coolpix 775 - - vendor.id usb 0x04b0 -&device.id usb 0x0107 -+device.name Coolpix 5000 - - vendor.id usb 0x04b1 -+vendor.name Pan International - - vendor.id usb 0x04b3 -+vendor.name IBM Corp. - - vendor.id usb 0x04b3 -&device.id usb 0x3004 -+device.name Media Access Pro Keyboard - - vendor.id usb 0x04b3 -&device.id usb 0x3100 -+device.name NetVista Mouse - - vendor.id usb 0x04b3 -&device.id usb 0x4427 -+device.name Portable CD ROM - - vendor.id usb 0x04b3 -&device.id usb 0x4525 -+device.name Double sided CRT - - vendor.id usb 0x04b3 -&device.id usb 0x4550 -+device.name NVRAM (128 KB) - - vendor.id usb 0x04b3 -&device.id usb 0x4554 -+device.name Cash Drawer - - vendor.id usb 0x04b3 -&device.id usb 0x4580 -+device.name Hub w/ NVRAM - - vendor.id usb 0x04b3 -&device.id usb 0x4581 -+device.name 4800-2xx Hub w/ Cash Drawer - - vendor.id usb 0x04b3 -&device.id usb 0x4604 -+device.name Keyboard w/ Card Reader - - vendor.id usb 0x04b3 -&device.id usb 0x4671 -+device.name 4820 LCD w/ MSR/KB - - vendor.id usb 0x04b4 -+vendor.name Cypress Semiconductor - - vendor.id usb 0x04b4 -&device.id usb 0x0000 -+device.name Dacal DC-101 CD Library - - vendor.id usb 0x04b4 -&device.id usb 0x0001 -+device.name Mouse - - vendor.id usb 0x04b4 -&device.id usb 0x0002 -+device.name CY7C63x0x Thermometer - - vendor.id usb 0x04b4 -&device.id usb 0x1002 -+device.name CY7C63001 R100 FM Radio - - vendor.id usb 0x04b4 -&device.id usb 0x8613 -+device.name CY7C68013 EZ-USB FX2 USB 2.0 Development Kit - - vendor.id usb 0x04b4 -&device.id usb 0xd5d5 -+device.name CY7C63x0x Zoltrix Z-Boxer GamePad - - vendor.id usb 0x04b5 -+vendor.name ROHM LSI Systems, Inc. - - vendor.id usb 0x04b6 -+vendor.name Hint Corp. - - vendor.id usb 0x04b7 -+vendor.name Compal Electronics, Inc. - - vendor.id usb 0x04b8 -+vendor.name Seiko Epson Corp. - - vendor.id usb 0x04b8 -&device.id usb 0x0001 -+device.name Stylus Color 740 / Photo 750 - - vendor.id usb 0x04b8 -&device.id usb 0x0002 -+device.name ISD Smart Cable for Mac - - vendor.id usb 0x04b8 -&device.id usb 0x0003 -+device.name ISD Smart Cable - - vendor.id usb 0x04b8 -&device.id usb 0x0005 -+device.name Stylus Printer - - vendor.id usb 0x04b8 -&device.id usb 0x0101 -+device.name Perfection 636 - - vendor.id usb 0x04b8 -&device.id usb 0x0103 -+device.name Perfection 610 - - vendor.id usb 0x04b8 -&device.id usb 0x0104 -+device.name Perfection 1200 - - vendor.id usb 0x04b8 -&device.id usb 0x0106 -+device.name Stylus Scan 2500 - - vendor.id usb 0x04b8 -&device.id usb 0x0107 -+device.name Expression 1600U - - vendor.id usb 0x04b8 -&device.id usb 0x010a -+device.name Perfection 1640SU - - vendor.id usb 0x04b8 -&device.id usb 0x010b -+device.name Perfection 1240 - - vendor.id usb 0x04b8 -&device.id usb 0x010c -+device.name Perfection 640 - - vendor.id usb 0x04b8 -&device.id usb 0x010f -+device.name Perfection 1250 - - vendor.id usb 0x04b8 -&device.id usb 0x0110 -+device.name Perfection 1650 - - vendor.id usb 0x04b8 -&device.id usb 0x0202 -+device.name Receipt Printer M129C - - vendor.id usb 0x04b8 -&device.id usb 0x0601 -+device.name Stylus Photo 875DC Card Reader - - vendor.id usb 0x04b8 -&device.id usb 0x0602 -+device.name Stylus Photo 895 Card Reader - - vendor.id usb 0x04b9 -+vendor.name Rainbow Technologies, Inc. - - vendor.id usb 0x04b9 -&device.id usb 0x1000 -+device.name iKey 1000 Token - - vendor.id usb 0x04b9 -&device.id usb 0x1001 -+device.name iKey 1200 Token - - vendor.id usb 0x04b9 -&device.id usb 0x1200 -+device.name iKey 2000 Token - - vendor.id usb 0x04b9 -&device.id usb 0x1202 -+device.name iKey 2032 Token - - vendor.id usb 0x04b9 -&device.id usb 0x1300 -+device.name iKey 3000 Token - - vendor.id usb 0x04ba -+vendor.name Toucan Systems Ltd. - - vendor.id usb 0x04bb -+vendor.name I-O Data Device, Inc. - - vendor.id usb 0x04bb -&device.id usb 0x0904 -+device.name ET/TX Ethernet [pegasus] - - vendor.id usb 0x04bb -&device.id usb 0x0913 -+device.name ET/TX-S Ethernet [pegasus2] - - vendor.id usb 0x04bd -+vendor.name Toshiba Electronics Taiwan Corp. - - vendor.id usb 0x04be -+vendor.name Telia Research AB - - vendor.id usb 0x04bf -+vendor.name TDK Corp. - - vendor.id usb 0x04bf -&device.id usb 0x0100 -+device.name MediaReader CF - - vendor.id usb 0x04c1 -+vendor.name U.S. Robotics (3Com) - - vendor.id usb 0x04c1 -&device.id usb 0x0082 -+device.name OfficeConnect Analog Modem - - vendor.id usb 0x04c1 -&device.id usb 0x008f -+device.name Pro ISDN TA - - vendor.id usb 0x04c1 -&device.id usb 0x009d -+device.name HomeConnect WebCam [vicam] - - vendor.id usb 0x04c1 -&device.id usb 0x3021 -+device.name 56k Voice FaxModem Pro - - vendor.id usb 0x04c2 -+vendor.name Methode Electronics Far East PTE Ltd. - - vendor.id usb 0x04c3 -+vendor.name Maxi Switch, Inc. - - vendor.id usb 0x04c4 -+vendor.name Lockheed Martin Energy Research - - vendor.id usb 0x04c5 -+vendor.name Fujitsu Ltd. - - vendor.id usb 0x04c6 -+vendor.name Toshiba America Electronic Components - - vendor.id usb 0x04c7 -+vendor.name Micro Macro Technologies - - vendor.id usb 0x04c8 -+vendor.name Konica Corp. - - vendor.id usb 0x04c8 -&device.id usb 0x0720 -+device.name Digital Color Camera - - vendor.id usb 0x04c8 -&device.id usb 0x0721 -+device.name e-miniD Camera - - vendor.id usb 0x04c8 -&device.id usb 0x0723 -+device.name KD-200Z Camera - - vendor.id usb 0x04ca -+vendor.name Lite-On Technology Corp. - - vendor.id usb 0x04cb -+vendor.name Fuji Photo Film Co., Ltd. - - vendor.id usb 0x04cb -&device.id usb 0x0100 -+device.name FinePix 1300 / 1400 / 4700 Zoom digital camrea - - vendor.id usb 0x04cb -&device.id usb 0x0103 -+device.name FinePix NX-700 printer - - vendor.id usb 0x04cc -+vendor.name Philips Semiconductors - - vendor.id usb 0x04cc -&device.id usb 0x1122 -+device.name Hub - - vendor.id usb 0x04cc -&device.id usb 0x8116 -+device.name Camera - - vendor.id usb 0x04cd -+vendor.name Tatung Co. Of America - - vendor.id usb 0x04ce -+vendor.name ScanLogic Corp. - - vendor.id usb 0x04ce -&device.id usb 0x0002 -+device.name SL11R-IDE IDE Bridge - - vendor.id usb 0x04cf -+vendor.name Myson Technology Inc. - - vendor.id usb 0x04d0 -+vendor.name Digi International - - vendor.id usb 0x04d1 -+vendor.name ITT Canon - - vendor.id usb 0x04d2 -+vendor.name Altec Lansing Technologies - - vendor.id usb 0x04d2 -&device.id usb 0x0311 -+device.name ADA-310 Speakers - - vendor.id usb 0x04d2 -&device.id usb 0xff05 -+device.name ADA-305 Speakers - - vendor.id usb 0x04d3 -+vendor.name VidUS, Inc. - - vendor.id usb 0x04d4 -+vendor.name LSI Logic Corp. - - vendor.id usb 0x04d5 -+vendor.name Forte Technologies, Inc. - - vendor.id usb 0x04d6 -+vendor.name Mentor Graphics - - vendor.id usb 0x04d7 -+vendor.name Oki Semiconductor - - vendor.id usb 0x04d8 -+vendor.name Microchip Technology Inc. - - vendor.id usb 0x04d9 -+vendor.name Holtek Semiconductor, Inc. - - vendor.id usb 0x04da -+vendor.name Panasonic (Matsushita) - - vendor.id usb 0x04db -+vendor.name Hypertec Pty Ltd. - - vendor.id usb 0x04dc -+vendor.name Huan Hsin Co. - - vendor.id usb 0x04dd -+vendor.name Sharp Corp. - - vendor.id usb 0x04dd -&device.id usb 0x8004 -+device.name Zaurus SL-5000D/SL-5500 PDA - - vendor.id usb 0x04de -+vendor.name MindShare, Inc. - - vendor.id usb 0x04df -+vendor.name Interlink Electronics - - vendor.id usb 0x04e1 -+vendor.name Iiyama North America Inc. - - vendor.id usb 0x04e1 -&device.id usb 0x0201 -+device.name Monitor Hub - - vendor.id usb 0x04e2 -+vendor.name Exar Corp. - - vendor.id usb 0x04e3 -+vendor.name Zilog - - vendor.id usb 0x04e4 -+vendor.name ACC Microelectronics - - vendor.id usb 0x04e5 -+vendor.name Promise Technology - - vendor.id usb 0x04e6 -+vendor.name Shuttle Technology Inc. - - vendor.id usb 0x04e6 -&device.id usb 0x0001 -+device.name E-USB ATA Bridge - - vendor.id usb 0x04e6 -&device.id usb 0x0002 -+device.name eUSCSI SCSI Bridge - - vendor.id usb 0x04e6 -&device.id usb 0x0003 -+device.name eUSB SmartMedia Card Reader - - vendor.id usb 0x04e6 -&device.id usb 0x0005 -+device.name eUSB SmartMedia/CompactFlash Card Reader - - vendor.id usb 0x04e6 -&device.id usb 0x0006 -+device.name eUSB SmartMedia Card Reader - - vendor.id usb 0x04e6 -&device.id usb 0x0007 -+device.name Hifd - - vendor.id usb 0x04e6 -&device.id usb 0x0101 -+device.name E-USB ATA Bridge - - vendor.id usb 0x04e6 -&device.id usb 0x1010 -+device.name USBAT-2 CompactFlash Card Reader - - vendor.id usb 0x04e7 -+vendor.name Elo TouchSystems - - vendor.id usb 0x04e7 -&device.id usb 0x0001 -+device.name TouchScreen - - vendor.id usb 0x04e8 -+vendor.name Samsung Electronics Co., Ltd. - - vendor.id usb 0x04e8 -&device.id usb 0x5a03 -+device.name Yepp MP3 Player - - vendor.id usb 0x04e9 -+vendor.name PC-Tel Inc. - - vendor.id usb 0x04ea -+vendor.name Brooktree Corp. - - vendor.id usb 0x04eb -+vendor.name Northstar Systems, Inc. - - vendor.id usb 0x04ec -+vendor.name Tokyo Electron Limited - - vendor.id usb 0x04ed -+vendor.name Annabooks - - vendor.id usb 0x04ef -+vendor.name Pacific Electronic International, Inc. - - vendor.id usb 0x04f0 -+vendor.name Daewoo Electronics Co., Ltd. - - vendor.id usb 0x04f1 -+vendor.name Victor Company of Japan (JVC) - - vendor.id usb 0x04f1 -&device.id usb 0x0001 -+device.name GC-QX3 Digital Still Camera - - vendor.id usb 0x04f1 -&device.id usb 0x0004 -+device.name GR-DVL815U Digital Video Camera - - vendor.id usb 0x04f2 -+vendor.name Chicony Electronics Co., Ltd. - - vendor.id usb 0x04f2 -&device.id usb 0x0001 -+device.name KU-8933 Keyboard - - vendor.id usb 0x04f2 -&device.id usb 0x0002 -+device.name NT68P81 Keyboard - - vendor.id usb 0x04f2 -&device.id usb 0x0112 -+device.name KU-8933 Keyboard with PS/2 Mouse port - - vendor.id usb 0x04f3 -+vendor.name Elan Microelectronics Corportation - - vendor.id usb 0x04f4 -+vendor.name Harting Elektronik Inc. - - vendor.id usb 0x04f5 -+vendor.name Fujitsu-ICL Systems, Inc. - - vendor.id usb 0x04f6 -+vendor.name Norand Corp. - - vendor.id usb 0x04f7 -+vendor.name Newnex Technology Corp. - - vendor.id usb 0x04f8 -+vendor.name FuturePlus Systems - - vendor.id usb 0x04f9 -+vendor.name Brother Industries, Ltd. - - vendor.id usb 0x04f9 -&device.id usb 0x0002 -+device.name HL-1050 Laser Printer - - vendor.id usb 0x04f9 -&device.id usb 0x0007 -+device.name HL-1250 Laser Printer - - vendor.id usb 0x04f9 -&device.id usb 0x0008 -+device.name HL-1270 Laser Printer - - vendor.id usb 0x04fa -+vendor.name Dallas Semiconductor - - vendor.id usb 0x04fa -&device.id usb 0x2490 -+device.name DS1490F 2-in-1 Fob, 1-Wire adapter - - vendor.id usb 0x04fa -&device.id usb 0x4201 -+device.name DS4201 Audio DAC - - vendor.id usb 0x04fb -+vendor.name Biostar Microtech Int'l Corp. - - vendor.id usb 0x04fc -+vendor.name Sunplus Technology Co. - - vendor.id usb 0x04fd -+vendor.name Soliton Systems, K.K. - - vendor.id usb 0x04fe -+vendor.name PFU Limited - - vendor.id usb 0x04ff -+vendor.name E-CMOS Corp. - - vendor.id usb 0x0500 -+vendor.name Siam United Hi-Tech - - vendor.id usb 0x0501 -+vendor.name DDK Electronics, Inc. - - vendor.id usb 0x0502 -+vendor.name Acer, Inc. - - vendor.id usb 0x0502 -&device.id usb 0xd001 -+device.name Divio NW801/DVC-V6+ Digital Camera - - vendor.id usb 0x0503 -+vendor.name Hitachi America Ltd. - - vendor.id usb 0x0504 -+vendor.name Hayes Microcomputer Products - - vendor.id usb 0x0506 -+vendor.name 3Com Corp. - - vendor.id usb 0x0506 -&device.id usb 0x03e8 -+device.name 3C19250 Ethernet [klsi] - - vendor.id usb 0x0506 -&device.id usb 0x4601 -+device.name 3C460B USB 10/100 Ethernet Adaptor - - vendor.id usb 0x0506 -&device.id usb 0xf002 -+device.name 3CP4218 ADSL Modem (pre-init) - - vendor.id usb 0x0506 -&device.id usb 0xf003 -+device.name 3CP4218 ADSL Modem - - vendor.id usb 0x0506 -&device.id usb 0xf100 -+device.name 3CP4218 ADSL Modem (pre-init) - - vendor.id usb 0x0507 -+vendor.name Hosiden Corp. - - vendor.id usb 0x0508 -+vendor.name Clarion Co., Ltd. - - vendor.id usb 0x0509 -+vendor.name Aztech Systems Ltd. - - vendor.id usb 0x050a -+vendor.name Cinch Connectors - - vendor.id usb 0x050b -+vendor.name Cable System International - - vendor.id usb 0x050c -+vendor.name InnoMedia, Inc. - - vendor.id usb 0x050d -+vendor.name Belkin Components - - vendor.id usb 0x050d -&device.id usb 0x0103 -+device.name F5U103 Serial Adapter [etek] - - vendor.id usb 0x050d -&device.id usb 0x0109 -+device.name F5U109 PDA Adapter - - vendor.id usb 0x050d -&device.id usb 0x0115 -+device.name SCSI Adapter - - vendor.id usb 0x050d -&device.id usb 0x0121 -+device.name F5D5050 100Mbps Ethernet - - vendor.id usb 0x050d -&device.id usb 0x0208 -+device.name Video Adapter [nt1004] - - vendor.id usb 0x050d -&device.id usb 0x0805 -+device.name Nostromo N50 GamePad - - vendor.id usb 0x050d -&device.id usb 0x1203 -+device.name F5U120-PC Serial Port - - vendor.id usb 0x050e -+vendor.name Neon Technology, Inc. - - vendor.id usb 0x050f -+vendor.name KC Technology Inc. - - vendor.id usb 0x050f -&device.id usb 0x0003 -+device.name KC82C160S Hub - - vendor.id usb 0x050f -&device.id usb 0x0180 -+device.name KC-180 IrDA Dongle - - vendor.id usb 0x0510 -+vendor.name Sejin Electron Inc. - - vendor.id usb 0x0511 -+vendor.name N'Able (DataBook) Technologies, Inc. - - vendor.id usb 0x0512 -+vendor.name Hualon Microelectronics Corp. - - vendor.id usb 0x0513 -+vendor.name digital-X, Inc. - - vendor.id usb 0x0514 -+vendor.name FCI/Berg Electronics Group - - vendor.id usb 0x0515 -+vendor.name ACTC - - vendor.id usb 0x0516 -+vendor.name Longwell Electronics - - vendor.id usb 0x0517 -+vendor.name Butterfly Communications - - vendor.id usb 0x0518 -+vendor.name EzKEY Corp. - - vendor.id usb 0x0519 -+vendor.name Star Micronics Co., Ltd. - - vendor.id usb 0x051a -+vendor.name WYSE Technology - - vendor.id usb 0x051b -+vendor.name Silicon Graphics - - vendor.id usb 0x051c -+vendor.name Shuttle Inc. - - vendor.id usb 0x051d -+vendor.name American Power Conversion - - vendor.id usb 0x051d -&device.id usb 0x0002 -+device.name Back-UPS Pro 500 - - vendor.id usb 0x051e -+vendor.name Scientific Atlanta - - vendor.id usb 0x051f -+vendor.name IO Systems (Elite Electronics), Inc. - - vendor.id usb 0x0520 -+vendor.name Taiwan Semiconductor Manufacturing Co. - - vendor.id usb 0x0521 -+vendor.name Airborn Connectors - - vendor.id usb 0x0522 -+vendor.name Advanced Connectek USA Inc. - - vendor.id usb 0x0523 -+vendor.name ATEN GmbH - - vendor.id usb 0x0524 -+vendor.name Sola Electronics - - vendor.id usb 0x0525 -+vendor.name Netchip Technology Inc. - - vendor.id usb 0x0525 -&device.id usb 0x1080 -+device.name NET1080 USB-USB Bridge - - vendor.id usb 0x0526 -+vendor.name Temic MHS S.A. - - vendor.id usb 0x0527 -+vendor.name ALTRA - - vendor.id usb 0x0528 -+vendor.name ATI Technologies, Inc. - - vendor.id usb 0x0528 -&device.id usb 0x7561 -+device.name TV Wonder - - vendor.id usb 0x0529 -+vendor.name Aladdin Knowledge Systems - - vendor.id usb 0x0529 -&device.id usb 0x0001 -+device.name HASP v0.06 - - vendor.id usb 0x0529 -&device.id usb 0x030b -+device.name eToken R1 v3.1.3.x - - vendor.id usb 0x0529 -&device.id usb 0x0313 -+device.name eToken R1 v3.2.3.x - - vendor.id usb 0x0529 -&device.id usb 0x031b -+device.name eToken R1 v3.3.3.x - - vendor.id usb 0x0529 -&device.id usb 0x0323 -+device.name eToken R1 v3.4.3.x - - vendor.id usb 0x0529 -&device.id usb 0x050c -+device.name eToken Pro v4.1.5.x - - vendor.id usb 0x0529 -&device.id usb 0x0412 -+device.name eToken R2 v2.2.4.x - - vendor.id usb 0x0529 -&device.id usb 0x041a -+device.name eToken R2 v2.2.4.x - - vendor.id usb 0x0529 -&device.id usb 0x0422 -+device.name eToken R2 v2.4.4.x - - vendor.id usb 0x0529 -&device.id usb 0x042a -+device.name eToken R2 v2.5.4.x - - vendor.id usb 0x052a -+vendor.name Crescent Heart Software - - vendor.id usb 0x052b -+vendor.name Tekom Technologies, Inc. - - vendor.id usb 0x052c -+vendor.name Canon Information System - - vendor.id usb 0x052d -+vendor.name Avid Electronics Corp. - - vendor.id usb 0x052e -+vendor.name Standard Microsystems Corp. - - vendor.id usb 0x052f -+vendor.name Unicore Software, Inc. - - vendor.id usb 0x0530 -+vendor.name American Microsystems Inc. - - vendor.id usb 0x0531 -+vendor.name Wacom Technology Corp. - - vendor.id usb 0x0532 -+vendor.name Systech Corp. - - vendor.id usb 0x0533 -+vendor.name Alcatel Mobile Phones - - vendor.id usb 0x0534 -+vendor.name Motorola - - vendor.id usb 0x0535 -+vendor.name LIH TZU Electric Co., Ltd. - - vendor.id usb 0x0536 -+vendor.name Welch Allyn Inc. - - vendor.id usb 0x0537 -+vendor.name Inventec Corp. - - vendor.id usb 0x0538 -+vendor.name Santa Cruz Operation - - vendor.id usb 0x0539 -+vendor.name Shyh Shiun Terminals Co. Ltd. - - vendor.id usb 0x053a -+vendor.name Preh Werke GmbH & Co. KG - - vendor.id usb 0x053b -+vendor.name Global Village Communication - - vendor.id usb 0x053c -+vendor.name Institut of Microelectronic & Mechatronic Systems - - vendor.id usb 0x053d -+vendor.name Silicon Architect - - vendor.id usb 0x053e -+vendor.name Mobility Electronics - - vendor.id usb 0x053f -+vendor.name Synopsys, Inc. - - vendor.id usb 0x0540 -+vendor.name UniAccess AB - - vendor.id usb 0x0540 -&device.id usb 0x0101 -+device.name Panache Surf ISDN TA - - vendor.id usb 0x0541 -+vendor.name Sirf Technology, Inc. - - vendor.id usb 0x0543 -+vendor.name ViewSonic Corp. - - vendor.id usb 0x0543 -&device.id usb 0x00fe -+device.name G773 Monitor Hub - - vendor.id usb 0x0543 -&device.id usb 0x00ff -+device.name P815 Monitor Hub - - vendor.id usb 0x0543 -&device.id usb 0x4153 -+device.name ViewSonic G773 Control (?) - - vendor.id usb 0x0544 -+vendor.name Cristie Electronics Ltd. - - vendor.id usb 0x0545 -+vendor.name Xirlink, Inc. - - vendor.id usb 0x0545 -&device.id usb 0x8002 -+device.name IBM NetCamera - - vendor.id usb 0x0545 -&device.id usb 0x800c -+device.name Veo StingRay - - vendor.id usb 0x0545 -&device.id usb 0x8080 -+device.name IBM C-It WebCam - - vendor.id usb 0x0546 -+vendor.name Polaroid Corp. - - vendor.id usb 0x0547 -+vendor.name Anchor Chips Inc. - - vendor.id usb 0x0547 -&device.id usb 0x2131 -+device.name AN2131 EZUSB Microcontroller - - vendor.id usb 0x0547 -&device.id usb 0x2235 -+device.name AN2235 EZUSB-FX Microcontroller - - vendor.id usb 0x0547 -&device.id usb 0x2720 -+device.name AN2720 USB-USB Bridge - - vendor.id usb 0x0547 -&device.id usb 0x2727 -+device.name Xircom PGUNET USB-USB Bridge - - vendor.id usb 0x0547 -&device.id usb 0x2810 -+device.name Cypress USB ATAPI Bridge - - vendor.id usb 0x0547 -&device.id usb 0x9999 -+device.name AN2131 uninitialized (?) - - vendor.id usb 0x0548 -+vendor.name Tyan Computer Corp. - - vendor.id usb 0x0549 -+vendor.name Pixera Corp. - - vendor.id usb 0x054a -+vendor.name Fujitsu Microelectronics, Inc. - - vendor.id usb 0x054b -+vendor.name New Media Corp. - - vendor.id usb 0x054c -+vendor.name Sony Corp. - - vendor.id usb 0x054c -&device.id usb 0x0010 -+device.name DSC-S30/S70/S75/F505V/F505/FD92 Cybershot/Mavica Digital Camera - - vendor.id usb 0x054c -&device.id usb 0x0023 -+device.name CD Writer - - vendor.id usb 0x054c -&device.id usb 0x0024 -+device.name Mavica CD-1000 Camera - - vendor.id usb 0x054c -&device.id usb 0x0025 -+device.name NW-MS7 Walkman MemoryStick Reader - - vendor.id usb 0x054c -&device.id usb 0x002d -+device.name MSAC-US1 MemoryStick Reader - - vendor.id usb 0x054c -&device.id usb 0x002e -+device.name Sony HandyCam MemoryStick Reader - - vendor.id usb 0x054c -&device.id usb 0x0032 -+device.name MemoryStick MSC-U01 Reader - - vendor.id usb 0x054c -&device.id usb 0x0038 -+device.name Clie PEG-S300/D PalmOS PDA - - vendor.id usb 0x054c -&device.id usb 0x0058 -+device.name Clie PEG-N7x0C PalmOS PDA Mass Storage - - vendor.id usb 0x054c -&device.id usb 0x0066 -+device.name Clie PEG-N7x0C PalmOS PDA Serial - - vendor.id usb 0x054c -&device.id usb 0x0069 -+device.name Memorystick MSC-U03 Reader - - vendor.id usb 0x054c -&device.id usb 0x0099 -+device.name Clie NR70 PDA Mass Storage - - vendor.id usb 0x054c -&device.id usb 0x009a -+device.name Clie NR70 PDA Serial - - vendor.id usb 0x054d -+vendor.name Try Corp. - - vendor.id usb 0x054e -+vendor.name Proside Corp. - - vendor.id usb 0x054f -+vendor.name WYSE Technology Taiwan - - vendor.id usb 0x0550 -+vendor.name Fuji Xerox Co., Ltd. - - vendor.id usb 0x0551 -+vendor.name CompuTrend Systems, Inc. - - vendor.id usb 0x0552 -+vendor.name Philips Monitors - - vendor.id usb 0x0553 -+vendor.name VLSI Vision Ltd. - - vendor.id usb 0x0553 -&device.id usb 0x0002 -+device.name CPiA WebCam - - vendor.id usb 0x0553 -&device.id usb 0x0202 -+device.name Aiptek PenCam 1 - - vendor.id usb 0x0554 -+vendor.name Dictaphone Corp. - - vendor.id usb 0x0555 -+vendor.name ANAM S&T Co., Ltd. - - vendor.id usb 0x0556 -+vendor.name Asahi Kasei Microsystems Co., Ltd. - - vendor.id usb 0x0557 -+vendor.name ATEN International Co. Ltd. - - vendor.id usb 0x0557 -&device.id usb 0x2001 -+device.name UC-1284 Printer Port - - vendor.id usb 0x0557 -&device.id usb 0x2002 -+device.name 10Mbps Ethernet [klsi] - - vendor.id usb 0x0557 -&device.id usb 0x2004 -+device.name UC-100KM PS/2 Mouse and Keyboard adapter - - vendor.id usb 0x0557 -&device.id usb 0x2006 -+device.name UC-1284B Printer Port - - vendor.id usb 0x0557 -&device.id usb 0x2007 -+device.name UC-110T 100Mbps Ethernet [pegasus] - - vendor.id usb 0x0557 -&device.id usb 0x2008 -+device.name UC-232A Serial Port [pl2303] - - vendor.id usb 0x0557 -&device.id usb 0x2202 -+device.name CS124U Miniview II KVM Switch - - vendor.id usb 0x0557 -&device.id usb 0x2600 -+device.name IDE Bridge - - vendor.id usb 0x0557 -&device.id usb 0x4000 -+device.name DSB-650 10Mbps Ethernet [klsi] - - vendor.id usb 0x0558 -+vendor.name Truevision, Inc. - - vendor.id usb 0x0559 -+vendor.name Cadence Design Systems, Inc. - - vendor.id usb 0x055a -+vendor.name Kenwood USA - - vendor.id usb 0x055b -+vendor.name KnowledgeTek, Inc. - - vendor.id usb 0x055c -+vendor.name Proton Electronic Ind. - - vendor.id usb 0x055d -+vendor.name Samsung Electro-Mechanics Co. - - vendor.id usb 0x055d -&device.id usb 0x9000 -+device.name AnyCam [pwc] - - vendor.id usb 0x055d -&device.id usb 0x9001 -+device.name MPC-C30 AnyCam Premium for Notebooks [pwc] - - vendor.id usb 0x055e -+vendor.name CTX Opto-Electronics Corp. - - vendor.id usb 0x055f -+vendor.name Mustek Systems Inc. - - vendor.id usb 0x055f -&device.id usb 0x0001 -+device.name ScanExpress 1200 CU - - vendor.id usb 0x055f -&device.id usb 0x0002 -+device.name ScanExpress 600 CU - - vendor.id usb 0x055f -&device.id usb 0x0003 -+device.name ScanExpress 1200 USB - - vendor.id usb 0x055f -&device.id usb 0x0006 -+device.name ScanExpress 1200 UB - - vendor.id usb 0x055f -&device.id usb 0x0008 -+device.name ScanExpress 1200 CU Plus - - vendor.id usb 0x055f -&device.id usb 0x0218 -+device.name BearPaw 2400 TA - - vendor.id usb 0x055f -&device.id usb 0xa800 -+device.name MDC 800 Camera - - vendor.id usb 0x0560 -+vendor.name Interface Co., Ltd. - - vendor.id usb 0x0561 -+vendor.name Oasis Design, Inc. - - vendor.id usb 0x0562 -+vendor.name Telex Communications Inc. - - vendor.id usb 0x0562 -&device.id usb 0x0001 -+device.name Enhanced Microphone - - vendor.id usb 0x0563 -+vendor.name Immersion Corp. - - vendor.id usb 0x0564 -+vendor.name Chinon Industries, Inc. - - vendor.id usb 0x0565 -+vendor.name Peracom Networks, Inc. - - vendor.id usb 0x0565 -&device.id usb 0x0001 -+device.name Serial Port [etek] - - vendor.id usb 0x0565 -&device.id usb 0x0002 -+device.name Enet Ethernet [klsi] - - vendor.id usb 0x0565 -&device.id usb 0x0003 -+device.name @Home Networks Ethernet [klsi] - - vendor.id usb 0x0565 -&device.id usb 0x0005 -+device.name Enet2 Ethernet [klsi] - - vendor.id usb 0x0567 -+vendor.name Xyratex Int'l Ltd. - - vendor.id usb 0x0568 -+vendor.name Quartz Ingenierie - - vendor.id usb 0x0569 -+vendor.name SegaSoft - - vendor.id usb 0x056a -+vendor.name Wacom Co., Ltd. - - vendor.id usb 0x056a -&device.id usb 0x0000 -+device.name PenPartner - - vendor.id usb 0x056a -&device.id usb 0x0010 -+device.name Graphire - - vendor.id usb 0x056a -&device.id usb 0x0011 -+device.name Graphire 2 - - vendor.id usb 0x056a -&device.id usb 0x0020 -+device.name Intuos 4x5 - - vendor.id usb 0x056a -&device.id usb 0x0021 -+device.name Intuos 6x8 - - vendor.id usb 0x056a -&device.id usb 0x0022 -+device.name Intuos 9x12 - - vendor.id usb 0x056a -&device.id usb 0x0023 -+device.name Intuos 12x12 - - vendor.id usb 0x056a -&device.id usb 0x0024 -+device.name Intuos 12x18 - - vendor.id usb 0x056a -&device.id usb 0x0031 -+device.name PL500 - - vendor.id usb 0x056a -&device.id usb 0x0043 -+device.name Intuos 2 - - vendor.id usb 0x056b -+vendor.name Decicon Incorporated - - vendor.id usb 0x056c -+vendor.name eTEK Labs - - vendor.id usb 0x056c -&device.id usb 0x8007 -+device.name Kwik232 Serial Port - - vendor.id usb 0x056c -&device.id usb 0x8101 -+device.name KwikLink USB-USB Bridge - - vendor.id usb 0x056d -+vendor.name EIZO Corp. - - vendor.id usb 0x056d -&device.id usb 0x0000 -+device.name Hub - - vendor.id usb 0x056d -&device.id usb 0x0001 -+device.name Monitor - - vendor.id usb 0x056e -+vendor.name Elecom Co., Ltd. - - vendor.id usb 0x056e -&device.id usb 0x0002 -+device.name 29UO Mouse - - vendor.id usb 0x056e -&device.id usb 0x4002 -+device.name Laneed 100Mbps Ethernet LD-USB/TX [pegasus] - - vendor.id usb 0x056f -+vendor.name Korea Data Systems Co., Ltd. - - vendor.id usb 0x0570 -+vendor.name Epson America - - vendor.id usb 0x0571 -+vendor.name Interex, Inc. - - vendor.id usb 0x0572 -+vendor.name Conexant Systems (Rockwell), Inc. - - vendor.id usb 0x0572 -&device.id usb 0x0001 -+device.name Ezcam II WebCam - - vendor.id usb 0x0572 -&device.id usb 0x0002 -+device.name Ezcam II WebCam - - vendor.id usb 0x0572 -&device.id usb 0x1232 -+device.name V.90 modem - - vendor.id usb 0x0573 -+vendor.name Nogatech Ltd. - - vendor.id usb 0x0573 -&device.id usb 0x2000 -+device.name X10 va10a Wireless Camera - - vendor.id usb 0x0573 -&device.id usb 0x4d01 -+device.name Hauppauge USB TV - - vendor.id usb 0x0573 -&device.id usb 0x4d02 -+device.name NT1003 Frame Grabber - - vendor.id usb 0x0573 -&device.id usb 0x4d11 -+device.name NT1003 Frame Grabber - - vendor.id usb 0x0574 -+vendor.name City University of Hong Kong - - vendor.id usb 0x0575 -+vendor.name Philips Creative Display Solutions - - vendor.id usb 0x0576 -+vendor.name BAFO/Quality Computer Accessories - - vendor.id usb 0x0577 -+vendor.name ELSA - - vendor.id usb 0x0578 -+vendor.name Intrinsix Corp. - - vendor.id usb 0x0579 -+vendor.name GVC Corp. - - vendor.id usb 0x057a -+vendor.name Samsung Electronics America - - vendor.id usb 0x057b -+vendor.name Y-E Data, Inc. - - vendor.id usb 0x057b -&device.id usb 0x0000 -+device.name FlashBuster-U Floppy - - vendor.id usb 0x057c -+vendor.name AVM GmbH - - vendor.id usb 0x057c -&device.id usb 0x2800 -+device.name ISDN-Connector TA - - vendor.id usb 0x057d -+vendor.name Shark Multimedia Inc. - - vendor.id usb 0x057e -+vendor.name Nintendo Co., Ltd. - - vendor.id usb 0x057f -+vendor.name QuickShot Limited - - vendor.id usb 0x0580 -+vendor.name Denron Inc. - - vendor.id usb 0x0581 -+vendor.name Racal Data Group - - vendor.id usb 0x0582 -+vendor.name Roland Corp. - - vendor.id usb 0x0582 -&device.id usb 0x0002 -+device.name MPU64 Midi Interface - - vendor.id usb 0x0582 -&device.id usb 0x0003 -+device.name Sound Canvas SC-8850 - - vendor.id usb 0x0582 -&device.id usb 0x0005 -+device.name Edirol UM-2 MIDI Adapter - - vendor.id usb 0x0583 -+vendor.name Padix (Rockfire) Co. Ltd. - - vendor.id usb 0x0583 -&device.id usb 0x2030 -+device.name RM-203 USB Nest [mode 1] - - vendor.id usb 0x0583 -&device.id usb 0x2031 -+device.name RM-203 USB Nest [mode 2] - - vendor.id usb 0x0583 -&device.id usb 0x2032 -+device.name RM-203 USB Nest [mode 3] - - vendor.id usb 0x0583 -&device.id usb 0x2033 -+device.name RM-203 USB Nest [mode 4] - - vendor.id usb 0x0583 -&device.id usb 0x3050 -+device.name QF-305u Gamepad - - vendor.id usb 0x0583 -&device.id usb 0x7070 -+device.name QF-707u Joystick [Bazooka] - - vendor.id usb 0x0584 -+vendor.name RATOC System Inc. - - vendor.id usb 0x0585 -+vendor.name FlashPoint Technology, Inc. - - vendor.id usb 0x0586 -+vendor.name ZyXEL Communications Corp. - - vendor.id usb 0x0586 -&device.id usb 0x1000 -+device.name Omni NET Modem / ISDN TA - - vendor.id usb 0x0587 -+vendor.name America Kotobuki Electronics Ind. - - vendor.id usb 0x0588 -+vendor.name Sapien Design - - vendor.id usb 0x0589 -+vendor.name Victron - - vendor.id usb 0x058a -+vendor.name Nohau Corp. - - vendor.id usb 0x058b -+vendor.name Infineon Technologies - - vendor.id usb 0x058c -+vendor.name In Focus Systems - - vendor.id usb 0x058d -+vendor.name Micrel Semiconductor - - vendor.id usb 0x058e -+vendor.name Tripath Technology Inc. - - vendor.id usb 0x058f -+vendor.name Alcor Micro, Inc. - - vendor.id usb 0x058f -&device.id usb 0x2802 -+device.name Monterey Keyboard - - vendor.id usb 0x058f -&device.id usb 0x9213 -+device.name MacAlly Kbd Hub - - vendor.id usb 0x058f -&device.id usb 0x9215 -+device.name AU9814 Hub - - vendor.id usb 0x058f -&device.id usb 0x9254 -+device.name Hub - - vendor.id usb 0x058f -&device.id usb 0x9410 -+device.name MicroConnectors/StrongMan Keyboard - - vendor.id usb 0x058f -&device.id usb 0x9472 -+device.name Monterey/NEC Kbd Hub - - vendor.id usb 0x0590 -+vendor.name Omron Corp. - - vendor.id usb 0x0590 -&device.id usb 0x0004 -+device.name Cable Modem - - vendor.id usb 0x0591 -+vendor.name Questra Consulting - - vendor.id usb 0x0592 -+vendor.name Powerware Corp. - - vendor.id usb 0x0593 -+vendor.name Incite - - vendor.id usb 0x0594 -+vendor.name Princeton Graphic Systems - - vendor.id usb 0x0595 -+vendor.name Zoran Microelectronics Ltd. - - vendor.id usb 0x0596 -+vendor.name MicroTouch Systems Inc. - - vendor.id usb 0x0596 -&device.id usb 0x0001 -+device.name Touchscreen - - vendor.id usb 0x0597 -+vendor.name Trisignal Communications - - vendor.id usb 0x0598 -+vendor.name Niigata Canotec Co., Inc. - - vendor.id usb 0x0599 -+vendor.name Brilliance Semiconductor Inc. - - vendor.id usb 0x059a -+vendor.name Spectrum Signal Processing Inc. - - vendor.id usb 0x059b -+vendor.name Iomega Corp. - - vendor.id usb 0x059b -&device.id usb 0x0001 -+device.name Zip 100 (Type 1) - - vendor.id usb 0x059b -&device.id usb 0x000b -+device.name Zip 100 (Type 2) - - vendor.id usb 0x059b -&device.id usb 0x0030 -+device.name Zip 250 (Ver 1) - - vendor.id usb 0x059b -&device.id usb 0x0031 -+device.name Zip 100 (Type 3) - - vendor.id usb 0x059b -&device.id usb 0x0032 -+device.name Zip 250 (Ver 2) - - vendor.id usb 0x059b -&device.id usb 0x0040 -+device.name SCSI Bridge - - vendor.id usb 0x059b -&device.id usb 0x0050 -+device.name Zip CD 650 Writer - - vendor.id usb 0x059b -&device.id usb 0x006d -+device.name HipZip MP3 Player - - vendor.id usb 0x059c -+vendor.name A-Trend Technology Co., Ltd. - - vendor.id usb 0x059d -+vendor.name Advanced Input Devices - - vendor.id usb 0x059e -+vendor.name Intelligent Instrumentation - - vendor.id usb 0x059f -+vendor.name LaCie - - vendor.id usb 0x059f -&device.id usb 0xa601 -+device.name HardDrive - - vendor.id usb 0x05a0 -+vendor.name Vetronix Corp. - - vendor.id usb 0x05a1 -+vendor.name USC Corp. - - vendor.id usb 0x05a2 -+vendor.name Fuji Film Microdevices Co. Ltd. - - vendor.id usb 0x05a3 -+vendor.name V Automation Inc. - - vendor.id usb 0x05a4 -+vendor.name Ortek Technology, Inc. - - vendor.id usb 0x05a4 -&device.id usb 0x9731 -+device.name MCK-600W Keyboard - - vendor.id usb 0x05a5 -+vendor.name Sampo Technology Corp. - - vendor.id usb 0x05a6 -+vendor.name Cisco Systems - - vendor.id usb 0x05a7 -+vendor.name Bose Corp. - - vendor.id usb 0x05a8 -+vendor.name Spacetec IMC Corp. - - vendor.id usb 0x05a9 -+vendor.name OmniVision Technologies, Inc. - - vendor.id usb 0x05a9 -&device.id usb 0x0511 -+device.name OV511 WebCam - - vendor.id usb 0x05a9 -&device.id usb 0x0518 -+device.name OV518 WebCam - - vendor.id usb 0x05a9 -&device.id usb 0xa511 -+device.name OV511+ WebCam - - vendor.id usb 0x05aa -+vendor.name Utilux South China Ltd. - - vendor.id usb 0x05ab -+vendor.name In-System Design - - vendor.id usb 0x05ab -&device.id usb 0x0002 -+device.name Parallel Port - - vendor.id usb 0x05ab -&device.id usb 0x0031 -+device.name ATA Bridge - - vendor.id usb 0x05ab -&device.id usb 0x0060 -+device.name USB 2.0 Bridge - - vendor.id usb 0x05ab -&device.id usb 0x0200 -+device.name USS725 ATA Bridge - - vendor.id usb 0x05ab -&device.id usb 0x0202 -+device.name ATA Bridge - - vendor.id usb 0x05ab -&device.id usb 0x081a -+device.name ATA Bridge - - vendor.id usb 0x05ac -+vendor.name Apple Computer - - vendor.id usb 0x05ac -&device.id usb 0x0201 -+device.name iMac Keyboard [ALPS M2452] - - vendor.id usb 0x05ac -&device.id usb 0x0202 -+device.name Apple Keyboard [ALPS] - - vendor.id usb 0x05ac -&device.id usb 0x0206 -+device.name Apple Extended Keyboard [Mitsumi] - - vendor.id usb 0x05ac -&device.id usb 0x0301 -+device.name iMac Mouse [Mitsumi/Logitech] - - vendor.id usb 0x05ac -&device.id usb 0x0302 -+device.name Apple Optical Mouse [Fujitsu] - - vendor.id usb 0x05ac -&device.id usb 0x1001 -+device.name Apple Keyboard Hub [ALPS] - - vendor.id usb 0x05ac -&device.id usb 0x1002 -+device.name Apple Extended Keyboard Hub [Mitsumi] - - vendor.id usb 0x05ad -+vendor.name Y.C.Cable U.S.A., Inc. - - vendor.id usb 0x05ae -+vendor.name Synopsys, Inc. - - vendor.id usb 0x05af -+vendor.name Jing-Mold Enterprise Co., Ltd. - - vendor.id usb 0x05b0 -+vendor.name Fountain Technologies, Inc. - - vendor.id usb 0x05b1 -+vendor.name First International Computer, Inc. - - vendor.id usb 0x05b4 -+vendor.name LG Semicon Co., Ltd. - - vendor.id usb 0x05b5 -+vendor.name Dialogic Corp - - vendor.id usb 0x05b6 -+vendor.name Proxima Corp. - - vendor.id usb 0x05b7 -+vendor.name Medianix Semiconductor, Inc. - - vendor.id usb 0x05b8 -+vendor.name Agiler, Inc. - - vendor.id usb 0x05b8 -&device.id usb 0x3002 -+device.name Scroll Mouse - - vendor.id usb 0x05b9 -+vendor.name Philips Research Laboratories - - vendor.id usb 0x05ba -+vendor.name DigitalPersona, Inc. - - vendor.id usb 0x05bd -+vendor.name RAFI GmbH & Co. KG - - vendor.id usb 0x05be -+vendor.name Raychem Corp. - - vendor.id usb 0x05bf -+vendor.name S & S Research - - vendor.id usb 0x05c0 -+vendor.name Keil Software - - vendor.id usb 0x05c1 -+vendor.name Kawasaki Steel - - vendor.id usb 0x05c2 -+vendor.name Media Phonics (Suisse) S.A. - - vendor.id usb 0x05c5 -+vendor.name Digi International Inc. - - vendor.id usb 0x05c6 -+vendor.name Qualcomm, Inc. - - vendor.id usb 0x05c6 -&device.id usb 0x3100 -+device.name CDMA Wireless Modem/Phone - - vendor.id usb 0x05c6 -&device.id usb 0x3196 -+device.name CDMA Wireless Modem - - vendor.id usb 0x05c6 -&device.id usb 0x3197 -+device.name CDMA Wireless Modem/Phone - - vendor.id usb 0x05c7 -+vendor.name Qtronix Corp - - vendor.id usb 0x05c7 -&device.id usb 0x1001 -+device.name Lynx Mouse - - vendor.id usb 0x05c7 -&device.id usb 0x2011 -+device.name Scorpius Keyboard - - vendor.id usb 0x05c8 -+vendor.name Cheng Uei Precision Industry Co., Ltd. - - vendor.id usb 0x05c9 -+vendor.name Semtech Corp. - - vendor.id usb 0x05ca -+vendor.name Ricoh Company Ltd. - - vendor.id usb 0x05ca -&device.id usb 0x0101 -+device.name RDC-5300 Digital Camera - - vendor.id usb 0x05ca -&device.id usb 0x2201 -+device.name RDC-7 Digital Camera - - vendor.id usb 0x05cb -+vendor.name PowerVision Technologies Inc. - - vendor.id usb 0x05cb -&device.id usb 0x1483 -+device.name Trust CombiScan 19200 - - vendor.id usb 0x05cc -+vendor.name ELSA AG - - vendor.id usb 0x05cc -&device.id usb 0x2100 -+device.name MicroLink ISDN Office - - vendor.id usb 0x05cc -&device.id usb 0x2219 -+device.name MicroLink ISDN - - vendor.id usb 0x05cc -&device.id usb 0x2265 -+device.name MicroLink 56k - - vendor.id usb 0x05cc -&device.id usb 0x2280 -+device.name MicroLink 56k Fun - - vendor.id usb 0x05cc -&device.id usb 0x3000 -+device.name Micolink USB2Ethernet [pegasus] - - vendor.id usb 0x05cd -+vendor.name Silicom Ltd. - - vendor.id usb 0x05ce -+vendor.name SICAN GmbH - - vendor.id usb 0x05cf -+vendor.name Sung Forn Co. Ltd. - - vendor.id usb 0x05d0 -+vendor.name Lunar Corp. - - vendor.id usb 0x05d1 -+vendor.name Brainboxes Limited - - vendor.id usb 0x05d2 -+vendor.name Wave Systems Corp. - - vendor.id usb 0x05d6 -+vendor.name Philips Semiconductors, CICT - - vendor.id usb 0x05d7 -+vendor.name Thomas & Betts Corp. - - vendor.id usb 0x05d7 -&device.id usb 0x0099 -+device.name 10Mbps Ethernet [klsi] - - vendor.id usb 0x05d8 -+vendor.name Ultima Electronics Corp. - - vendor.id usb 0x05d8 -&device.id usb 0x4002 -+device.name Lifetec LT9385 Scanner - - vendor.id usb 0x05d9 -+vendor.name Axiohm Transaction Solutions - - vendor.id usb 0x05da -+vendor.name Microtek International Inc. - - vendor.id usb 0x05da -&device.id usb 0x0093 -+device.name ScanMaker V6USL - - vendor.id usb 0x05da -&device.id usb 0x0094 -+device.name Phantom 336CX/C3 - - vendor.id usb 0x05da -&device.id usb 0x0099 -+device.name ScanMaker X6/X6U - - vendor.id usb 0x05da -&device.id usb 0x009a -+device.name Phantom C6 - - vendor.id usb 0x05da -&device.id usb 0x00a0 -+device.name Phantom 336CX/C3 (#2) - - vendor.id usb 0x05da -&device.id usb 0x00b6 -+device.name ScanMaker V6UPL - - vendor.id usb 0x05da -&device.id usb 0x30cf -+device.name ScanMaker 4800 - - vendor.id usb 0x05da -&device.id usb 0x40ca -+device.name ScanMaker 3600 - - vendor.id usb 0x05da -&device.id usb 0x80a3 -+device.name ScanMaker V6USL (#2) - - vendor.id usb 0x05da -&device.id usb 0x80ac -+device.name ScanMaker V6UL/SpicyU - - vendor.id usb 0x05dc -+vendor.name Lexar Media, Inc. - - vendor.id usb 0x05dd -+vendor.name Delta Electronics Inc. - - vendor.id usb 0x05e0 -+vendor.name Symbol Technologies - - vendor.id usb 0x05e3 -+vendor.name Genesys Logic, Inc. - - vendor.id usb 0x05e3 -&device.id usb 0x000a -+device.name Keyboard with PS/2 Port - - vendor.id usb 0x05e3 -&device.id usb 0x000b -+device.name Karna Razor BoomSlang 2000 Mouse - - vendor.id usb 0x05e3 -&device.id usb 0x0120 -+device.name Pacific Image Electronics PrimeFilm 1800u slide/negative scanner - - vendor.id usb 0x05e3 -&device.id usb 0x0300 -+device.name GLUSB98PT Parallel Port - - vendor.id usb 0x05e3 -&device.id usb 0x0502 -+device.name GL620USB GeneLink USB-USB Bridge - - vendor.id usb 0x05e3 -&device.id usb 0x0700 -+device.name SIIG US2256 CompactFlash Card Reader - - vendor.id usb 0x05e3 -&device.id usb 0x1205 -+device.name Afilias Optical Mouse H3003 - - vendor.id usb 0x05e5 -+vendor.name Fuji Electric Co., Ltd. - - vendor.id usb 0x05e6 -+vendor.name Keithley Instruments - - vendor.id usb 0x05e9 -+vendor.name Kawasaki LSI - - vendor.id usb 0x05e9 -&device.id usb 0x0008 -+device.name KL5KUSB101B Ethernet [klsi] - - vendor.id usb 0x05e9 -&device.id usb 0x0009 -+device.name Sony 10Mbps Ethernet [pegasus] - - vendor.id usb 0x05eb -+vendor.name FFC Limited - - vendor.id usb 0x05ef -+vendor.name AVB, Inc. [anko?] - - vendor.id usb 0x05ef -&device.id usb 0x020a -+device.name Top Shot Pegasus Joystick - - vendor.id usb 0x05ef -&device.id usb 0x8884 -+device.name Mag Turbo Force Wheel - - vendor.id usb 0x05ef -&device.id usb 0x8888 -+device.name Top Shot Force Feedback Racing Wheel - - vendor.id usb 0x05f0 -+vendor.name Canopus Co., Ltd. - - vendor.id usb 0x05f0 -&device.id usb 0x0101 -+device.name DA-Port DAC - - vendor.id usb 0x05f2 -+vendor.name Dexin Corp., Ltd. - - vendor.id usb 0x05f3 -+vendor.name PI Engineering, Inc. - - vendor.id usb 0x05f3 -&device.id usb 0x020b -+device.name PS2 Adapter - - vendor.id usb 0x05f5 -+vendor.name Unixtar Technology Inc. - - vendor.id usb 0x05f6 -+vendor.name AOC International - - vendor.id usb 0x05f7 -+vendor.name RFC Distribution(s) PTE Ltd. - - vendor.id usb 0x05f9 -+vendor.name PSC Scanning, Inc. - - vendor.id usb 0x05fa -+vendor.name Siemens Telecommunications Systems Limited - - vendor.id usb 0x05fc -+vendor.name Harman Multimedia - - vendor.id usb 0x05fd -+vendor.name InterAct, Inc. - - vendor.id usb 0x05fd -&device.id usb 0x0251 -+device.name Raider Pro - - vendor.id usb 0x05fd -&device.id usb 0x0253 -+device.name ProPad 8 Digital - - vendor.id usb 0x05fd -&device.id usb 0x262a -+device.name 3dfx HammerHead FX - - vendor.id usb 0x05fd -&device.id usb 0xdaae -+device.name Game Shark - - vendor.id usb 0x05fe -+vendor.name Chic Technology Corp. - - vendor.id usb 0x05fe -&device.id usb 0x0001 -+device.name Mouse - - vendor.id usb 0x05fe -&device.id usb 0x0007 -+device.name Twinhead Mouse - - vendor.id usb 0x05fe -&device.id usb 0x0009 -+device.name Inland Pro 4500/5000 Mouse - - vendor.id usb 0x05fe -&device.id usb 0x0011 -+device.name Browser Mouse - - vendor.id usb 0x05ff -+vendor.name LeCroy Corp. - - vendor.id usb 0x0600 -+vendor.name Barco Display Systems - - vendor.id usb 0x0601 -+vendor.name Jazz Hipster Corp. - - vendor.id usb 0x0602 -+vendor.name Vista Imaging Inc. - - vendor.id usb 0x0602 -&device.id usb 0x1001 -+device.name ViCam WebCam - - vendor.id usb 0x0603 -+vendor.name Novatek Microelectronics Corp. - - vendor.id usb 0x0603 -&device.id usb 0x6871 -+device.name Mouse - - vendor.id usb 0x0604 -+vendor.name Jean Co, Ltd. - - vendor.id usb 0x0606 -+vendor.name Royal Information Electronics Co., Ltd. - - vendor.id usb 0x0607 -+vendor.name Bridge Information Co., Ltd. - - vendor.id usb 0x0609 -+vendor.name SMK Manufacturing Inc. - - vendor.id usb 0x060a -+vendor.name Worthington Data Solutions, Inc. - - vendor.id usb 0x060b -+vendor.name Solid Year (?) - - vendor.id usb 0x060b -&device.id usb 0x0001 -+device.name MacAlly Keyboard - - vendor.id usb 0x060b -&device.id usb 0x2101 -+device.name Solid Year Keyboard - - vendor.id usb 0x060c -+vendor.name EEH Datalink GmbH - - vendor.id usb 0x060f -+vendor.name Joinsoon Electronics Mfg. Co., Ltd. - - vendor.id usb 0x0611 -+vendor.name Totoku Electric Co., Ltd. - - vendor.id usb 0x0613 -+vendor.name Ithaca Peripherals - - vendor.id usb 0x0614 -+vendor.name Bio-Rad Laboratories - - vendor.id usb 0x0616 -+vendor.name Future Techno Designs PVT. Ltd. - - vendor.id usb 0x0618 -+vendor.name MacAlly - - vendor.id usb 0x0618 -&device.id usb 0x0101 -+device.name Mouse - - vendor.id usb 0x0619 -+vendor.name Seiko Instruments Inc. - - vendor.id usb 0x061c -+vendor.name Act Labs, Ltd. - - vendor.id usb 0x061d -+vendor.name Quatech, Inc. - - vendor.id usb 0x061e -+vendor.name Nissei Electric Co. - - vendor.id usb 0x0620 -+vendor.name Alaris, Inc. - - vendor.id usb 0x0621 -+vendor.name ODU-Steckverbindungssysteme GmbH & Co. KG - - vendor.id usb 0x0624 -+vendor.name Apex, Inc. - - vendor.id usb 0x0626 -+vendor.name Nippon Systems Development Co., Ltd. - - vendor.id usb 0x0629 -+vendor.name Zida Technologies Limited - - vendor.id usb 0x062b -+vendor.name Greatlink Electronics Taiwan Ltd. - - vendor.id usb 0x062d -+vendor.name Taiwan Tai-Hao Enterprises Co. Ltd. - - vendor.id usb 0x062e -+vendor.name Mainsuper Enterprises Co., Ltd. - - vendor.id usb 0x062f -+vendor.name Sin Sheng Terminal & Machine Inc. - - vendor.id usb 0x0634 -+vendor.name Micron Technology, Inc. - - vendor.id usb 0x0636 -+vendor.name Sierra Imaging, Inc. - - vendor.id usb 0x0638 -+vendor.name Avision, Inc. - - vendor.id usb 0x0638 -&device.id usb 0x0268 -+device.name iVina 1200U Scanner - - vendor.id usb 0x0638 -&device.id usb 0x026a -+device.name Minolta Dimage Scan Dual II - - vendor.id usb 0x0638 -&device.id usb 0x4004 -+device.name Minolta Dimage Scan Elite II - - vendor.id usb 0x063d -+vendor.name Fong Kai Industrial Co., Ltd. - - vendor.id usb 0x063f -+vendor.name New Technology Cable Ltd. - - vendor.id usb 0x0640 -+vendor.name Hitex Development Tools - - vendor.id usb 0x0641 -+vendor.name Woods Industries, Inc. - - vendor.id usb 0x0642 -+vendor.name VIA Medical Corp. - - vendor.id usb 0x0644 -+vendor.name TEAC Corp. - - vendor.id usb 0x0644 -&device.id usb 0x0000 -+device.name Floppy - - vendor.id usb 0x0645 -+vendor.name Who? Vision Systems, Inc. - - vendor.id usb 0x0646 -+vendor.name UMAX - - vendor.id usb 0x0648 -+vendor.name Inside Out Networks - - vendor.id usb 0x064b -+vendor.name White Mountain DSP, Inc. - - vendor.id usb 0x064c -+vendor.name Ji-Haw Industrial Co., Ltd. - - vendor.id usb 0x064f -+vendor.name WIBU-Systems AG - - vendor.id usb 0x0651 -+vendor.name Likom Technology Sdn. Bhd. - - vendor.id usb 0x0652 -+vendor.name Stargate Solutions, Inc. - - vendor.id usb 0x0654 -+vendor.name Granite Microsystems, Inc. - - vendor.id usb 0x0655 -+vendor.name Space Shuttle Hi-Fi Wire & Cable Industry Co, Ltd. - - vendor.id usb 0x0656 -+vendor.name Glory Mark Electronic Ltd. - - vendor.id usb 0x0657 -+vendor.name Tekcon American Corp. - - vendor.id usb 0x065a -+vendor.name Optoelectronics Co., Ltd. - - vendor.id usb 0x065e -+vendor.name Silicon Graphics - - vendor.id usb 0x065f -+vendor.name Good Way Industrial Co, Ltd & GWC Technology Inc. - - vendor.id usb 0x0661 -+vendor.name Hamamatsu Photonics K.K. - - vendor.id usb 0x0663 -+vendor.name Topmax Electronic Co., Ltd. - - vendor.id usb 0x0663 -&device.id usb 0x0103 -+device.name CobraPad - - vendor.id usb 0x0667 -+vendor.name Aiwa Co., Ltd. - - vendor.id usb 0x0667 -&device.id usb 0x0fa1 -+device.name TD-U8000 Tape Drive - - vendor.id usb 0x0668 -+vendor.name WordWand - - vendor.id usb 0x0669 -+vendor.name Oce' Printing Systems GmbH - - vendor.id usb 0x066a -+vendor.name Total Technologies, Ltd. - - vendor.id usb 0x066b -+vendor.name Linksys Inc. - - vendor.id usb 0x066b -&device.id usb 0x0105 -+device.name SCM eUSB SmartMedia Card Reader - - vendor.id usb 0x066b -&device.id usb 0x010a -+device.name Melco MCR-U2 SmartMedia / CompactFlash Reader - - vendor.id usb 0x066b -&device.id usb 0x2202 -+device.name USB10TX Ethernet [pegasus] - - vendor.id usb 0x066b -&device.id usb 0x2203 -+device.name USB100TX Ethernet [pegasus] - - vendor.id usb 0x066b -&device.id usb 0x2204 -+device.name USB100TX HomePNA Ethernet [pegasus] - - vendor.id usb 0x066b -&device.id usb 0x2206 -+device.name USB Ethernet [pegasus] - - vendor.id usb 0x066b -&device.id usb 0x2211 -+device.name WUSB11 Wireless Ethernet - - vendor.id usb 0x066d -+vendor.name Entrega Inc. - - vendor.id usb 0x066e -+vendor.name Acer Semiconductor America, Inc. - - vendor.id usb 0x066f -+vendor.name SigmaTel, Inc. - - vendor.id usb 0x066f -&device.id usb 0x4200 -+device.name STIr4200 IrDA Bridge - - vendor.id usb 0x0672 -+vendor.name Labtec Inc. - - vendor.id usb 0x0672 -&device.id usb 0x1041 -+device.name LCS1040 Speaker System - - vendor.id usb 0x0672 -&device.id usb 0x5000 -+device.name SpaceBall 4000 FLX - - vendor.id usb 0x0673 -+vendor.name HCL - - vendor.id usb 0x0673 -&device.id usb 0x5000 -+device.name Keyboard - - vendor.id usb 0x0675 -+vendor.name Draytech - - vendor.id usb 0x0675 -&device.id usb 0x0110 -+device.name Vigor 128 ISDN TA - - vendor.id usb 0x0676 -+vendor.name Teles AG - - vendor.id usb 0x0677 -+vendor.name Aiwa Co., Ltd. - - vendor.id usb 0x0677 -&device.id usb 0x0fa1 -+device.name TD-U8000 Tape Drive - - vendor.id usb 0x0678 -+vendor.name ACard Technology Corp. - - vendor.id usb 0x067b -+vendor.name Prolific Technology, Inc. - - vendor.id usb 0x067b -&device.id usb 0x0000 -+device.name PL2301 USB-USB Bridge - - vendor.id usb 0x067b -&device.id usb 0x0001 -+device.name PL2302 USB-USB Bridge - - vendor.id usb 0x067b -&device.id usb 0x2307 -+device.name PL2307 USB-ATAPI4 Bridge - - vendor.id usb 0x067b -&device.id usb 0x2303 -+device.name PL2303 Serial Port - - vendor.id usb 0x067c -+vendor.name Efficient Networks, Inc. - - vendor.id usb 0x067c -&device.id usb 0x1001 -+device.name Siemens SpeedStream 100MBps Ethernet - - vendor.id usb 0x067c -&device.id usb 0x1022 -+device.name Siemens 802.11b Wireless Ethernet - - vendor.id usb 0x067c -&device.id usb 0x4060 -+device.name Alcatel Speedstream 4060 ADSL Modem - - vendor.id usb 0x067d -+vendor.name Hohner Corp. - - vendor.id usb 0x067e -+vendor.name Intermec - - vendor.id usb 0x067f -+vendor.name Virata Ltd. - - vendor.id usb 0x0680 -+vendor.name Avance Logic, Inc. - - vendor.id usb 0x0681 -+vendor.name Siemens Information and Communication Products - - vendor.id usb 0x0681 -&device.id usb 0x0002 -+device.name Gigaset 3075 Passive ISDN - - vendor.id usb 0x0681 -&device.id usb 0x0005 -+device.name Mouse with Fingerprint Reader - - vendor.id usb 0x0684 -+vendor.name Actiontec Electronics, Inc. - - vendor.id usb 0x0686 -+vendor.name Minolta Co., Ltd. - - vendor.id usb 0x0686 -&device.id usb 0x4006 -+device.name Dimage 7 digital still camera - - vendor.id usb 0x0686 -&device.id usb 0x4007 -+device.name Dimage S304 digital still camera - - vendor.id usb 0x0686 -&device.id usb 0x4009 -+device.name Dimage X digital still camera - - vendor.id usb 0x0686 -&device.id usb 0x400a -+device.name Dimage S404 digital still camera - - vendor.id usb 0x0686 -&device.id usb 0x400b -+device.name Dimage 7i digital still camera - - vendor.id usb 0x068a -+vendor.name Pertech Inc. - - vendor.id usb 0x068e -+vendor.name CH Products, Inc. - - vendor.id usb 0x068e -&device.id usb 0x00ff -+device.name Flight Sim Yoke - - vendor.id usb 0x068e -&device.id usb 0x0500 -+device.name GameStick 3D - - vendor.id usb 0x068e -&device.id usb 0x0501 -+device.name CH Pro Pedals - - vendor.id usb 0x068e -&device.id usb 0x0504 -+device.name F-16 Combat Stick - - vendor.id usb 0x0690 -+vendor.name Golden Bridge Electric Co., Ltd. - - vendor.id usb 0x0693 -+vendor.name Hagiwara Sys-Com - - vendor.id usb 0x0693 -&device.id usb 0x0002 -+device.name FlashGate SmartMedia Card Reader - - vendor.id usb 0x0693 -&device.id usb 0x0003 -+device.name FlasgGate CompactFlash Card Reader - - vendor.id usb 0x0693 -&device.id usb 0x0005 -+device.name FlashGate - - vendor.id usb 0x0694 -+vendor.name Lego Group - - vendor.id usb 0x0694 -&device.id usb 0x0001 -+device.name Mindstorms Tower - - vendor.id usb 0x0698 -+vendor.name Chuntex (CTX) - - vendor.id usb 0x0698 -&device.id usb 0x1786 -+device.name 1300ex Monitor - - vendor.id usb 0x0698 -&device.id usb 0x9999 -+device.name VLxxxx Monitor+Hub - - vendor.id usb 0x069a -+vendor.name Askey Computer Corp. - - vendor.id usb 0x069a -&device.id usb 0x0001 -+device.name VC010 WebCam [pwc] - - vendor.id usb 0x069b -+vendor.name Thomson Consumer Electronics - - vendor.id usb 0x069d -+vendor.name Hughes Network Systems (HNS) - - vendor.id usb 0x069d -&device.id usb 0x0002 -+device.name Satellite Device - - vendor.id usb 0x069e -+vendor.name Marx - - vendor.id usb 0x069e -&device.id usb 0x0005 -+device.name CryptoBox v1.2 - - vendor.id usb 0x06a3 -+vendor.name Saitek PLC - - vendor.id usb 0x06a3 -&device.id usb 0x0006 -+device.name Cyborg Gold Joystick - - vendor.id usb 0x06a3 -&device.id usb 0x052d -+device.name P750 Gamepad - - vendor.id usb 0x06a3 -&device.id usb 0x053f -+device.name X36F Flightstick - - vendor.id usb 0x06a3 -&device.id usb 0x100a -+device.name SP550 Pad and Joystick Combo - - vendor.id usb 0x06a3 -&device.id usb 0x100b -+device.name SP550 Pad - - vendor.id usb 0x06a5 -+vendor.name Divio - - vendor.id usb 0x06a5 -&device.id usb 0xd001 -+device.name ProLink DS3303u WebCam - - vendor.id usb 0x06aa -+vendor.name Sysgration Ltd. - - vendor.id usb 0x06ac -+vendor.name Fujitsu PC Corp. - - vendor.id usb 0x06ad -+vendor.name Greatland Electronics Taiwan Ltd. - - vendor.id usb 0x06ae -+vendor.name Professional Multimedia Testing Centre - - vendor.id usb 0x06b8 -+vendor.name Pixela Corproation - - vendor.id usb 0x06b9 -+vendor.name Alcatel Telecom - - vendor.id usb 0x06b9 -&device.id usb 0x4061 -+device.name Speed Touch ISDN - - vendor.id usb 0x06ba -+vendor.name Smooth Cord & Connector Co., Ltd. - - vendor.id usb 0x06bb -+vendor.name EDA Inc. - - vendor.id usb 0x06bc -+vendor.name Oki Data Corp. - - vendor.id usb 0x06bd -+vendor.name AGFA-Gevaert NV - - vendor.id usb 0x06bd -&device.id usb 0x0001 -+device.name SnapScan 1212U - - vendor.id usb 0x06bd -&device.id usb 0x0002 -+device.name SnapScan 1236U - - vendor.id usb 0x06bd -&device.id usb 0x0100 -+device.name SnapScan Touch - - vendor.id usb 0x06bd -&device.id usb 0x0403 -+device.name ePhoto CL18 Camera - - vendor.id usb 0x06bd -&device.id usb 0x0404 -+device.name ePhoto CL20 Camera - - vendor.id usb 0x06bd -&device.id usb 0x2061 -+device.name SnapScan 1212U (?) - - vendor.id usb 0x06bd -&device.id usb 0x208f -+device.name SnapScan e50 - - vendor.id usb 0x06bd -&device.id usb 0x20fd -+device.name SnapScan e52 - - vendor.id usb 0x06be -+vendor.name Asia Microelectronic Development, Inc. - - vendor.id usb 0x06bf -+vendor.name Leoco Corp. - - vendor.id usb 0x06c4 -+vendor.name Bizlink International Corp. - - vendor.id usb 0x06c5 -+vendor.name Hagenuk, GmbH - - vendor.id usb 0x06c6 -+vendor.name Infowave Software Inc. - - vendor.id usb 0x06c8 -+vendor.name SIIG, Inc. - - vendor.id usb 0x06c9 -+vendor.name Taxan (Europe) Ltd. - - vendor.id usb 0x06ca -+vendor.name Newer Technology, Inc. - - vendor.id usb 0x06cb -+vendor.name Synaptics - - vendor.id usb 0x06cc -+vendor.name Terayon Communication Systems - - vendor.id usb 0x06cd -+vendor.name Keyspan - - vendor.id usb 0x06cd -&device.id usb 0x0101 -+device.name USA-28 PDA [preenum] - - vendor.id usb 0x06cd -&device.id usb 0x0102 -+device.name USA-28X PDA [preenum] - - vendor.id usb 0x06cd -&device.id usb 0x0103 -+device.name USA-19 PDA [preenum] - - vendor.id usb 0x06cd -&device.id usb 0x0104 -+device.name PDA [prerenum] - - vendor.id usb 0x06cd -&device.id usb 0x0105 -+device.name USA-18X PDA [preenum] - - vendor.id usb 0x06cd -&device.id usb 0x0106 -+device.name USA-19W PDA [preenum] - - vendor.id usb 0x06cd -&device.id usb 0x0107 -+device.name USA-19 PDA - - vendor.id usb 0x06cd -&device.id usb 0x0108 -+device.name USA-19W PDA - - vendor.id usb 0x06cd -&device.id usb 0x010b -+device.name USA-19Q PDA - - vendor.id usb 0x06cd -&device.id usb 0x010f -+device.name USA-28 PDA - - vendor.id usb 0x06cd -&device.id usb 0x0110 -+device.name USA-28X PDA - - vendor.id usb 0x06cd -&device.id usb 0x0112 -+device.name USA-18X PDA - - vendor.id usb 0x06cd -&device.id usb 0x0114 -+device.name USA-28X PDA - - vendor.id usb 0x06cd -&device.id usb 0x0118 -+device.name USA-19QW PDA - - vendor.id usb 0x06cd -&device.id usb 0x0201 -+device.name Digital Media Remote - - vendor.id usb 0x06cf -+vendor.name SpheronVR AG - - vendor.id usb 0x06cf -&device.id usb 0x1010 -+device.name PanoCam 10 - - vendor.id usb 0x06cf -&device.id usb 0x1012 -+device.name PanoCam 12/12X - - vendor.id usb 0x06d0 -+vendor.name LapLink, Inc. - - vendor.id usb 0x06d0 -&device.id usb 0x0622 -+device.name LapLink Gold USB-USB Bridge [net1080] - - vendor.id usb 0x06d1 -+vendor.name Daewoo Electronics Co Ltd. - - vendor.id usb 0x06d3 -+vendor.name Mitsubishi Electric Corp. - - vendor.id usb 0x06d5 -+vendor.name Toshiba - - vendor.id usb 0x06d5 -&device.id usb 0x4000 -+device.name Japanese Keyboard - - vendor.id usb 0x06d6 -+vendor.name Aashima Technology B.V. - - vendor.id usb 0x06d7 -+vendor.name Network Computing Devices (NCD) - - vendor.id usb 0x06d8 -+vendor.name Technical Marketing Research, Inc. - - vendor.id usb 0x06da -+vendor.name Phoenixtec Power Co., Ltd. - - vendor.id usb 0x06db -+vendor.name Paradyne - - vendor.id usb 0x06dc -+vendor.name Compeye Corp. - - vendor.id usb 0x06de -+vendor.name Heisei Electronics Co. Ltd. - - vendor.id usb 0x06e0 -+vendor.name Multi-Tech Systems, Inc. - - vendor.id usb 0x06e0 -&device.id usb 0xf101 -+device.name MT5634ZBA MultiModem 56k Intl. - - vendor.id usb 0x06e0 -&device.id usb 0xf104 -+device.name MT5634ZBA MultiModem 56k - - vendor.id usb 0x06e1 -+vendor.name ADS Technologies, Inc. - - vendor.id usb 0x06e1 -&device.id usb 0x0008 -+device.name UBS-10BT Ethernet [klsi] - - vendor.id usb 0x06e4 -+vendor.name Alcatel Microelectronics - - vendor.id usb 0x06e6 -+vendor.name Tiger Jet Network, Inc. - - vendor.id usb 0x06ea -+vendor.name Sirius Technologies - - vendor.id usb 0x06ea -&device.id usb 0x0001 -+device.name NetCom Roadster II 56k - - vendor.id usb 0x06ea -&device.id usb 0x0002 -+device.name Roadster II 56k - - vendor.id usb 0x06ef -+vendor.name I.A.C. Geometrische Ingenieurs B.V. - - vendor.id usb 0x06f0 -+vendor.name T.N.C Industrial Co., Ltd. - - vendor.id usb 0x06f1 -+vendor.name Opcode Systems Inc. - - vendor.id usb 0x06f2 -+vendor.name Machkey International (USA) - - vendor.id usb 0x06f6 -+vendor.name Wintrend Technology Co., Ltd. - - vendor.id usb 0x06fa -+vendor.name HSD S.r.L - - vendor.id usb 0x06fd -+vendor.name Boston Acoustics - - vendor.id usb 0x06fe -+vendor.name Gallant Computer, Inc. - - vendor.id usb 0x0701 -+vendor.name Supercomal Wire & Cable SDN. BHD. - - vendor.id usb 0x0703 -+vendor.name Bencent Tzeng Industry Co., Ltd. - - vendor.id usb 0x0707 -+vendor.name Standard Microsystems Corp - - vendor.id usb 0x0707 -&device.id usb 0x0100 -+device.name 2202 Ethernet [klsi] - - vendor.id usb 0x0707 -&device.id usb 0x0200 -+device.name 2202 Ethernet [pegasus] - - vendor.id usb 0x0709 -+vendor.name Silicon Systems Ltd. (SSL) - - vendor.id usb 0x070a -+vendor.name Oki Electric Industry Co., Ltd. - - vendor.id usb 0x070d -+vendor.name Comoss Electronic Co., Ltd. - - vendor.id usb 0x0710 -+vendor.name Connect Tech Inc. - - vendor.id usb 0x0710 -&device.id usb 0x0001 -+device.name WhiteHeat (fake ID) - - vendor.id usb 0x0710 -&device.id usb 0x8001 -+device.name WhiteHeat - - vendor.id usb 0x0711 -+vendor.name Magic Control Technology Corp. - - vendor.id usb 0x0711 -&device.id usb 0x0100 -+device.name Hub - - vendor.id usb 0x0711 -&device.id usb 0x0200 -+device.name BAY-3U1S1P Serial Port - - vendor.id usb 0x0711 -&device.id usb 0x0210 -+device.name MCT1S Serial Port - - vendor.id usb 0x0711 -&device.id usb 0x0230 -+device.name MCT-232 Serial Port - - vendor.id usb 0x0711 -&device.id usb 0x0231 -+device.name PS/2 Mouse Port - - vendor.id usb 0x0711 -&device.id usb 0x0240 -+device.name PS/2 to USB Converter - - vendor.id usb 0x0711 -&device.id usb 0x0300 -+device.name BAY-3U1S1P Parallel Port - - vendor.id usb 0x0711 -&device.id usb 0x0302 -+device.name Parallel Port - - vendor.id usb 0x0714 -+vendor.name NewMotion, Inc. - - vendor.id usb 0x0714 -&device.id usb 0x0003 -+device.name ADB to USB convertor - - vendor.id usb 0x0718 -+vendor.name Imation Corp. - - vendor.id usb 0x0719 -+vendor.name Tremon Enterprises Co., Ltd. - - vendor.id usb 0x071b -+vendor.name Domain Technologies, Inc. - - vendor.id usb 0x071b -&device.id usb 0x0002 -+device.name DTI-56362-USB Digital Interface Unit - - vendor.id usb 0x071b -&device.id usb 0x0101 -+device.name Audio4-USB DSP Data Acquisition Unit - - vendor.id usb 0x071b -&device.id usb 0x0201 -+device.name Audio4-5410 DSP Data Acquisition Unit - - vendor.id usb 0x071b -&device.id usb 0x0301 -+device.name SB-USB JTAG Emulator - - vendor.id usb 0x071c -+vendor.name Xionics Document Technologies, Inc. - - vendor.id usb 0x071d -+vendor.name Eicon Technology Corp. - - vendor.id usb 0x071d -&device.id usb 0x1000 -+device.name Diva ISDN TA - - vendor.id usb 0x0723 -+vendor.name Centillium Communications Corp. - - vendor.id usb 0x0726 -+vendor.name Vanguard International Semiconductor-America - - vendor.id usb 0x0729 -+vendor.name Amitm - - vendor.id usb 0x0729 -&device.id usb 0x1000 -+device.name USC-1000 Serial Port - - vendor.id usb 0x072f -+vendor.name ACS, Ltd. - - vendor.id usb 0x072f -&device.id usb 0x0001 -+device.name ACR20U SmartCard Reader - - vendor.id usb 0x0733 -+vendor.name ViewQuest Technologies, Inc. - - vendor.id usb 0x0733 -&device.id usb 0x0401 -+device.name CS330 WebCam - - vendor.id usb 0x0733 -&device.id usb 0x0402 -+device.name M-318B WebCam - - vendor.id usb 0x0733 -&device.id usb 0x0430 -+device.name Intel Pro Share WebCam - - vendor.id usb 0x0734 -+vendor.name Lasat Communications A/S - - vendor.id usb 0x0734 -&device.id usb 0x0001 -+device.name 560V Modem - - vendor.id usb 0x0735 -+vendor.name Asuscom Network - - vendor.id usb 0x0735 -&device.id usb 0xc541 -+device.name ISDN TA 280 - - vendor.id usb 0x0738 -+vendor.name Mad Catz, Inc. - - vendor.id usb 0x073e -+vendor.name NEC, Inc. - - vendor.id usb 0x073e -&device.id usb 0x0301 -+device.name Game Pad - - vendor.id usb 0x073b -+vendor.name Suncom Technologies - - vendor.id usb 0x0745 -+vendor.name Syntech Information Co., Ltd. - - vendor.id usb 0x0746 -+vendor.name Onkyo Corp. - - vendor.id usb 0x0747 -+vendor.name Labway Corp. - - vendor.id usb 0x0748 -+vendor.name Strong Man Enterprise Co., Ltd. - - vendor.id usb 0x0749 -+vendor.name EVer Electronics Corp. - - vendor.id usb 0x074a -+vendor.name Ming Fortune Industry Co., Ltd. - - vendor.id usb 0x074b -+vendor.name Polestar Tech. Corp. - - vendor.id usb 0x074c -+vendor.name C-C-C Group PLC - - vendor.id usb 0x074d -+vendor.name Micronas Intermetall GmbH - - vendor.id usb 0x074e -+vendor.name Digital Stream Corp. - - vendor.id usb 0x074e -&device.id usb 0x0001 -+device.name PS/2 Adapter - - vendor.id usb 0x074e -&device.id usb 0x0002 -+device.name PS/2 Adapter - - vendor.id usb 0x0755 -+vendor.name Aureal Semiconductor - - vendor.id usb 0x0763 -+vendor.name Midiman - - vendor.id usb 0x0763 -&device.id usb 0x1001 -+device.name Midisport 2x2 - - vendor.id usb 0x0763 -&device.id usb 0x1010 -+device.name Midisport 1x1 - - vendor.id usb 0x0763 -&device.id usb 0x1020 -+device.name Midisport 4x4 - - vendor.id usb 0x0763 -&device.id usb 0x1030 -+device.name Midisport 8x8 - - vendor.id usb 0x0757 -+vendor.name Network Technologies, Inc. - - vendor.id usb 0x0764 -+vendor.name Cyber Power System, Inc. - - vendor.id usb 0x0765 -+vendor.name X-Rite Incorporated - - vendor.id usb 0x0766 -+vendor.name Destech Solutions, Inc. - - vendor.id usb 0x0768 -+vendor.name Camtel Technology Corp. - - vendor.id usb 0x0769 -+vendor.name Surecom Technology Corp. - - vendor.id usb 0x076a -+vendor.name Smart Technology Enablers, Inc. - - vendor.id usb 0x076b -+vendor.name Utimaco Safeware AG - - vendor.id usb 0x076d -+vendor.name Denso Corp. - - vendor.id usb 0x076e -+vendor.name Kuan Tech Enterprise Co., Ltd. - - vendor.id usb 0x076f -+vendor.name Jhen Vei Enterprise Co., Ltd. - - vendor.id usb 0x0774 -+vendor.name AmTRAN Technology Co., Ltd. - - vendor.id usb 0x0775 -+vendor.name Longshine Electronics Corp. - - vendor.id usb 0x0776 -+vendor.name Inalways Corp. - - vendor.id usb 0x0777 -+vendor.name Comda Enterprise Corp. - - vendor.id usb 0x0779 -+vendor.name Fairchild Semiconductor - - vendor.id usb 0x077a -+vendor.name Sankyo Seiki Mfg. Co., Ltd. - - vendor.id usb 0x077b -+vendor.name Linksys - - vendor.id usb 0x077c -+vendor.name Forward Electronics Co., Ltd. - - vendor.id usb 0x077c -&device.id usb 0x0005 -+device.name NEC Keyboard - - vendor.id usb 0x077d -+vendor.name Griffin Technology - - vendor.id usb 0x077d -&device.id usb 0x0223 -+device.name IMic Audio In/Out - - vendor.id usb 0x077f -+vendor.name Well Excellent & Most Corp. - - vendor.id usb 0x0781 -+vendor.name SanDisk Corp. - - vendor.id usb 0x0781 -&device.id usb 0x0001 -+device.name SDDR-05a ImageMate CompactFlash Reader - - vendor.id usb 0x0781 -&device.id usb 0x0002 -+device.name SDDR-31 ImageMate II CompactFlash Reader - - vendor.id usb 0x0781 -&device.id usb 0x0005 -+device.name SDDR-05b (CF II) ImageMate CompactFlash Reader - - vendor.id usb 0x0781 -&device.id usb 0x0200 -+device.name SDDR-09 (SSFDC) ImageMate SmartMedia Reader [eusb] - - vendor.id usb 0x0782 -+vendor.name Trackerball - - vendor.id usb 0x0784 -+vendor.name Vivitar Inc. - - vendor.id usb 0x0784 -&device.id usb 0x0100 -+device.name ViviCam 2655 - - vendor.id usb 0x0784 -&device.id usb 0x1310 -+device.name Vivicam 3305 - - vendor.id usb 0x0784 -&device.id usb 0x5260 -+device.name Werlisa Sport PX 100 - - vendor.id usb 0x0785 -+vendor.name NTT-ME - - vendor.id usb 0x0785 -&device.id usb 0x0001 -+device.name MN128mini-V ISDN TA - - vendor.id usb 0x0785 -&device.id usb 0x0003 -+device.name MN128mini-J ISDN TA - - vendor.id usb 0x078b -+vendor.name Happ Controls, Inc. - - vendor.id usb 0x078b -&device.id usb 0x0010 -+device.name Driving UGCI - - vendor.id usb 0x078b -&device.id usb 0x0020 -+device.name Flying UGCI - - vendor.id usb 0x078b -&device.id usb 0x0030 -+device.name Fighting UGCI - - vendor.id usb 0x078e -+vendor.name Brimax Inc. - - vendor.id usb 0x0790 -+vendor.name Pro-Image Manufacturing Co., Ltd. - - vendor.id usb 0x0791 -+vendor.name Copartner Wire and Cable Mfg. Corp. - - vendor.id usb 0x0792 -+vendor.name Axis Communications AB - - vendor.id usb 0x0793 -+vendor.name Wha Yu Industrial Co., Ltd. - - vendor.id usb 0x0794 -+vendor.name ABL Electronics Corp. - - vendor.id usb 0x0795 -+vendor.name RealChip Inc. - - vendor.id usb 0x0796 -+vendor.name Certicom Corp. - - vendor.id usb 0x0797 -+vendor.name Grandtech Semiconductor Corp. - - vendor.id usb 0x0797 -&device.id usb 0x8001 -+device.name SmartCam - - vendor.id usb 0x079b -+vendor.name Sagem - - vendor.id usb 0x079d -+vendor.name Alfadata Computer Corp. - - vendor.id usb 0x079d -&device.id usb 0x0201 -+device.name GamePort Adapter - - vendor.id usb 0x07a1 -+vendor.name Digicom S.p.A. - - vendor.id usb 0x07a1 -&device.id usb 0xd952 -+device.name Palladio USB V.92 Modem - - vendor.id usb 0x07a2 -+vendor.name National Technical Systems - - vendor.id usb 0x07a3 -+vendor.name Onnto Corp. - - vendor.id usb 0x07a4 -+vendor.name Be Incorporated - - vendor.id usb 0x07a6 -+vendor.name ADMtek Incorporated - - vendor.id usb 0x07a6 -&device.id usb 0x0986 -+device.name AN986 Pegasus Ethernet - - vendor.id usb 0x07a6 -&device.id usb 0x8511 -+device.name ADM8511 Pegasus II Ethernet - - vendor.id usb 0x07aa -+vendor.name Correga K.K. - - vendor.id usb 0x07aa -&device.id usb 0x0001 -+device.name Ether USB-T Ethernet [klsi] - - vendor.id usb 0x07aa -&device.id usb 0x0004 -+device.name FEther USB-TX Ethernet [pegasus] - - vendor.id usb 0x07ab -+vendor.name Freecom - - vendor.id usb 0x07ab -&device.id usb 0xfc01 -+device.name IDE bridge - - vendor.id usb 0x07af -+vendor.name Microtech - - vendor.id usb 0x07af -&device.id usb 0x0004 -+device.name SCSI-DB25 SCSI Bridge [shuttle] - - vendor.id usb 0x07af -&device.id usb 0x0005 -+device.name SCSI-HD50 SCSI Bridge [shuttle] - - vendor.id usb 0x07af -&device.id usb 0x0006 -+device.name CameraMate SmartMedia and CompactFlash Card Reader [eusb/shuttle] - - vendor.id usb 0x07b0 -+vendor.name Trust Technologies - - vendor.id usb 0x07b0 -&device.id usb 0x0001 -+device.name ISDN TA - - vendor.id usb 0x07b1 -+vendor.name IMP, Inc. - - vendor.id usb 0x07b2 -+vendor.name Motorola ING - - vendor.id usb 0x07b2 -&device.id usb 0x4100 -+device.name SB4100 Cable Modem - - vendor.id usb 0x07b3 -+vendor.name Plustek, Inc. - - vendor.id usb 0x07b3 -&device.id usb 0x0001 -+device.name OpticPro 1212U Scanner - - vendor.id usb 0x07b4 -+vendor.name Olympus Optical Co., Ltd. - - vendor.id usb 0x07b4 -&device.id usb 0x0100 -+device.name Camedia C-2100/C-3000 Ultra Zoom Camera - - vendor.id usb 0x07b4 -&device.id usb 0x0102 -+device.name Camedia E-10/C-220 Camera - - vendor.id usb 0x07b4 -&device.id usb 0x0105 -+device.name Camedia C-700/C-3040 Zoom Camera - - vendor.id usb 0x07b5 -+vendor.name Mega World International Ltd. - - vendor.id usb 0x07b5 -&device.id usb 0x9902 -+device.name GamePad - - vendor.id usb 0x07b6 -+vendor.name Marubun Corp. - - vendor.id usb 0x07b7 -+vendor.name TIME Interconect Ltd. - - vendor.id usb 0x07b8 -+vendor.name D-Link, Inc. - - vendor.id usb 0x07b8 -&device.id usb 0xabc1 -+device.name DU-E10 Ethernet [pegasus] - - vendor.id usb 0x07b8 -&device.id usb 0x4000 -+device.name DU-E10 Ethernet [klsi] - - vendor.id usb 0x07b8 -&device.id usb 0x4002 -+device.name DU-E100 Ethernet [pegasus] - - vendor.id usb 0x07b8 -&device.id usb 0xf101 -+device.name DSB-560 Modem [atlas] - - vendor.id usb 0x07bc -+vendor.name Canon Computer Sytems, Inc. - - vendor.id usb 0x07bd -+vendor.name Webgear Inc. - - vendor.id usb 0x07be -+vendor.name Veridicom - - vendor.id usb 0x07c0 -+vendor.name Code Mercenaries Hard- und Software GmbH - - vendor.id usb 0x07c4 -+vendor.name DataFab Systems, Inc. - - vendor.id usb 0x07c4 -&device.id usb 0xa000 -+device.name CompactFlash Card Reader - - vendor.id usb 0x07c4 -&device.id usb 0xa001 -+device.name CompactFlash & SmartMedia Card Reader [eusb] - - vendor.id usb 0x07c4 -&device.id usb 0xa002 -+device.name Disk Drive - - vendor.id usb 0x07c4 -&device.id usb 0xa005 -+device.name CompactFlash & SmartMedia Card Reader - - vendor.id usb 0x07c4 -&device.id usb 0xa006 -+device.name SmartMedia Card Reader - - vendor.id usb 0x07c4 -&device.id usb 0xa109 -+device.name LC1 CompactFlash & SmartMedia Card Reader - - vendor.id usb 0x07c4 -&device.id usb 0xa400 -+device.name CompactFlash & Microdrive Reader - - vendor.id usb 0x07c5 -+vendor.name APG Cash Drawer - - vendor.id usb 0x07c6 -+vendor.name Share Wave, Inc. - - vendor.id usb 0x07c7 -+vendor.name Powertech Industrial Co., Ltd. - - vendor.id usb 0x07c8 -+vendor.name B.U.G., Inc. - - vendor.id usb 0x07c9 -+vendor.name Allied Telesyn International - - vendor.id usb 0x07ca -+vendor.name AVerMedia Technologies, Inc. - - vendor.id usb 0x07cb -+vendor.name Kingmax Technology Inc. - - vendor.id usb 0x07cc -+vendor.name Carry Inc. - - vendor.id usb 0x07cc -&device.id usb 0x0000 -+device.name CF Card Reader - - vendor.id usb 0x07cc -&device.id usb 0x0003 -+device.name SM Card Reader - - vendor.id usb 0x07cc -&device.id usb 0x0004 -+device.name SM/CF/PCMCIA Card Reader - - vendor.id usb 0x07cc -&device.id usb 0x0006 -+device.name SM/CF/PCMCIA Card Reader - - vendor.id usb 0x07cc -&device.id usb 0x000c -+device.name SM/CF Card Reader - - vendor.id usb 0x07cc -&device.id usb 0x000d -+device.name SM/CF Card Reader - - vendor.id usb 0x07cd -+vendor.name Elektor - - vendor.id usb 0x07cd -&device.id usb 0x0001 -+device.name USBuart Serial Port - - vendor.id usb 0x07cf -+vendor.name Casio Computer Co., Ltd. - - vendor.id usb 0x07cf -&device.id usb 0x1001 -+device.name QV-8000SX/3000EX Digicam - - vendor.id usb 0x07cf -&device.id usb 0x2002 -+device.name E-125 Cassiopeia Pocket PC - - vendor.id usb 0x07cf -&device.id usb 0x3801 -+device.name Casio WMP-1 MP3-Watch - - vendor.id usb 0x07d1 -+vendor.name D-Link System - - vendor.id usb 0x07d2 -+vendor.name Aptio Products Inc. - - vendor.id usb 0x07d3 -+vendor.name Cyberdata Corp. - - vendor.id usb 0x07d7 -+vendor.name GCC Technologies, Inc. - - vendor.id usb 0x07da -+vendor.name Arasan Chip Systems - - vendor.id usb 0x07e1 -+vendor.name Ambient Technologies, Inc. - - vendor.id usb 0x07e1 -&device.id usb 0x5201 -+device.name V.90 Modem - - vendor.id usb 0x07e2 -+vendor.name Elmeg GmbH & Co., Ltd. - - vendor.id usb 0x07e3 -+vendor.name Planex Communications, Inc. - - vendor.id usb 0x07e4 -+vendor.name Movado Enterprise Co., Ltd. - - vendor.id usb 0x07e5 -+vendor.name QPS, Inc. - - vendor.id usb 0x07e5 -&device.id usb 0x5c01 -+device.name Que! CDRW - - vendor.id usb 0x07e6 -+vendor.name Allied Cable Corp. - - vendor.id usb 0x07e7 -+vendor.name Mirvo Toys, Inc. - - vendor.id usb 0x07e8 -+vendor.name Labsystems - - vendor.id usb 0x07eb -+vendor.name Double-H Technology Co., Ltd. - - vendor.id usb 0x07ec -+vendor.name Taiyo Electrical Wire & Cable Co., Ltd. - - vendor.id usb 0x07fa -+vendor.name Draytek - - vendor.id usb 0x07fa -&device.id usb 0x0778 -+device.name miniVigor 128 ISDN TA - - vendor.id usb 0x07f6 -+vendor.name Circuit Assembly Corp - - vendor.id usb 0x07f7 -+vendor.name Century Corp. - - vendor.id usb 0x07fd -+vendor.name Mark of the Unicorn - - vendor.id usb 0x07fd -&device.id usb 0x0000 -+device.name FastLane MIDI Interface - - vendor.id usb 0x0801 -+vendor.name Mag-Tek - - vendor.id usb 0x0802 -+vendor.name Tritheim Technologies, Inc. - - vendor.id usb 0x0803 -+vendor.name Zoom Telephonics, Inc. - - vendor.id usb 0x0803 -&device.id usb 0x9700 -+device.name 2986L FaxModem - - vendor.id usb 0x0809 -+vendor.name Genicom Corp. - - vendor.id usb 0x080a -+vendor.name Evermuch Technology Co., Ltd. - - vendor.id usb 0x080d -+vendor.name Teco Image Systems Co., Ltd. - - vendor.id usb 0x0813 -+vendor.name Mattel, Inc. - - vendor.id usb 0x081a -+vendor.name MG Logic - - vendor.id usb 0x081a -&device.id usb 0x1000 -+device.name Duo Pen Tablet - - vendor.id usb 0x081c -+vendor.name Mipsys - - vendor.id usb 0x081e -+vendor.name Intelligent Peripheral Devices, Inc. - - vendor.id usb 0x0822 -+vendor.name Reudo Corp. - - vendor.id usb 0x0825 -+vendor.name GC Protronics - - vendor.id usb 0x0826 -+vendor.name Data Transit - - vendor.id usb 0x0827 -+vendor.name BroadLogic, Inc. - - vendor.id usb 0x0828 -+vendor.name Sato Corp. - - vendor.id usb 0x0829 -+vendor.name Telocity, Inc. - - vendor.id usb 0x082d -+vendor.name Handspring - - vendor.id usb 0x082d -&device.id usb 0x0100 -+device.name Visor - - vendor.id usb 0x0830 -+vendor.name Palm Computing, Inc. - - vendor.id usb 0x0830 -&device.id usb 0x0002 -+device.name Palm M505 - - vendor.id usb 0x0830 -&device.id usb 0x0003 -+device.name Palm M515 - - vendor.id usb 0x0830 -&device.id usb 0x0020 -+device.name Palm I705 - - vendor.id usb 0x0830 -&device.id usb 0x0040 -+device.name Palm M125 - - vendor.id usb 0x0830 -&device.id usb 0x0050 -+device.name Palm M130 - - vendor.id usb 0x0830 -&device.id usb 0x0080 -+device.name Palm - - vendor.id usb 0x0832 -+vendor.name Kouwell Electronics Corp. - - vendor.id usb 0x0833 -+vendor.name Sourcenext Corp. - - vendor.id usb 0x0835 -+vendor.name Action Star Enterprise Co., Ltd. - - vendor.id usb 0x0839 -+vendor.name Samsung Aerospace Industries Ltd. - - vendor.id usb 0x0839 -&device.id usb 0x0005 -+device.name Digimax Camera - - vendor.id usb 0x083a -+vendor.name Accton Technology Corp. - - vendor.id usb 0x083a -&device.id usb 0x1046 -+device.name 10/100 Ethernet [pegasus] - - vendor.id usb 0x083a -&device.id usb 0x5046 -+device.name SpeedStream 10/100 Ethernet [pegasus] - - vendor.id usb 0x083f -+vendor.name Global Village - - vendor.id usb 0x083f -&device.id usb 0xb100 -+device.name TelePort V.90 Fax/Modem - - vendor.id usb 0x0841 -+vendor.name Rioport.com Inc. - - vendor.id usb 0x0841 -&device.id usb 0x0001 -+device.name Rio 500 - - vendor.id usb 0x0846 -+vendor.name NetGear, Inc. - - vendor.id usb 0x0846 -&device.id usb 0x1001 -+device.name EA101 Ethernet [klsi] - - vendor.id usb 0x084d -+vendor.name Minton Optic Industry Co., Inc. - - vendor.id usb 0x084d -&device.id usb 0x0003 -+device.name S-Cam F5 Digital Camera - - vendor.id usb 0x084e -+vendor.name KB Gear - - vendor.id usb 0x084e -&device.id usb 0x1002 -+device.name Pablo Tablet - - vendor.id usb 0x084f -+vendor.name Empeg - - vendor.id usb 0x084f -&device.id usb 0x0001 -+device.name Empeg-Car Mark I/II Player - - vendor.id usb 0x0850 -+vendor.name Fast Point Technologies, Inc. - - vendor.id usb 0x0851 -+vendor.name Macronix International Co., Ltd. - - vendor.id usb 0x0852 -+vendor.name CSEM - - vendor.id usb 0x0854 -+vendor.name ActiveWire Inc. - - vendor.id usb 0x0854 -&device.id usb 0x0100 -+device.name I/O Board - - vendor.id usb 0x0854 -&device.id usb 0x0101 -+device.name I/O Board, rev1 - - vendor.id usb 0x0858 -+vendor.name Hitachi Maxell Ltd. - - vendor.id usb 0x0859 -+vendor.name Minolta Systems Laboratory, Inc. - - vendor.id usb 0x085a -+vendor.name Xircom - - vendor.id usb 0x085a -&device.id usb 0x0001 -+device.name Portstation Dual Serial Port - - vendor.id usb 0x085a -&device.id usb 0x8027 -+device.name PGSDB9 Serial Port - - vendor.id usb 0x0862 -+vendor.name Teletrol Systems, Inc. - - vendor.id usb 0x0863 -+vendor.name Filanet Corp. - - vendor.id usb 0x0864 -+vendor.name NetGear, Inc. - - vendor.id usb 0x0864 -&device.id usb 0x4100 -+device.name MA101 Wireless Adapter - - vendor.id usb 0x086a -+vendor.name Emagic Soft-und Hardware GmbH - - vendor.id usb 0x086c -+vendor.name DeTeWe - Deutsche Telephonwerke AG & Co. - - vendor.id usb 0x086c -&device.id usb 0x1001 -+device.name Eumex 504PC ISDN TA - - vendor.id usb 0x086e -+vendor.name System TALKS Inc. - - vendor.id usb 0x086f -+vendor.name MEC IMEX Inc/HPT - - vendor.id usb 0x0870 -+vendor.name Metricom - - vendor.id usb 0x0871 -+vendor.name SanDisk, Inc. - - vendor.id usb 0x0871 -&device.id usb 0x0001 -+device.name SDDR-01 Compact Flash Reader - - vendor.id usb 0x0871 -&device.id usb 0x0002 -+device.name SDDR-31 Compact Flash Reader - - vendor.id usb 0x0871 -&device.id usb 0x0005 -+device.name SDDR-05 Compact Flash Reader - - vendor.id usb 0x0873 -+vendor.name Xpeed Inc. - - vendor.id usb 0x0879 -+vendor.name Comtrol Corp. - - vendor.id usb 0x087c -+vendor.name Adesso/Kbtek America Inc. - - vendor.id usb 0x087d -+vendor.name Jaton Corp. - - vendor.id usb 0x087e -+vendor.name Fujitsu Computer Products of America - - vendor.id usb 0x087f -+vendor.name Virtual IP Group, Inc. - - vendor.id usb 0x0880 -+vendor.name APT Technologies Inc. - - vendor.id usb 0x0883 -+vendor.name Recording Industry Association of America (RIAA) - - vendor.id usb 0x0885 -+vendor.name Boca Research, Inc. - - vendor.id usb 0x0886 -+vendor.name XAC Automation Corp. - - vendor.id usb 0x0887 -+vendor.name Hannstar Electronics Corp. - - vendor.id usb 0x088b -+vendor.name MassWorks, Inc. - - vendor.id usb 0x088b -&device.id usb 0x4944 -+device.name MassWorks ID-75 TouchScreen - - vendor.id usb 0x0892 -+vendor.name DioGraphy Inc. - - vendor.id usb 0x089c -+vendor.name United Technologies Research Cntr. - - vendor.id usb 0x089d -+vendor.name Icron Systems Inc. - - vendor.id usb 0x089e -+vendor.name NST Co., Ltd. - - vendor.id usb 0x08a5 -+vendor.name e9 Inc. - - vendor.id usb 0x08a8 -+vendor.name Andrea Electronics - - vendor.id usb 0x08b8 -+vendor.name J. Gordon Electronic Design, Inc. - - vendor.id usb 0x08b8 -&device.id usb 0x01f4 -+device.name USBSIMM1 - - vendor.id usb 0x08b9 -+vendor.name Tandy Corp./Radio Shack - - vendor.id usb 0x08bb -+vendor.name Burr-Brown Japan, Ltd. - - vendor.id usb 0x08bd -+vendor.name Citizen Watch Co., Ltd. - - vendor.id usb 0x08c3 -+vendor.name Precise Biometrics - - vendor.id usb 0x08c3 -&device.id usb 0x0101 -+device.name Precise 100 MC FingerPrint and SmartCard Reader - - vendor.id usb 0x08c4 -+vendor.name Proxim, Inc. - - vendor.id usb 0x08c7 -+vendor.name Key Nice Enterprise Co., Ltd. - - vendor.id usb 0x08c8 -+vendor.name 2Wire, Inc. - - vendor.id usb 0x08c9 -+vendor.name Nippon Telegraph and Telephone Corp. - - vendor.id usb 0x08ca -+vendor.name AIPTEK International Inc. - - vendor.id usb 0x08ca -&device.id usb 0x0020 -+device.name APT-6000U Tablet - - vendor.id usb 0x08ca -&device.id usb 0x0103 -+device.name Pocket DV Digital Camera - - vendor.id usb 0x08cd -+vendor.name Jue Hsun Ind. Corp. - - vendor.id usb 0x08ce -+vendor.name Long Well Electronics Corp. - - vendor.id usb 0x08cf -+vendor.name Productivity Enhancement Products - - vendor.id usb 0x08d1 -+vendor.name smartBridges, Inc. - - vendor.id usb 0x08d1 -&device.id usb 0x0001 -+device.name smartNIC Ethernet [catc] - - vendor.id usb 0x08d3 -+vendor.name Virtual Ink - - vendor.id usb 0x08d4 -+vendor.name Siemens PC Systems - - vendor.id usb 0x08dd -+vendor.name Billionton Systems, Inc. - - vendor.id usb 0x08dd -&device.id usb 0x0986 -+device.name USB-100N Ethernet [pegasus] - - vendor.id usb 0x08dd -&device.id usb 0x0987 -+device.name USBLP-100 HomePNA Ethernet [pegasus] - - vendor.id usb 0x08dd -&device.id usb 0x0988 -+device.name USBEL-100 Ethernet [pegasus] - - vendor.id usb 0x08dd -&device.id usb 0x8511 -+device.name USBE-100 Ethernet [pegasus2] - - vendor.id usb 0x08e3 -+vendor.name Olitec, Inc. - - vendor.id usb 0x08e3 -&device.id usb 0x0002 -+device.name USB-RS232 Bridge - - vendor.id usb 0x08e5 -+vendor.name Litronic - - vendor.id usb 0x08e6 -+vendor.name GemPlus - - vendor.id usb 0x08e7 -+vendor.name Pan-International Wire & Cable - - vendor.id usb 0x08e8 -+vendor.name Integrated Memory Logic - - vendor.id usb 0x08e9 -+vendor.name Extended Systems, Inc. - - vendor.id usb 0x08e9 -&device.id usb 0x0100 -+device.name XTNDAccess IrDA Dongle - - vendor.id usb 0x08ea -+vendor.name Ericsson Inc., Blue Ridge Labs - - vendor.id usb 0x08ec -+vendor.name M-Systems - - vendor.id usb 0x08ec -&device.id usb 0x0010 -+device.name DiskOnKey - - vendor.id usb 0x08f1 -+vendor.name CTI Electronics Corp. - - vendor.id usb 0x08f5 -+vendor.name SYSTEC Co., Ltd. - - vendor.id usb 0x08f6 -+vendor.name Logic 3 International Limited - - vendor.id usb 0x08f8 -+vendor.name Keen Top International Enterprise Co., Ltd. - - vendor.id usb 0x08f9 -+vendor.name EnThink, Inc. - - vendor.id usb 0x08fa -+vendor.name Caere - - vendor.id usb 0x08fb -+vendor.name Socket Communications - - vendor.id usb 0x08fc -+vendor.name Sicon Cable Technology Co. Ltd. - - vendor.id usb 0x08fd -+vendor.name Digianswer A/S - - vendor.id usb 0x08ff -+vendor.name AuthenTec, Inc. - - vendor.id usb 0x0900 -+vendor.name Pinnacle Systems, Inc. - - vendor.id usb 0x0901 -+vendor.name VST Technologies - - vendor.id usb 0x0906 -+vendor.name Faraday Technology Corp. - - vendor.id usb 0x090a -+vendor.name Trumpion Microelectronics Inc. - - vendor.id usb 0x090b -+vendor.name Neurosmith - - vendor.id usb 0x090c -+vendor.name Feiya Technology Corp. - - vendor.id usb 0x090d -+vendor.name Multiport Computer Vertriebs GmbH - - vendor.id usb 0x090e -+vendor.name Shining Technology, Inc. - - vendor.id usb 0x090f -+vendor.name Fujitsu Devices Inc. - - vendor.id usb 0x0910 -+vendor.name Alation Systems, Inc. - - vendor.id usb 0x0911 -+vendor.name Philips Speech Processing - - vendor.id usb 0x0912 -+vendor.name Voquette, Inc. - - vendor.id usb 0x0915 -+vendor.name GlobeSpan, Inc. - - vendor.id usb 0x0917 -+vendor.name SmartDisk Corp. - - vendor.id usb 0x0919 -+vendor.name Tiger Electronics - - vendor.id usb 0x0919 -&device.id usb 0x0100 -+device.name Fast Flicks Digital Camera - - vendor.id usb 0x0920 -+vendor.name Echelon Co. - - vendor.id usb 0x0921 -+vendor.name GoHubs, Inc. - - vendor.id usb 0x0922 -+vendor.name Dymo-CoStar Corp. - - vendor.id usb 0x0923 -+vendor.name IC Media Corp. - - vendor.id usb 0x0924 -+vendor.name Xerox - - vendor.id usb 0x0927 -+vendor.name Summus, Ltd. - - vendor.id usb 0x0928 -+vendor.name Oxford Semiconductor Ltd. - - vendor.id usb 0x0929 -+vendor.name American Biometric Company - - vendor.id usb 0x0930 -+vendor.name Toshiba Corp. - - vendor.id usb 0x0931 -+vendor.name Harmonic Data Systems Ltd. - - vendor.id usb 0x0932 -+vendor.name Crescentec Corp. - - vendor.id usb 0x0933 -+vendor.name Quantum Corp. - - vendor.id usb 0x0934 -+vendor.name Netcom Systems - - vendor.id usb 0x0939 -+vendor.name Lumberg, Inc. - - vendor.id usb 0x093a -+vendor.name Pixart Imaging, Inc. - - vendor.id usb 0x093b -+vendor.name Plextor - - vendor.id usb 0x093e -+vendor.name J.S.T. Mfg. Co., Ltd. - - vendor.id usb 0x093f -+vendor.name Olympia Telecom Vertriebs GmbH - - vendor.id usb 0x0940 -+vendor.name Japan Storage Battery Co., Ltd. - - vendor.id usb 0x0941 -+vendor.name Photobit Corp. - - vendor.id usb 0x0942 -+vendor.name i2Go.com, LLC - - vendor.id usb 0x0943 -+vendor.name HCL Technologies India Private Limited - - vendor.id usb 0x0944 -+vendor.name KORG, Inc. - - vendor.id usb 0x0945 -+vendor.name Pasco Scientific - - vendor.id usb 0x0948 -+vendor.name Kronauer music in digital - - vendor.id usb 0x0948 -&device.id usb 0x1105 -+device.name USB One - - vendor.id usb 0x0948 -&device.id usb 0x0301 -+device.name USB Pro (24/48) - - vendor.id usb 0x0948 -&device.id usb 0x0302 -+device.name USB Pro (24/96 playback) - - vendor.id usb 0x0948 -&device.id usb 0x0303 -+device.name USB Pro (24/96 record) - - vendor.id usb 0x0948 -&device.id usb 0x0304 -+device.name USB Pro (16/48) - - vendor.id usb 0x094d -+vendor.name Cable Television Laboratories - - vendor.id usb 0x0951 -+vendor.name Kingston Technology - - vendor.id usb 0x0951 -&device.id usb 0x000a -+device.name KNU101TX 100baseTX Ethernet - - vendor.id usb 0x0954 -+vendor.name RPM Systems Corp. - - vendor.id usb 0x0955 -+vendor.name NVidia - - vendor.id usb 0x0956 -+vendor.name BlueWater Systems, Inc. - - vendor.id usb 0x0957 -+vendor.name Agilent Technologies, Inc. - - vendor.id usb 0x0958 -+vendor.name CompuLink Research, Inc. - - vendor.id usb 0x0959 -+vendor.name Cologne Chip Designs GmbH - - vendor.id usb 0x095a -+vendor.name Portsmith - - vendor.id usb 0x095b -+vendor.name Medialogic Corp. - - vendor.id usb 0x095c -+vendor.name K-Tec Electronics - - vendor.id usb 0x095d -+vendor.name Polycom, Inc. - - vendor.id usb 0x0968 -+vendor.name Catalyst Enterprises, Inc. - - vendor.id usb 0x0971 -+vendor.name Gretag-Macbeth AG - - vendor.id usb 0x0973 -+vendor.name Schlumberger - - vendor.id usb 0x0974 -+vendor.name Datagraphix, a business unit of Anacomp - - vendor.id usb 0x0975 -+vendor.name OL'E Communications, Inc. - - vendor.id usb 0x0976 -+vendor.name Adirondack Wire & Cable - - vendor.id usb 0x0977 -+vendor.name Lightsurf Technologies - - vendor.id usb 0x0978 -+vendor.name Beckhoff GmbH - - vendor.id usb 0x0979 -+vendor.name Teracom International Inc. - - vendor.id usb 0x097a -+vendor.name Minds At Work LLC - - vendor.id usb 0x097b -+vendor.name Knudsen Engineering Limited - - vendor.id usb 0x097c -+vendor.name Marunix Co., Ltd. - - vendor.id usb 0x097d -+vendor.name Rosun Technologies, Inc. - - vendor.id usb 0x0981 -+vendor.name Oak Technology Ltd. - - vendor.id usb 0x0985 -+vendor.name cab Produkttechnik GmbH & Co KG - - vendor.id usb 0x0985 -&device.id usb 0x00a3 -+device.name A3/200 or A3/300 Label Printer - - vendor.id usb 0x098c -+vendor.name Vitana Corp. - - vendor.id usb 0x098d -+vendor.name INDesign - - vendor.id usb 0x098e -+vendor.name Integrated Intellectual Property Inc. - - vendor.id usb 0x098f -+vendor.name Kenwood TMI Corp. - - vendor.id usb 0x0993 -+vendor.name Gemstar eBook Group, Ltd. - - vendor.id usb 0x0993 -&device.id usb 0x0001 -+device.name REB1100 eBook Reader - - vendor.id usb 0x0996 -+vendor.name Integrated Telecom Express, Inc. - - vendor.id usb 0x09a3 -+vendor.name PairGain Technologies - - vendor.id usb 0x09a4 -+vendor.name Contech Research, Inc. - - vendor.id usb 0x09a5 -+vendor.name VCON Telecommunications - - vendor.id usb 0x09a6 -+vendor.name Poinchips - - vendor.id usb 0x09a7 -+vendor.name Data Transmission Network Corp. - - vendor.id usb 0x09a8 -+vendor.name Shinestar Enterprise Co., Ltd. - - vendor.id usb 0x09a9 -+vendor.name Smart Card Technologies Co., Ltd. - - vendor.id usb 0x09aa -+vendor.name Intersil Corp. - - vendor.id usb 0x09b2 -+vendor.name Franklin Electronic Publishers - - vendor.id usb 0x09b2 -&device.id usb 0x0001 -+device.name eBookman Palm Computer - - vendor.id usb 0x09b3 -+vendor.name Altius Solutions, Inc. - - vendor.id usb 0x09b4 -+vendor.name MDS Telephone Systems - - vendor.id usb 0x09b5 -+vendor.name Celltrix Technology Co., Ltd. - - vendor.id usb 0x09be -+vendor.name MySmart.Com - - vendor.id usb 0x09be -&device.id usb 0x0001 -+device.name MySmartPad - - vendor.id usb 0x09bf -+vendor.name Auerswald GmbH & Co. KG - - vendor.id usb 0x09bf -&device.id usb 0x00c0 -+device.name COMpact 2104 ISDN PBX - - vendor.id usb 0x09bf -&device.id usb 0x00db -+device.name COMpact 4410/2206 ISDN ISDN - - vendor.id usb 0x09bf -&device.id usb 0x00f1 -+device.name COMfort System Telephones - - vendor.id usb 0x09c1 -+vendor.name Arris Interactive LLC - - vendor.id usb 0x09c3 -+vendor.name ActivCard, INC. - - vendor.id usb 0x09c4 -+vendor.name ACTiSYS Corp. - - vendor.id usb 0x09c4 -&device.id usb 0x0011 -+device.name ACT-IR2000U IrDA Dongle - - vendor.id usb 0x09c5 -+vendor.name Memory Corp. - - vendor.id usb 0x09cc -+vendor.name Workbit Corp. - - vendor.id usb 0x09cd -+vendor.name Psion Dacom Home Networks Ltd. - - vendor.id usb 0x09ce -+vendor.name City Electronics Ltd. - - vendor.id usb 0x09cf -+vendor.name Electronics Testing Center, Taiwan - - vendor.id usb 0x09d1 -+vendor.name NeoMagic Inc. - - vendor.id usb 0x09d2 -+vendor.name Vreelin Engineering Inc. - - vendor.id usb 0x09d3 -+vendor.name Com One - - vendor.id usb 0x09d9 -+vendor.name KRF Tech Ltd. - - vendor.id usb 0x09da -+vendor.name A4 Tech Co., Ltd. - - vendor.id usb 0x09db -+vendor.name ComputerBoards Inc. - - vendor.id usb 0x09dc -+vendor.name Aimex Corp. - - vendor.id usb 0x09dd -+vendor.name Fellowes Manufacturing Co. - - vendor.id usb 0x09df -+vendor.name Addonics Technologies Corp. - - vendor.id usb 0x09e5 -+vendor.name Jo-Dan International, Inc. - - vendor.id usb 0x09e6 -+vendor.name Silutia, Inc. - - vendor.id usb 0x09e7 -+vendor.name Real 3D, Inc. - - vendor.id usb 0x09e8 -+vendor.name AKAI Professional M.I. Corp. - - vendor.id usb 0x09e9 -+vendor.name Chen-Source Inc. - - vendor.id usb 0x09ef -+vendor.name Xitel - - vendor.id usb 0x09ef -&device.id usb 0x0101 -+device.name MD-Port DG2 MiniDisc Interface - - vendor.id usb 0x09f5 -+vendor.name AresCom - - vendor.id usb 0x09f6 -+vendor.name RocketChips, Inc. - - vendor.id usb 0x09f7 -+vendor.name Edu-Science (H.K.) Ltd. - - vendor.id usb 0x09f8 -+vendor.name SoftConnex - - vendor.id usb 0x09f9 -+vendor.name Bay Associates - - vendor.id usb 0x09fa -+vendor.name Mtek Vision - - vendor.id usb 0x09fb -+vendor.name Altera - - vendor.id usb 0x09ff -+vendor.name Gain Technology Corp. - - vendor.id usb 0x0a00 -+vendor.name Liquid Audio - - vendor.id usb 0x0a01 -+vendor.name ViA, Inc. - - vendor.id usb 0x0a11 -+vendor.name Xentec Incorporated - - vendor.id usb 0x0a12 -+vendor.name Cambridge Silicon Radio Ltd. - - vendor.id usb 0x0a13 -+vendor.name Telebyte Inc. - - vendor.id usb 0x0a14 -+vendor.name Spacelabs Medical Inc. - - vendor.id usb 0x0a15 -+vendor.name Scalar Corp. - - vendor.id usb 0x0a16 -+vendor.name Trek Technology (S) PTE Ltd. - - vendor.id usb 0x0a16 -&device.id usb 0x9988 -+device.name Trek2000 TD-G2 - - vendor.id usb 0x0a17 -+vendor.name Asahi Optical Co., Ltd. - - vendor.id usb 0x0a17 -&device.id usb 0x0004 -+device.name Pentax Optio 330 - - vendor.id usb 0x0a18 -+vendor.name Heidelberger Druckmaschinen AG - - vendor.id usb 0x0a19 -+vendor.name Hua Geng Technologies Inc. - - vendor.id usb 0x0a43 -+vendor.name Boca Systems Inc. - - vendor.id usb 0x0a4d -+vendor.name Evolution Electronics Ltd. - - vendor.id usb 0x0a4d -&device.id usb 0x008e -+device.name MK-249C MIDI Keyboard - - vendor.id usb 0x0a5c -+vendor.name Broadcom Corp. - - vendor.id usb 0x0a5f -+vendor.name Zebra - - vendor.id usb 0x0a5f -&device.id usb 0x0009 -+device.name LP2844 Printer - - vendor.id usb 0x0a6b -+vendor.name Green House - - vendor.id usb 0x0a6b -&device.id usb 0x0001 -+device.name Compact Flash R/W with MP3 player - - vendor.id usb 0x0abe -+vendor.name Stereo-Link - - vendor.id usb 0x0abe -&device.id usb 0x0101 -+device.name SL1200 DAC - - vendor.id usb 0x0aec -+vendor.name Neodio - - vendor.id usb 0x0aec -&device.id usb 0x5010 -+device.name ND5010 Card Reader - - vendor.id usb 0x0af9 -+vendor.name Hama, Inc. - - vendor.id usb 0x0af9 -&device.id usb 0x0010 -+device.name USB SightCam 100 - - vendor.id usb 0x0b30 -+vendor.name PNY Technologies, Inc. - - vendor.id usb 0x0b30 -&device.id usb 0x0006 -+device.name SM Media-Shuttle Card Reader - - vendor.id usb 0x0b3b -+vendor.name Tekram Technology, Co., Ltd. - - vendor.id usb 0x0b3b -&device.id usb 0x1612 -+device.name AIR.Mate 2@net - - vendor.id usb 0x0c12 -+vendor.name Zeroplus - - vendor.id usb 0x0c12 -&device.id usb 0x0005 -+device.name PSX Vibration Feedback Converter - - vendor.id usb 0x0c70 -+vendor.name MCT Elektronikladen - - vendor.id usb 0x0c70 -&device.id usb 0x0000 -+device.name USB08 Development board - - vendor.id usb 0x0c76 -+vendor.name JMTek, LLC. - - vendor.id usb 0x0c76 -&device.id usb 0x0003 -+device.name USBdisk - - vendor.id usb 0x0c76 -&device.id usb 0x0005 -+device.name USBdisk - - vendor.id usb 0x0bda -+vendor.name RealTek Semiconductor Corp. - - vendor.id usb 0x0bda -&device.id usb 0x8150 -+device.name RTL8150 Fast Ethernet Adapter - - vendor.id usb 0x0bda -&device.id usb 0x8151 -+device.name RTL8151 HomePNA Adapter - - vendor.id usb 0x0bf6 -+vendor.name Addonics Technologies, Inc. - - vendor.id usb 0x0bf6 -&device.id usb 0xa002 -+device.name IDE Bridge - - vendor.id usb 0x0c08 -+vendor.name Agate - - vendor.id usb 0x0c08 -&device.id usb 0x0378 -+device.name Q 16MB Storage Device - - vendor.id usb 0x0c0b -+vendor.name Acomdata - - vendor.id usb 0x0c0b -&device.id usb 0xb004 -+device.name MMC/SD Reader and Writer - - vendor.id usb 0x0c0b -&device.id usb 0xa109 -+device.name CF/SM Reader and Writer - - vendor.id usb 0x0c0b -&device.id usb 0xa10c -+device.name SD/MS Reader and Writer - - vendor.id usb 0x0c5e -+vendor.name Xytronix Research & Design - - vendor.id usb 0x0c86 -+vendor.name NDA Technologies, Inc. - - vendor.id usb 0x0d06 -+vendor.name telos EDV Systementwicklung GmbH - - vendor.id usb 0x0d7d -+vendor.name Apacer - - vendor.id usb 0x0d7d -&device.id usb 0x0100 -+device.name HandyDrive 64MB - - vendor.id usb 0x0d8e -+vendor.name Repotec - - vendor.id usb 0x0d8e -&device.id usb 0x7100 -+device.name Wireless 802.11b Ethernet - - vendor.id usb 0x0d96 -+vendor.name Traveler - - vendor.id usb 0x0d96 -&device.id usb 0x3300 -+device.name SX330z Digital Camera - - vendor.id usb 0x0d96 -&device.id usb 0x4100 -+device.name SX410z Digital Camera - - vendor.id usb 0x0dbf -+vendor.name Pocketec - - vendor.id usb 0x0dcd -+vendor.name NetworkFab Corporation - - vendor.id usb 0x0dcd -&device.id usb 0x0001 -+device.name Remote Interface Adapter - - vendor.id usb 0x0dcd -&device.id usb 0x0002 -+device.name High Bandwidth Codec - - vendor.id usb 0x0e0c -+vendor.name Gesytec - - vendor.id usb 0x0e0c -&device.id usb 0x0101 -+device.name LonUSB LonTalk Network Adapter - - vendor.id usb 0x0e1b -+vendor.name Crewave - - vendor.id usb 0x0e1b -&device.id usb 0x1100 -+device.name CW-1100 Wireless Network Adapter - - vendor.id usb 0x0e48 -+vendor.name Julia Corp., Ltd. - - vendor.id usb 0x0e48 -&device.id usb 0x0100 -+device.name CardPro SmartCard Reader - - vendor.id usb 0x0e66 -+vendor.name Hawking - - vendor.id usb 0x0e66 -&device.id usb 0x400c -+device.name UF100 Ethernet [pegasus2] - - vendor.id usb 0x0e75 -+vendor.name TVS Electronics, Ltd. - - vendor.id usb 0x0ef7 -+vendor.name Tulip Computers International - - vendor.id usb 0x1046 -+vendor.name Winbond Electronics Corp. [hex] - - vendor.id usb 0x1046 -&device.id usb 0x9967 -+device.name W9967CF/W9968CF WebCam IC - - vendor.id usb 0x1063 -+vendor.name Motorola Electronics Taiwan Ltd. [hex] - - vendor.id usb 0x1063 -&device.id usb 0x1555 -+device.name MC141555 Hub - - vendor.id usb 0x1065 -+vendor.name CCYU Technology - - vendor.id usb 0x1065 -&device.id usb 0x2136 -+device.name EasyDisk ED1064 - - vendor.id usb 0x10ac -+vendor.name Honeywell, Inc. - - vendor.id usb 0x10b5 -+vendor.name PLX - - vendor.id usb 0x10b5 -&device.id usb 0x9060 -+device.name Test Board - - vendor.id usb 0x1132 -+vendor.name Toshiba Corp., Digital Media Equipment [hex] - - vendor.id usb 0x1132 -&device.id usb 0x4331 -+device.name PDR-M4/M5/M70 Digital Camera - - vendor.id usb 0x1132 -&device.id usb 0x4432 -+device.name PDR-M60 Digital Camera - - vendor.id usb 0x1183 -+vendor.name Compaq Computer Corp. [hex] - - vendor.id usb 0x1183 -&device.id usb 0x4008 -+device.name 56k FaxModem - - vendor.id usb 0x1183 -&device.id usb 0x19c7 -+device.name ISDN TA - - vendor.id usb 0x1183 -&device.id usb 0x504a -+device.name PJB-100 Personal Jukebox - - vendor.id usb 0x1190 -+vendor.name Tripace - - vendor.id usb 0x120e -+vendor.name Hudson Soft Co., Ltd. - - vendor.id usb 0x1292 -+vendor.name Innomedia - - vendor.id usb 0x1292 -&device.id usb 0x0258 -+device.name Creative Labs VoIP Blaster - - vendor.id usb 0x1293 -+vendor.name Belkin Components [hex] - - vendor.id usb 0x1293 -&device.id usb 0x0002 -+device.name F5U002 Parallel Port [uss720] - - vendor.id usb 0x1293 -&device.id usb 0x2101 -+device.name 104-key keyboard - - vendor.id usb 0x1342 -+vendor.name Mobility - - vendor.id usb 0x1342 -&device.id usb 0x0200 -+device.name EasiDock 200 Hub - - vendor.id usb 0x1342 -&device.id usb 0x0201 -+device.name EasiDock 200 Keyboard and Mouse Port - - vendor.id usb 0x1342 -&device.id usb 0x0202 -+device.name EasiDock 200 Serial Port - - vendor.id usb 0x1342 -&device.id usb 0x0203 -+device.name EasiDock 200 Printer Port - - vendor.id usb 0x13d2 -+vendor.name Shark Multimedia - - vendor.id usb 0x13d2 -&device.id usb 0x0400 -+device.name Pocket Ethernet [klsi] - - vendor.id usb 0x1484 -+vendor.name Elsa AG [hex] - - vendor.id usb 0x1484 -&device.id usb 0x1746 -+device.name Ecomo 19H99 Monitor - - vendor.id usb 0x1484 -&device.id usb 0x7616 -+device.name Elsa Hub - - vendor.id usb 0x15e8 -+vendor.name SohoWare - - vendor.id usb 0x15e8 -&device.id usb 0x9100 -+device.name NUB100 Ethernet [pegasus] - - vendor.id usb 0x1604 -+vendor.name Tascam - - vendor.id usb 0x1604 -&device.id usb 0x8000 -+device.name US-428 Audio/Midi Controller (without fw) - - vendor.id usb 0x1604 -&device.id usb 0x8001 -+device.name US-428 Audio/Midi Controller - - vendor.id usb 0x1606 -+vendor.name Umax [hex] - - vendor.id usb 0x1606 -&device.id usb 0x0010 -+device.name Astra 1220U - - vendor.id usb 0x1606 -&device.id usb 0x0030 -+device.name Astra 2000U - - vendor.id usb 0x1606 -&device.id usb 0x0060 -+device.name Astra 3400U - - vendor.id usb 0x1606 -&device.id usb 0x0230 -+device.name Astra 2200/2200SU - - vendor.id usb 0x1606 -&device.id usb 0x2020 -+device.name AstraCam 1000 - - vendor.id usb 0x1608 -+vendor.name Inside Out Networks [hex] - - vendor.id usb 0x1608 -&device.id usb 0x0001 -+device.name EdgePort/4 Serial Port - - vendor.id usb 0x1608 -&device.id usb 0x1403 -+device.name MultiTech Systems MT4X56 Modem - - vendor.id usb 0x1645 -+vendor.name Entrega [hex] - - vendor.id usb 0x1645 -&device.id usb 0x0001 -+device.name 1S Serial Port - - vendor.id usb 0x1645 -&device.id usb 0x0002 -+device.name 2S Serial Port - - vendor.id usb 0x1645 -&device.id usb 0x0003 -+device.name 1S25 Serial Port - - vendor.id usb 0x1645 -&device.id usb 0x0004 -+device.name 4S Serial Port - - vendor.id usb 0x1645 -&device.id usb 0x0005 -+device.name E45 Ethernet [klsi] - - vendor.id usb 0x1645 -&device.id usb 0x0006 -+device.name Parallel Port - - vendor.id usb 0x1645 -&device.id usb 0x0007 -+device.name U1-SC25 SCSI - - vendor.id usb 0x1645 -&device.id usb 0x0093 -+device.name 1S9 Serial Port - - vendor.id usb 0x1645 -&device.id usb 0x8000 -+device.name EZ-USB - - vendor.id usb 0x1645 -&device.id usb 0x8002 -+device.name 2x Serial Port - - vendor.id usb 0x1645 -&device.id usb 0x8093 -+device.name PortGear Serial Port - - vendor.id usb 0x1668 -+vendor.name Actiontec Electronics, Inc. [hex] - - vendor.id usb 0x1668 -&device.id usb 0x0333 -+device.name Modem - - vendor.id usb 0x1668 -&device.id usb 0x0421 -+device.name 802.11b Wireless Adapter - - vendor.id usb 0x1690 -+vendor.name Askey Computer Corp. [hex] - - vendor.id usb 0x1690 -&device.id usb 0x0101 -+device.name Creative Modem Blaster DE5670 - - vendor.id usb 0x1690 -&device.id usb 0x0103 -+device.name Askey 1456 VQE-R3 Modem [conexant] - - vendor.id usb 0x1690 -&device.id usb 0x0109 -+device.name Askey MagicXpress V.90 Pocket Modem [conexant] - - vendor.id usb 0x2001 -+vendor.name D-Link Corp [hex] - - vendor.id usb 0x2001 -&device.id usb 0x4000 -+device.name DSB-650C Ethernet [klsi] - - vendor.id usb 0x2001 -&device.id usb 0x4001 -+device.name DSB-650TX Ethernet [pegasus] - - vendor.id usb 0x2001 -&device.id usb 0x4002 -+device.name DSB-650TX Ethernet [pegasus] - - vendor.id usb 0x2001 -&device.id usb 0x4003 -+device.name DSB-650TX-PNA Ethernet [pegasus] - - vendor.id usb 0x2001 -&device.id usb 0xabc1 -+device.name DSB-650 Ethernet [pegasus] - - vendor.id usb 0x2222 -+vendor.name MacAlly - - vendor.id usb 0x2222 -&device.id usb 0x0004 -+device.name iWebKey Keyboard - - vendor.id usb 0x22b8 -+vendor.name Motorola PCS - - vendor.id usb 0x22b8 -&device.id usb 0x1005 -+device.name Ti280e GSM/GPRS Phone - - vendor.id usb 0x2304 -+vendor.name Pinnacle Systems, Inc. [hex] - - vendor.id usb 0x2304 -&device.id usb 0x0111 -+device.name Studio PCTV (PAL) Frame Grabber - - vendor.id usb 0x2304 -&device.id usb 0x0112 -+device.name Studio PCTV (NTSC) Frame Grabber - - vendor.id usb 0x2304 -&device.id usb 0x0210 -+device.name Studio PCTV (PAL) Frame Grabber - - vendor.id usb 0x2304 -&device.id usb 0x0212 -+device.name Studio PCTV (NTSC) Frame Grabber - - vendor.id usb 0x2318 -+vendor.name Shining Technologies Inc. [hex] - - vendor.id usb 0x2318 -&device.id usb 0x0011 -+device.name CitiDISK Jr. IDE Enclosure - - vendor.id usb 0x2375 -+vendor.name Digit@lway, Inc. - - vendor.id usb 0x2375 -&device.id usb 0x0001 -+device.name Digital Audio Player - - vendor.id usb 0x3125 -+vendor.name Eagletron - - vendor.id usb 0x3125 -&device.id usb 0x0001 -+device.name TrackerPod Camera Stand - - vendor.id usb 0x3504 -+vendor.name Micro Star - - vendor.id usb 0x3504 -&device.id usb 0xf110 -+device.name Security Key - - vendor.id usb 0x3538 -+vendor.name PQI - - vendor.id usb 0x3538 -&device.id usb 0x0001 -+device.name Travel Flash - - vendor.id usb 0x4242 -+vendor.name USB Design by Example - - vendor.id usb 0x4242 -&device.id usb 0x4201 -+device.name Buttons and Lights HID device - - vendor.id usb 0x4242 -&device.id usb 0x4220 -+device.name Echo 1 Camera - - vendor.id usb 0x544d -+vendor.name Transmeta Corp. - - vendor.id usb 0x55aa -+vendor.name OnSpec Electronic Inc. - - vendor.id usb 0x55aa -&device.id usb 0x1234 -+device.name ATAPI Bridge - - vendor.id usb 0x55aa -&device.id usb 0xa103 -+device.name Sandisk SDDR-55 SmartMedia Card Reader - - vendor.id usb 0x5543 -+vendor.name UC-Logic Technology, Corp. - - vendor.id usb 0x5543 -&device.id usb 0x0002 -+device.name SuperPen WP3325U Tablet - - vendor.id usb 0x636c -+vendor.name CoreLogic, Inc. - - vendor.id usb 0x6666 -+vendor.name Prototype product Vendor ID - - vendor.id usb 0x6666 -&device.id usb 0x0667 -+device.name Smart Joy PSX, PS-PC Smart JoyPad - - vendor.id usb 0x6a75 -+vendor.name Shanghai Jujo Electronics Co., Ltd. - - vendor.id usb 0x8086 -+vendor.name Intel Corp. - - vendor.id usb 0x8086 -&device.id usb 0x0110 -+device.name Easy PC Camera - - vendor.id usb 0x8086 -&device.id usb 0x0431 -+device.name Intel Pro Video PC Camera - - vendor.id usb 0x8086 -&device.id usb 0x0510 -+device.name Digital Movie Creator - - vendor.id usb 0x8086 -&device.id usb 0x0630 -+device.name Pocket PC Camera - - vendor.id usb 0x8086 -&device.id usb 0x9890 -+device.name 82930 Test Board - - vendor.id usb 0x8086 -&device.id usb 0xc013 -+device.name Wireless HID Station - - vendor.id usb 0xc251 -+vendor.name Keil Software - diff --git a/src/hwinfo/src/ids/src/usb2 b/src/hwinfo/src/ids/src/usb2 deleted file mode 100644 index adbcf0e397..0000000000 --- a/src/hwinfo/src/ids/src/usb2 +++ /dev/null @@ -1,1427 +0,0 @@ -# some more usb info - - - vendor.id usb 0x03e8 -+vendor.name AOX Inc. - - vendor.id usb 0x03e9 -+vendor.name Thesys Microelectronics - - vendor.id usb 0x03ea -+vendor.name Data Broadcasting Corp. - - vendor.id usb 0x03eb -+vendor.name Atmel Corporation - - vendor.id usb 0x03ec -+vendor.name Iwatsu America Inc. - - vendor.id usb 0x03ed -+vendor.name Mitel Corporation - - vendor.id usb 0x03ee -+vendor.name Mitsumi - - vendor.id usb 0x03f0 -+vendor.name Hewlett Packard - - vendor.id usb 0x03f1 -+vendor.name Genoa Technology - - vendor.id usb 0x03f2 -+vendor.name Oak Technology, Inc - - vendor.id usb 0x03f3 -+vendor.name Adaptec, Inc. - - vendor.id usb 0x03f4 -+vendor.name Diebold, Inc. - - vendor.id usb 0x03f5 -+vendor.name Siemens Electromechanical - - vendor.id usb 0x03f8 -+vendor.name Epson Research Center - - vendor.id usb 0x03f9 -+vendor.name KeyTronic Corp. - - vendor.id usb 0x03fb -+vendor.name OPTi Inc. - - vendor.id usb 0x03fc -+vendor.name Elitegroup Computer Systems - - vendor.id usb 0x03fd -+vendor.name Xilinx Inc. - - vendor.id usb 0x03fe -+vendor.name Farallon - - vendor.id usb 0x0400 -+vendor.name National Semiconductor - - vendor.id usb 0x0401 -+vendor.name National Registry Inc. - - vendor.id usb 0x0402 -+vendor.name Acer Labs Inc. - - vendor.id usb 0x0403 -+vendor.name Future Technology Devices - - vendor.id usb 0x0404 -+vendor.name NCR Corporation - - vendor.id usb 0x0405 -+vendor.name Sand Microelectronics Inc. - - vendor.id usb 0x0406 -+vendor.name Fujitsu-ICL Computers - - vendor.id usb 0x0407 -+vendor.name Fujitsu Personal Systems, Inc. - - vendor.id usb 0x0408 -+vendor.name Quanta Computer Inc. - - vendor.id usb 0x0409 -+vendor.name NEC - - vendor.id usb 0x040a -+vendor.name Eastman Kodak Co. - - vendor.id usb 0x040b -+vendor.name Weltrend Semiconductor - - vendor.id usb 0x040c -+vendor.name VTech Computers Ltd - - vendor.id usb 0x040d -+vendor.name VIA Technologies, Inc. - - vendor.id usb 0x040e -+vendor.name MCCI - - vendor.id usb 0x040f -+vendor.name Echo Speech Corporation - - vendor.id usb 0x0411 -+vendor.name Melco, Inc. - - vendor.id usb 0x0412 -+vendor.name Award Software International - - vendor.id usb 0x0413 -+vendor.name Leadtek Research Inc. - - vendor.id usb 0x0414 -+vendor.name Giga-Byte Technology Co., Ltd. - - vendor.id usb 0x0416 -+vendor.name Winbond Electronics Corp. - - vendor.id usb 0x0417 -+vendor.name Symbios Logic - - vendor.id usb 0x0418 -+vendor.name AST Research - - vendor.id usb 0x0419 -+vendor.name Samsung Info. Systems America Inc. - - vendor.id usb 0x041a -+vendor.name Phoenix Technologies, Ltd. - - vendor.id usb 0x041b -+vendor.name d'TV - - vendor.id usb 0x041d -+vendor.name S3, Inc. - - vendor.id usb 0x041e -+vendor.name Creative Labs - - vendor.id usb 0x041f -+vendor.name LCS Telegraphics - - vendor.id usb 0x0420 -+vendor.name Chips and Technologies - - vendor.id usb 0x0421 -+vendor.name Nokia Mobile Phones - - vendor.id usb 0x0422 -+vendor.name ADI Systems - - vendor.id usb 0x0423 -+vendor.name Computer Access Technology Corp. - - vendor.id usb 0x0424 -+vendor.name Standard Microsystems Corp. - - vendor.id usb 0x0425 -+vendor.name Motorola Semiconductors HK, Ltd. - - vendor.id usb 0x0426 -+vendor.name Integrated Device Technology - - vendor.id usb 0x0427 -+vendor.name Motorola Electronics Taiwan Ltd. - - vendor.id usb 0x0428 -+vendor.name Gravis - - vendor.id usb 0x0428 -&device.id usb 0x4001 -+baseclass.id 0x10d -+subclass.id 0x01 - - vendor.id usb 0x0429 -+vendor.name Cirrus Logic - - vendor.id usb 0x042a -+vendor.name Ericsson Austrian, AG - - vendor.id usb 0x042b -+vendor.name Intel Corporation - - vendor.id usb 0x042c -+vendor.name Innovative Semiconductors, Inc. - - vendor.id usb 0x042d -+vendor.name Micronics - - vendor.id usb 0x042e -+vendor.name Acer, Inc. - - vendor.id usb 0x042f -+vendor.name Molex, Inc. - - vendor.id usb 0x0430 -+vendor.name Fujitsu Takamisawa America - - vendor.id usb 0x0431 -+vendor.name Itac Systems, Inc. - - vendor.id usb 0x0432 -+vendor.name Unisys Corp. - - vendor.id usb 0x0433 -+vendor.name Alps Electric Inc. - - vendor.id usb 0x0434 -+vendor.name Samsung Info. Systems America Inc. - - vendor.id usb 0x0435 -+vendor.name Hyundai Electronics America - - vendor.id usb 0x0436 -+vendor.name Taugagreining HF - - vendor.id usb 0x0437 -+vendor.name Framatome Connectors USA - - vendor.id usb 0x0438 -+vendor.name Advanced Micro Devices - - vendor.id usb 0x0439 -+vendor.name Voice Technologies Group - - vendor.id usb 0x043d -+vendor.name Lexmark International Inc. - - vendor.id usb 0x043e -+vendor.name LG Electronics USA Inc. - - vendor.id usb 0x043f -+vendor.name RadiSys Corporation - - vendor.id usb 0x0440 -+vendor.name NANAO Corporation - - vendor.id usb 0x0441 -+vendor.name Winbond Systems Lab. - - vendor.id usb 0x0442 -+vendor.name Ericsson Inc. - - vendor.id usb 0x0443 -+vendor.name Gateway 2000 - - vendor.id usb 0x0445 -+vendor.name Lucent Technologies - - vendor.id usb 0x0446 -+vendor.name NMB Technologies, Inc. - - vendor.id usb 0x0447 -+vendor.name Momentum Microsystems - - vendor.id usb 0x044a -+vendor.name Shamrock Tech. Co., Ltd - - vendor.id usb 0x044b -+vendor.name WSI - - vendor.id usb 0x044c -+vendor.name CCL/ITRI - - vendor.id usb 0x044d -+vendor.name Siemens Nixdorf - - vendor.id usb 0x044e -+vendor.name Alps Electric Co. - - vendor.id usb 0x044f -+vendor.name ThrustMaster, Inc. - - vendor.id usb 0x0450 -+vendor.name DFI Inc. - - vendor.id usb 0x0451 -+vendor.name Texas Instruments - - vendor.id usb 0x0452 -+vendor.name Mitsubishi Electronics America, Inc. - - vendor.id usb 0x0453 -+vendor.name CMD Technology - - vendor.id usb 0x0454 -+vendor.name Vobis Microcomputer AG - - vendor.id usb 0x0455 -+vendor.name Telematics International, Inc. - - vendor.id usb 0x0456 -+vendor.name Analog Devices, Inc. - - vendor.id usb 0x0457 -+vendor.name Silicon Integrated Systems Corp. - - vendor.id usb 0x0458 -+vendor.name KYE Systems Corp. - - vendor.id usb 0x0458 -&device.id usb 0x0002 -+device.name Genius NetMouse Pro - - vendor.id usb 0x0459 -+vendor.name Adobe Systems, Inc. - - vendor.id usb 0x045a -+vendor.name Diamond Multimedia Systems - - vendor.id usb 0x045b -+vendor.name Hitachi, Ltd - - vendor.id usb 0x045d -+vendor.name Northern Telecom - - vendor.id usb 0x045e -+vendor.name Microsoft - - vendor.id usb 0x0460 -+vendor.name Ace Cad Enterprise Co., Ltd. - - vendor.id usb 0x0461 -+vendor.name Primax Electronics - - vendor.id usb 0x0463 -+vendor.name MGE UPS Systems - - vendor.id usb 0x0464 -+vendor.name AMP Incorporated - - vendor.id usb 0x0467 -+vendor.name AT&T Paradyne - - vendor.id usb 0x0468 -+vendor.name Wieson Electronic Co., Ltd. - - vendor.id usb 0x046a -+vendor.name Cherry Mikroschalter GmbH - - vendor.id usb 0x046a -&device.id usb 0x0001 -+device.name RS 6000 M - - vendor.id usb 0x046b -+vendor.name American Megatrends - - vendor.id usb 0x046c -+vendor.name Toshiba - - vendor.id usb 0x046d -+vendor.name Logitech Inc. - - vendor.id usb 0x046d -&device.id usb 0x0840 -+baseclass.id 0x10f -+subclass.id 0x01 -+device.name Webcam USB - - vendor.id usb 0x046d -&device.id usb 0xc001 -+device.name Wheelmouse Model M-BB48 - - vendor.id usb 0x046e -+vendor.name Behavior Tech. Computer - - vendor.id usb 0x046f -+vendor.name Crystal Semiconductor - - vendor.id usb 0x0471 -+vendor.name Philips - - vendor.id usb 0x0472 -+vendor.name Sun Microsystems - - vendor.id usb 0x0473 -+vendor.name Sanyo Information Business Co., Ltd. - - vendor.id usb 0x0474 -+vendor.name Sanyo Electric Co. Ltd. - - vendor.id usb 0x0475 -+vendor.name Relisys/TECO Information System - - vendor.id usb 0x0476 -+vendor.name AESP - - vendor.id usb 0x0477 -+vendor.name Seagate Technology - - vendor.id usb 0x0478 -+vendor.name Connectix Corp. - - vendor.id usb 0x0479 -+vendor.name Advanced Peripheral Laboratories - - vendor.id usb 0x047a -+vendor.name USAR Systems - - vendor.id usb 0x047b -+vendor.name Silitek Corp. - - vendor.id usb 0x047c -+vendor.name Dell Computer Corp. - - vendor.id usb 0x047d -+vendor.name Kensington - - vendor.id usb 0x047d -&device.id usb 0x4008 -+baseclass.id 0x10d -+subclass.id 0x01 - - vendor.id usb 0x047e -+vendor.name Lucent Microelectronics Technologies - - vendor.id usb 0x047f -+vendor.name Plantronics, Inc. - - vendor.id usb 0x0480 -+vendor.name Toshiba America Info. Systems, Inc. - - vendor.id usb 0x0481 -+vendor.name Zenith Data Systems - - vendor.id usb 0x0482 -+vendor.name Kyocera Electronics, Inc. - - vendor.id usb 0x0483 -+vendor.name SGS Thomson Microelectronics - - vendor.id usb 0x0484 -+vendor.name Specialix - - vendor.id usb 0x0485 -+vendor.name Nokia Monitors - - vendor.id usb 0x0486 -+vendor.name ASUS Computers Inc. - - vendor.id usb 0x0487 -+vendor.name Stewart Connector - - vendor.id usb 0x0488 -+vendor.name Cirque Corp. - - vendor.id usb 0x0489 -+vendor.name Foxconn / Hon Hai - - vendor.id usb 0x048a -+vendor.name S-MOS Systems, Inc. - - vendor.id usb 0x048c -+vendor.name Alps Electric Ireland Ltd. - - vendor.id usb 0x048d -+vendor.name Integrated Technology Express - - vendor.id usb 0x048f -+vendor.name Eicon Tech. - - vendor.id usb 0x0490 -+vendor.name United Microelectronics Corp. - - vendor.id usb 0x0491 -+vendor.name Capetronic - - vendor.id usb 0x0492 -+vendor.name Samsung SemiConductor, Inc. - - vendor.id usb 0x0493 -+vendor.name MAG Technology Co., Ltd. - - vendor.id usb 0x0495 -+vendor.name ESS Technology, Inc. - - vendor.id usb 0x0496 -+vendor.name Micron Electronics - - vendor.id usb 0x0497 -+vendor.name Smile International - - vendor.id usb 0x0498 -+vendor.name Capetronic (Kaohsiung) Corp. - - vendor.id usb 0x0499 -+vendor.name Yamaha Corporation - - vendor.id usb 0x049a -+vendor.name Gandalf Technologies Ltd. - - vendor.id usb 0x049b -+vendor.name System Connection - - vendor.id usb 0x049c -+vendor.name Acer Advanced Labs, Inc. - - vendor.id usb 0x049d -+vendor.name VLSI Technology - - vendor.id usb 0x049f -+vendor.name Compaq Computers - - vendor.id usb 0x04a0 -+vendor.name Digital Equipment Corp. - - vendor.id usb 0x04a1 -+vendor.name SystemSoft Corporation - - vendor.id usb 0x04a2 -+vendor.name FirePower Systems - - vendor.id usb 0x04a3 -+vendor.name Trident Microsystems Inc. - - vendor.id usb 0x04a4 -+vendor.name Hitachi, Ltd. - - vendor.id usb 0x04a5 -+vendor.name Acer Peripheral Inc. - - vendor.id usb 0x04a6 -+vendor.name Nokia Display Products (Salcomp Oy) - - vendor.id usb 0x04a7 -+vendor.name Visioneer - - vendor.id usb 0x04a8 -+vendor.name Multivideo Labs, Inc. - - vendor.id usb 0x04a9 -+vendor.name Canon Inc. - - vendor.id usb 0x04aa -+vendor.name DaeWoo Telecom, Ltd. - - vendor.id usb 0x04ab -+vendor.name Chromatic Research - - vendor.id usb 0x04ac -+vendor.name Micro Audiometrics Corp. - - vendor.id usb 0x04ad -+vendor.name Dooin Electronics - - vendor.id usb 0x04af -+vendor.name Winnov L.P. - - vendor.id usb 0x04b0 -+vendor.name Nikon Corporation - - vendor.id usb 0x04b1 -+vendor.name Pan International - - vendor.id usb 0x04b3 -+vendor.name IBM Corp. - - vendor.id usb 0x04b4 -+vendor.name Cypress Semiconductor - - vendor.id usb 0x04b5 -+vendor.name ROHM LSI Systems, Inc. - - vendor.id usb 0x04b6 -+vendor.name Hint Corporation - - vendor.id usb 0x04b7 -+vendor.name Compal Electronics, Inc. - - vendor.id usb 0x04b8 -+vendor.name Seiko Epson Corp. - - vendor.id usb 0x04b9 -+vendor.name Rainbow Technologies, Inc. - - vendor.id usb 0x04ba -+vendor.name Toucan Systems Ltd. - - vendor.id usb 0x04bb -+vendor.name I-O Data Device, Inc. - - vendor.id usb 0x04bd -+vendor.name Toshiba Electronics Taiwan Corp. - - vendor.id usb 0x04be -+vendor.name Telia Research AB - - vendor.id usb 0x04bf -+vendor.name TDK USA Corporation - - vendor.id usb 0x04c1 -+vendor.name U.S. Robotics - - vendor.id usb 0x04c2 -+vendor.name Methode Electronics Far East Pte Ltd. - - vendor.id usb 0x04c3 -+vendor.name Maxi Switch, Inc. - - vendor.id usb 0x04c4 -+vendor.name Lockheed Martin Energy Research - - vendor.id usb 0x04c5 -+vendor.name Fujitsu Limited - - vendor.id usb 0x04c6 -+vendor.name Toshiba America Electronic Components - - vendor.id usb 0x04c7 -+vendor.name Micro Macro Technologies - - vendor.id usb 0x04c8 -+vendor.name Konica Corporation - - vendor.id usb 0x04ca -+vendor.name Lite-On Technology Corp. - - vendor.id usb 0x04cb -+vendor.name Fuji Photo Film Co., Ltd. - - vendor.id usb 0x04cc -+vendor.name Philips Semiconductors - - vendor.id usb 0x04cd -+vendor.name Tatung Co. Of America - - vendor.id usb 0x04ce -+vendor.name ScanLogic Corporation - - vendor.id usb 0x04cf -+vendor.name Myson Technology Inc. - - vendor.id usb 0x04d0 -+vendor.name Digi International - - vendor.id usb 0x04d1 -+vendor.name ITT Canon - - vendor.id usb 0x04d2 -+vendor.name Altec Lansing Technologies - - vendor.id usb 0x04d3 -+vendor.name VidUS, Inc. - - vendor.id usb 0x04d4 -+vendor.name LSI Logic Corporation - - vendor.id usb 0x04d5 -+vendor.name Forte Technologies, Inc. - - vendor.id usb 0x04d6 -+vendor.name CAE Technology - - vendor.id usb 0x04d7 -+vendor.name Oki Semiconductor - - vendor.id usb 0x04d8 -+vendor.name Micro Chip Technology, Inc. - - vendor.id usb 0x04d9 -+vendor.name Holtek Microelectronics Inc. - - vendor.id usb 0x04da -+vendor.name Panasonic (Matsushita) - - vendor.id usb 0x04db -+vendor.name Hypertec Pty Ltd. - - vendor.id usb 0x04dc -+vendor.name Huan Hsin C., SDN.BHD - - vendor.id usb 0x04dd -+vendor.name Sharp Corporation - - vendor.id usb 0x04de -+vendor.name MindShare, Inc. - - vendor.id usb 0x04df -+vendor.name Interlink Electronics - - vendor.id usb 0x04e1 -+vendor.name Iiyama North America Inc. - - vendor.id usb 0x04e2 -+vendor.name Exar Corporation - - vendor.id usb 0x04e3 -+vendor.name Zilog - - vendor.id usb 0x04e4 -+vendor.name ACC Microelectronics - - vendor.id usb 0x04e5 -+vendor.name Promise Technology - - vendor.id usb 0x04e6 -+vendor.name Shuttle Technology - - vendor.id usb 0x04e7 -+vendor.name ELO TouchSystems - - vendor.id usb 0x04e8 -+vendor.name Samsung Electronics Co., Ltd. - - vendor.id usb 0x04e9 -+vendor.name PC-Tel Inc. - - vendor.id usb 0x04ea -+vendor.name Brooktree Corporation - - vendor.id usb 0x04eb -+vendor.name Northstar Systems, Inc - - vendor.id usb 0x04ec -+vendor.name Tokyo Electron Limited - - vendor.id usb 0x04ed -+vendor.name Annabooks - - vendor.id usb 0x04ef -+vendor.name Pacific Electronic International, Inc. - - vendor.id usb 0x04f0 -+vendor.name Daewoo Electronics Co., Ltd. - - vendor.id usb 0x04f1 -+vendor.name Victor Company of Japan - - vendor.id usb 0x04f2 -+vendor.name Chicony Electronics Co., Ltd. - - vendor.id usb 0x04f3 -+vendor.name Elan Microelectronics Corportation - - vendor.id usb 0x04f4 -+vendor.name Harting Elektronik Inc. - - vendor.id usb 0x04f5 -+vendor.name Fujitsu-ICL Systems, Inc. - - vendor.id usb 0x04f6 -+vendor.name Norand Corporation - - vendor.id usb 0x04f7 -+vendor.name Newnex Technology Corp. - - vendor.id usb 0x04f8 -+vendor.name FuturePlus Systems - - vendor.id usb 0x04f9 -+vendor.name Brother International Corp. - - vendor.id usb 0x04fa -+vendor.name Dallas Semiconductor - - vendor.id usb 0x04fb -+vendor.name Biostar Microtech Int'l Corp. - - vendor.id usb 0x04fc -+vendor.name Sunplus Technology Co. - - vendor.id usb 0x04fd -+vendor.name Soliton Systems, K.K. - - vendor.id usb 0x04fe -+vendor.name PFU Limited - - vendor.id usb 0x04ff -+vendor.name E-CMOS Corp. - - vendor.id usb 0x0500 -+vendor.name Siam United Hi-Tech - - vendor.id usb 0x0501 -+vendor.name DDK Electronics, Inc. - - vendor.id usb 0x0502 -+vendor.name Acer, Inc. - - vendor.id usb 0x0503 -+vendor.name Hitachi America Ltd. - - vendor.id usb 0x0504 -+vendor.name Hayes Microcomputer Products - - vendor.id usb 0x0506 -+vendor.name 3Com Corporation - - vendor.id usb 0x0507 -+vendor.name Hosiden Corporation - - vendor.id usb 0x0508 -+vendor.name Clarion Co., Ltd. - - vendor.id usb 0x0509 -+vendor.name Aztech Systems Ltd - - vendor.id usb 0x050a -+vendor.name Cinch Connectors - - vendor.id usb 0x050b -+vendor.name Cable System International - - vendor.id usb 0x050c -+vendor.name InnoMedia, Inc. - - vendor.id usb 0x050d -+vendor.name Belkin Components - - vendor.id usb 0x050e -+vendor.name Neon Technology, Inc. - - vendor.id usb 0x050f -+vendor.name Kawatsu Semiconductor, Inc. - - vendor.id usb 0x0510 -+vendor.name Sejin Electron Inc. - - vendor.id usb 0x0511 -+vendor.name N'ABLE Technologies, Inc (Data Book) - - vendor.id usb 0x0512 -+vendor.name Hualon Microelectronics Corp. - - vendor.id usb 0x0513 -+vendor.name digital-X, Inc. - - vendor.id usb 0x0514 -+vendor.name Berg Electronics, Inc. - - vendor.id usb 0x0515 -+vendor.name ACTC - - vendor.id usb 0x0516 -+vendor.name Longwell Electronics - - vendor.id usb 0x0517 -+vendor.name Butterfly Communications - - vendor.id usb 0x0518 -+vendor.name EzKEY Corp. - - vendor.id usb 0x0519 -+vendor.name Star Micronics America, Inc. - - vendor.id usb 0x051a -+vendor.name WYSE Technology - - vendor.id usb 0x051b -+vendor.name Silicon Graphics - - vendor.id usb 0x051c -+vendor.name Holco Enterprise Co., Ltd./Shuttle Computer - - vendor.id usb 0x051d -+vendor.name American Power Conversion - - vendor.id usb 0x051e -+vendor.name Scientific Atlanta - - vendor.id usb 0x051f -+vendor.name Elite Electronics, Inc. - - vendor.id usb 0x0520 -+vendor.name Taiwan Semiconductor Manufacturing Co. - - vendor.id usb 0x0521 -+vendor.name Airborn Connectors - - vendor.id usb 0x0522 -+vendor.name Advanced Connectek USA Inc. - - vendor.id usb 0x0523 -+vendor.name ATEN GMBH - - vendor.id usb 0x0524 -+vendor.name Micro Devices Technology - - vendor.id usb 0x0525 -+vendor.name Net Chip Technology, Inc. - - vendor.id usb 0x0526 -+vendor.name Temic Matra.mhs - - vendor.id usb 0x0527 -+vendor.name ALTRA - - vendor.id usb 0x0528 -+vendor.name ATI Technologies, Inc. - - vendor.id usb 0x0529 -+vendor.name Fast Security AG - - vendor.id usb 0x052a -+vendor.name Crescent Heart Software - - vendor.id usb 0x052b -+vendor.name Tekom Development - - vendor.id usb 0x052c -+vendor.name Canon Information System - - vendor.id usb 0x052d -+vendor.name Avid Electronics Corp. - - vendor.id usb 0x052e -+vendor.name Standard Microsystems Corp. - - vendor.id usb 0x052f -+vendor.name Unicore Software, Inc. - - vendor.id usb 0x0530 -+vendor.name American Microsystems Inc. - - vendor.id usb 0x0531 -+vendor.name Wacom Technology Corp. - - vendor.id usb 0x0532 -+vendor.name Systech Corporation - - vendor.id usb 0x0533 -+vendor.name Alcatel Mobile Phones - - vendor.id usb 0x0534 -+vendor.name Motorola - - vendor.id usb 0x0535 -+vendor.name LIH TZU Electric Co., Ltd. - - vendor.id usb 0x0536 -+vendor.name Welch Allyn Inc. - - vendor.id usb 0x0537 -+vendor.name Inventec Corporation - - vendor.id usb 0x0538 -+vendor.name Santa Cruz Operation - - vendor.id usb 0x0539 -+vendor.name Shyh Shiun Terminals Co. LTD - - vendor.id usb 0x053a -+vendor.name Preh Werke Gmbh & Co. KG - - vendor.id usb 0x053b -+vendor.name Global Village Communication - - vendor.id usb 0x053c -+vendor.name Institut of Microelectronic & Mechatronic Systems - - vendor.id usb 0x053d -+vendor.name Silicon Architect - - vendor.id usb 0x053e -+vendor.name Electronic Accessory Specialists Int. - - vendor.id usb 0x053f -+vendor.name Synopsys - - vendor.id usb 0x0540 -+vendor.name Universal Access - - vendor.id usb 0x0541 -+vendor.name Sirf Technology, Inc - - vendor.id usb 0x0543 -+vendor.name View Sonic Corporation - - vendor.id usb 0x0544 -+vendor.name Cristie Electronics Ltd. - - vendor.id usb 0x0545 -+vendor.name Xirlink, Inc. - - vendor.id usb 0x0546 -+vendor.name Polaroid Corporation - - vendor.id usb 0x0547 -+vendor.name Anchor Chips Inc. - - vendor.id usb 0x0548 -+vendor.name Tyan Computer Corp. - - vendor.id usb 0x0549 -+vendor.name Pixera Corporation - - vendor.id usb 0x054a -+vendor.name Fujitsu Microelectronics, Inc., - - vendor.id usb 0x054b -+vendor.name New Media Corporation - - vendor.id usb 0x054c -+vendor.name Sony Corporation - - vendor.id usb 0x054d -+vendor.name Try Corporation - - vendor.id usb 0x054e -+vendor.name Proside Corporation - - vendor.id usb 0x054f -+vendor.name WYSE Technology Taiwan - - vendor.id usb 0x0550 -+vendor.name Fuji Xerox Co., Ltd. - - vendor.id usb 0x0551 -+vendor.name CompuTrend Systems, Inc. - - vendor.id usb 0x0552 -+vendor.name Philips Monitors - - vendor.id usb 0x0553 -+vendor.name VLSI Vision Ltd. - - vendor.id usb 0x0554 -+vendor.name Dictaphone Corp. - - vendor.id usb 0x0555 -+vendor.name ANAM S&T Co., Ltd. - - vendor.id usb 0x0556 -+vendor.name Asahi Kasei Microsystems Co., Ltd - - vendor.id usb 0x0557 -+vendor.name ATEN International Co. ltd. - - vendor.id usb 0x0558 -+vendor.name Truevision, Inc. - - vendor.id usb 0x0559 -+vendor.name Cadence Design Systems - - vendor.id usb 0x055a -+vendor.name Kenwood USA - - vendor.id usb 0x055b -+vendor.name KnowledgeTek, Inc. - - vendor.id usb 0x055c -+vendor.name Proton Electronic Ind. - - vendor.id usb 0x055d -+vendor.name Samsung Electro-Mechanics Co. - - vendor.id usb 0x055e -+vendor.name CTX Opto-Electronics Corp. - - vendor.id usb 0x055f -+vendor.name Mustek Systems Inc. - - vendor.id usb 0x0560 -+vendor.name Interface Co., Ltd. - - vendor.id usb 0x0561 -+vendor.name Oasis Design, Inc. - - vendor.id usb 0x0562 -+vendor.name Telex Communications Inc. - - vendor.id usb 0x0563 -+vendor.name Immersion Corporation - - vendor.id usb 0x0564 -+vendor.name Chinon Industries, Inc. - - vendor.id usb 0x0565 -+vendor.name Peracom Networks, Inc. - - vendor.id usb 0x0567 -+vendor.name Xyratex Int'l Ltd. - - vendor.id usb 0x0568 -+vendor.name Quartz Ingenierie - - vendor.id usb 0x0569 -+vendor.name SegaSoft - - vendor.id usb 0x056a -+vendor.name WACOM Co., Ltd. - - vendor.id usb 0x056b -+vendor.name Decicon Incorporated - - vendor.id usb 0x056c -+vendor.name e-TEK Labs - - vendor.id usb 0x056e -+vendor.name Elecom Co., Ltd. - - vendor.id usb 0x056f -+vendor.name Korea Data Systems Co., Ltd. - - vendor.id usb 0x0570 -+vendor.name Epson America - - vendor.id usb 0x0571 -+vendor.name Interex, Inc. - - vendor.id usb 0x0572 -+vendor.name EEH Datalink Gmbh - - vendor.id usb 0x0573 -+vendor.name Nogatech Ltd. - - vendor.id usb 0x0574 -+vendor.name City University of Hong Kong - - vendor.id usb 0x0575 -+vendor.name Swets & Zeitlinger BV - - vendor.id usb 0x0576 -+vendor.name BAFO/Quality Computer Accessories - - vendor.id usb 0x0577 -+vendor.name ELSA - - vendor.id usb 0x0578 -+vendor.name Intrinsix Corp. - - vendor.id usb 0x0579 -+vendor.name GVC Corporation - - vendor.id usb 0x057a -+vendor.name Samsung Electronics America - - vendor.id usb 0x057b -+vendor.name Y-E Data, Inc. - - vendor.id usb 0x057c -+vendor.name AVM Gmbh - - vendor.id usb 0x057d -+vendor.name Shark Multimedia Inc. - - vendor.id usb 0x057e -+vendor.name Nintendo Co., - - vendor.id usb 0x057f -+vendor.name Quickshot Technology Inc. - - vendor.id usb 0x0580 -+vendor.name Denron Inc. - - vendor.id usb 0x0581 -+vendor.name Racal Data Group - - vendor.id usb 0x0582 -+vendor.name Roland Corporation - - vendor.id usb 0x0583 -+vendor.name Padix Co. Ltd. - - vendor.id usb 0x0584 -+vendor.name RATOC System Inc. - - vendor.id usb 0x0585 -+vendor.name FlashPoint Technology, Inc. - - vendor.id usb 0x0586 -+vendor.name ZyXEL Communications Corp. - - vendor.id usb 0x0587 -+vendor.name America Kotobuki Electronics Ind. - - vendor.id usb 0x0588 -+vendor.name Sapien Design - - vendor.id usb 0x0589 -+vendor.name Victron - - vendor.id usb 0x058a -+vendor.name Nohau Corporation - - vendor.id usb 0x058b -+vendor.name Siemens Semiconductor - - vendor.id usb 0x058c -+vendor.name In Focus Systems - - vendor.id usb 0x058d -+vendor.name Micrel Semiconductor - - vendor.id usb 0x058e -+vendor.name Tripath Technology Inc. - - vendor.id usb 0x058f -+vendor.name Alcor Micro, Inc. - - vendor.id usb 0x0590 -+vendor.name OMRON Corporation - - vendor.id usb 0x0591 -+vendor.name Questra Consulting - - vendor.id usb 0x0592 -+vendor.name Exide Electronics - - vendor.id usb 0x0593 -+vendor.name Incite - - vendor.id usb 0x0594 -+vendor.name Princeton Graphic Systems - - vendor.id usb 0x0595 -+vendor.name Zoran Microelectronics Ltd. - - vendor.id usb 0x0596 -+vendor.name Microtouch Systems - - vendor.id usb 0x0597 -+vendor.name Trisignal Communications - - vendor.id usb 0x0598 -+vendor.name Nigata Canotec Co., Inc. - - vendor.id usb 0x0599 -+vendor.name Brilliance Semiconductor Inc. - - vendor.id usb 0x059a -+vendor.name Spectrum Signal Processing Inc. - - vendor.id usb 0x059b -+vendor.name Iomega Corporation - - vendor.id usb 0x059b -&device.id usb 0x0030 -+device.name USB Zip 250 - - vendor.id usb 0x059c -+vendor.name A-Trend Technology Co., Ltd. - - vendor.id usb 0x059d -+vendor.name Advanced Input Devices - - vendor.id usb 0x059e -+vendor.name Intelligent Instrumentation - - vendor.id usb 0x059f -+vendor.name Electronique D2 - - vendor.id usb 0x05a0 -+vendor.name Vetronix Corporation - - vendor.id usb 0x05a1 -+vendor.name USC Corporation - - vendor.id usb 0x05a2 -+vendor.name Fuji Film Microdevices Co. Ltd. - - vendor.id usb 0x05a3 -+vendor.name VAutomation Inc. - - vendor.id usb 0x05a4 -+vendor.name Ortek Technology, Inc. - - vendor.id usb 0x05a5 -+vendor.name Sampo Technology Corp. - - vendor.id usb 0x05a6 -+vendor.name Cisco Systems - - vendor.id usb 0x05a7 -+vendor.name Bose Corporation - - vendor.id usb 0x05a8 -+vendor.name Spacetec IMC Corporation - - vendor.id usb 0x05a9 -+vendor.name OmniVision Technologies, Inc. - - vendor.id usb 0x05aa -+vendor.name Utilux South China Ltd. - - vendor.id usb 0x05ab -+vendor.name In-System Design - - vendor.id usb 0x05ac -+vendor.name Apple Computer, Inc. - - vendor.id usb 0x05ac -&device.id usb 0x0202 -+device.name Apple USB Keyboard - - vendor.id usb 0x05ac -&device.id usb 0x0301 -+device.name Apple USB Mouse - - vendor.id usb 0x05ac -&device.id usb 0x1001 -+device.name Apple USB Hub - - vendor.id usb 0x05ad -+vendor.name Y.C.Cable U.S.A., Inc - - vendor.id usb 0x05ae -+vendor.name Synopsys, Inc. - - vendor.id usb 0x05af -+vendor.name Jing-Mold Enterprise Co., Ltd. - - vendor.id usb 0x05b0 -+vendor.name Fountain Technologies, Inc - - vendor.id usb 0x05b1 -+vendor.name First International Computer, Inc - - vendor.id usb 0x05b4 -+vendor.name LG Semicon Co., Ltd. - - vendor.id usb 0x05b5 -+vendor.name Dialogic Corp - - vendor.id usb 0x05b6 -+vendor.name Proxima Corporation - - vendor.id usb 0x05b7 -+vendor.name Medianix Semiconductor, Inc. - - vendor.id usb 0x05b9 -+vendor.name Philips Research Laboratories - - vendor.id usb 0x05ba -+vendor.name Digital Persona - - vendor.id usb 0x05be -+vendor.name Raychem Corporation - - vendor.id usb 0x05bf -+vendor.name S & S Research - - vendor.id usb 0x05c1 -+vendor.name Kawasaki Steel - - vendor.id usb 0x05c2 -+vendor.name Mediaphonics S.A. - - vendor.id usb 0x05c5 -+vendor.name Central Data Corporation - - vendor.id usb 0x05c6 -+vendor.name Qualcomm, Inc - - vendor.id usb 0x05c7 -+vendor.name Qtronix Corp - - vendor.id usb 0x05c8 -+vendor.name Cheng Uei Precision Industry Co., Ltd - - vendor.id usb 0x05c9 -+vendor.name Semtech Corporation - - vendor.id usb 0x05ca -+vendor.name Ricoh Company Ltd. - - vendor.id usb 0x05cb -+vendor.name Powerchip Semiconductor Co. - - vendor.id usb 0x05cc -+vendor.name ELSA Gmbh - - vendor.id usb 0x05cd -+vendor.name Silicom LTD. - - vendor.id usb 0x05ce -+vendor.name SICAN Gmbh - - vendor.id usb 0x05cf -+vendor.name Sung Forn Co. LTD. - - vendor.id usb 0x05d0 -+vendor.name Lunar Corporation - - vendor.id usb 0x05e3 -&device.id usb 0x000b -+device.name Razer Boomslang USB Mouse - - vendor.id usb 0x0698 -+vendor.name Chuntex (CTX) - - vendor.id usb 0x0c4b -+vendor.name Reiner SCT - - vendor.id usb 0x0c4b -&device.id usb 0x0100 -+baseclass.id 0x10e -+subclass.id 0x00 -+device.name Cyberjack USB - - vendor.id usb 0x0ef7 -+vendor.name Tulip Computers International - - vendor.id usb 0x1606 -+vendor.name UMAX Data Systems, Inc. - - vendor.id usb 0x1606 -&device.id usb 0x0010 -+device.name Astra 1220U - - vendor.id usb 0x1606 -&device.id usb 0x0030 -+device.name Astra 2000U - - vendor.id usb 0x1606 -&device.id usb 0x0130 -+device.name Astra 2100U - - vendor.id usb 0x1606 -&device.id usb 0x0230 -+device.name Astra 2200 (USB) - - vendor.id usb 0x1606 -&device.id usb 0x1030 -+device.name Astra 4000U - - vendor.id usb 0x8086 -+vendor.name Intel Corporation - - vendor.id usb 0xc251 -+vendor.name Keil Software - diff --git a/src/hwinfo/src/ids/src/x11.amd64 b/src/hwinfo/src/ids/src/x11.amd64 deleted file mode 100644 index 30bb3e80a8..0000000000 --- a/src/hwinfo/src/ids/src/x11.amd64 +++ /dev/null @@ -1,3355 +0,0 @@ - vendor.id pci 0x1002 -+vendor.name ATI Technologies Inc - - vendor.id pci 0x1002 -&device.id pci 0x3150 -+device.name Radeon Mobility X600 (M24) 3150 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x3154 -+device.name FireGL M24 GL 3154 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x3e50 -+device.name Radeon X600 (RV380) 3E50 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x3e50 -&subvendor.id pci 0x174b -&subdevice.id pci 0x0450 -+subdevice.name Radeon X600 Pro -+driver.xfree 4|radeon -+driver.xfree 4|fglrx|3d||dri -+driver.xfree.config Option "UseInternalAGPGART" "no" -+driver.xfree.config Option "mtrr" "off" -+driver.xfree.config Option "VideoOverlay" "on" -+driver.xfree.config Option "OpenGLOverlay" "off" -+requires fglrx - - vendor.id pci 0x1002 -&device.id pci 0x3e54 -+device.name FireGL V3200 (RV380) 3E54 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4136 -+device.name RS100 4136 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4137 -+device.name RS100 4137 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4144 -+device.name R300 AD -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4145 -+device.name E300 AE -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4146 -+device.name R300 AF -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4147 -+device.name R300 AG -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4148 -+device.name R350 AH -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4149 -+device.name R350 AI -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x414a -+device.name R350 AJ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x414b -+device.name R350 AK -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4150 -+device.name RV350 AP -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4151 -+device.name RV350 AQ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4152 -+device.name RV350 AR -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4153 -+device.name RV350 AS -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4154 -+device.name RV350 AT -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4155 -+device.name RV350 AU -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x4154 - - vendor.id pci 0x1002 -&device.id pci 0x4156 -+device.name RV350 AV -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4157 -+device.name RV350 AW -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x4154 - - vendor.id pci 0x1002 -&device.id pci 0x4237 -+device.name RS250 4237 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4242 -+device.name R200 BB -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4243 -+device.name R200 BC -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4336 -+device.name RS100 4336 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4337 -+device.name RS200 4337 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4354 -+device.name 215CT [Mach64 CT] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4358 -+device.name 210888CX [Mach64 CX] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4437 -+device.name RS250 4437 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4554 -+device.name 210888ET [Mach64 ET] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4742 -+device.name 3D Rage Pro AGP 1X/2X -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4744 -+device.name 3D Rage Pro AGP 1X -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4749 -+device.name Mach64 GI -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x474c -+device.name Rage XC -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x474d -+device.name Rage XL AGP -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x474e -+device.name Rage XC AGP -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x474f -+device.name Rage XL -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4750 -+device.name 3D Rage Pro 215GP -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4751 -+device.name 3D Rage Pro 215GQ -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4752 -+device.name Mach64 GR -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4753 -+device.name Mach64 GS -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4754 -+device.name 3D Rage I/II 215GT [Mach64 GT] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4755 -+device.name 3D Rage II+ 215GTB [Mach64 GTB] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4756 -+device.name 3D Rage IIC 215IIC [Mach64 GT IIC] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4757 -+device.name 3D Rage IIC AGP -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4758 -+device.name 210888GX [Mach64 GX] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4759 -+device.name 3D Rage IIC -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x475a -+device.name Mach64 GZ -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4966 -+device.name RV250 If -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4966 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0002 -+subdevice.name Radeon 9000 - - vendor.id pci 0x1002 -&device.id pci 0x4967 -+device.name RV250 Ig -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4a48 -+device.name R420 JH -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a49 -+device.name R420 JI -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a4a -+device.name R420 JJ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a4b -+device.name R420 JK -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a4c -+device.name R420 JL -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a4d -+device.name R420 JM -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a4e -+device.name R420 JN -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a50 -+device.name R420 JP -+driver.xfree 4|radeon -+driver.xfree 4|fglrx|3d||dri -+driver.xfree.config Option "UseInternalAGPGART" "no" -+driver.xfree.config Option "mtrr" "off" -+driver.xfree.config Option "VideoOverlay" "on" -+driver.xfree.config Option "OpenGLOverlay" "off" -+requires fglrx - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -+device.name Mach64 LB -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0044 -+subdevice.name 3D Rage LT Pro AGP-133 -+driver.xfree 4|ati -+driver.xfree.config Option "dpms" "off" - - vendor.id pci 0x1002 -&device.id pci 0x4c44 -+device.name 3D Rage LT Pro AGP-66 -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c45 -+device.name Rage 128 Mobility LE -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c46 -+device.name Mobility M3 AGP 2x -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c47 -+device.name 3D Rage LT-G 215LG -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c49 -+device.name Mach64 LI -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -+device.name 3D Rage P/M Mobility AGP 2x -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00bb -+subdevice.name Mach64LM/Dell -+driver.xfree 4|fbdev - - vendor.id pci 0x1002 -&device.id pci 0x4c4e -+device.name 3D Rage L Mobility AGP 2x -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c50 -+device.name 3D Rage LT Pro -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c51 -+device.name Mach64 LQ -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c52 -+device.name 3D Rage P/M Mobility -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c53 -+device.name 3D Rage L Mobility -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c57 -+device.name Radeon LW -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c58 -+device.name Radeon LX -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c59 -+device.name Radeon LY -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c5a -+device.name Radeon LZ -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c64 -+device.name RV250 Ld -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c66 -+device.name RV250 Lf -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c67 -+device.name RV250 Lg -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4d46 -+device.name Rage 128 Mobility MF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4d4c -+device.name Rage 128 Mobility ML -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4e44 -+device.name R300 ND -+driver.xfree 4|radeon -+driver.xfree 4|fglrx|3d||dri -+driver.xfree.config Option "UseInternalAGPGART" "no" -+driver.xfree.config Option "mtrr" "off" -+driver.xfree.config Option "VideoOverlay" "on" -+driver.xfree.config Option "OpenGLOverlay" "off" -+requires fglrx - - vendor.id pci 0x1002 -&device.id pci 0x4e44 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0002 -+subdevice.name Radeon 9700 - - vendor.id pci 0x1002 -&device.id pci 0x4e45 -+device.name R300 NE -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e46 -+device.name R300 NF -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e47 -+device.name R300 NG -+driver.xfree 4|radeon -+driver.xfree 4|fglrx|3d||dri -+driver.xfree.config Option "UseInternalAGPGART" "no" -+driver.xfree.config Option "mtrr" "off" -+driver.xfree.config Option "VideoOverlay" "on" -+driver.xfree.config Option "OpenGLOverlay" "off" -+requires fglrx - - vendor.id pci 0x1002 -&device.id pci 0x4e47 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0172 -+subdevice.name FireGL X1 - - vendor.id pci 0x1002 -&device.id pci 0x4e48 -+device.name R350 NH -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e49 -+device.name R350 NI -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e4a -+device.name R360 NJ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e4b -+device.name R350 NK -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e50 -+device.name RV350 NP -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e51 -+device.name RV350 NQ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e52 -+device.name RV350 NR -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e53 -+device.name RV350 NS -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e54 -+device.name RV350 NT -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e56 -+device.name RV350 NV -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5041 -+device.name Rage 128 PA -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5042 -+device.name Rage 128 PB -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5043 -+device.name Rage 128 PC -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5044 -+device.name Rage 128 PD -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5045 -+device.name Rage 128 PE -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5046 -+device.name Rage 128 PF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5047 -+device.name Rage 128 PG -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5048 -+device.name Rage 128 PH -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5049 -+device.name Rage 128 PI -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504a -+device.name Rage 128 PJ -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504b -+device.name Rage 128 PK -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504c -+device.name Rage 128 PL -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504d -+device.name Rage 128 PM -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504e -+device.name Rage 128 PN -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504f -+device.name Rage 128 PO -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5050 -+device.name Rage 128 PP -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5051 -+device.name Rage 128 PQ -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5052 -+device.name Rage 128 PR -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5053 -+device.name Rage 128 PS -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5054 -+device.name Rage 128 PT -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5055 -+device.name Rage 128 PU -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5056 -+device.name Rage 128 PV -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5057 -+device.name Rage 128 PW -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5058 -+device.name Rage 128 PX -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5144 -+device.name Radeon QD -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5145 -+device.name Radeon QE -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5146 -+device.name Radeon QF -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5147 -+device.name Radeon QG -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5148 -+device.name fgl8x00 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5148 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0152 -+subdevice.name FireGL 8800 - - vendor.id pci 0x1002 -&device.id pci 0x5148 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0172 -+subdevice.name FireGL 8700 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x514c -+device.name R200 QL -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x514d -+device.name Radeon 9100 QM -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -+device.name RV200 QW -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x013a -+subdevice.name Radeon 7500 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7146 -+subdevice.name Radeon 7500-7146 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7161 -+subdevice.name Radeon 7500 LE -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5158 -+device.name RV200 QX -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5159 -+device.name Radeon VE -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x515a -+device.name Radeon QZ -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x515e -+device.name ES1000 (1002:515E) -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x5969 - - vendor.id pci 0x1002 -&device.id pci 0x5245 -+device.name Rage 128 RE -+driver.xfree 4|r128|||||8,15,16,24 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5246 -+device.name Rage 128 RF -+driver.xfree 4|r128|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5247 -+device.name Rage 128 RG -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x524b -+device.name Rage 128 RK -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x524c -+device.name Rage 128 RL -+driver.xfree 4|r128|||||8,15,16,24 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5345 -+device.name Rage 128 SE -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5346 -+device.name Rage 128 SF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5347 -+device.name Rage 128 SG -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5348 -+device.name Rage 128 4x -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x534b -+device.name Rage 128 SK -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x534c -+device.name Rage 128 SL -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x534d -+device.name Rage 128 SM -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x534e -+device.name Rage 128 SN -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5446 -+device.name Rage 128 Ultra TF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x544c -+device.name Rage128 TL -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5452 -+device.name Rage 128 Pro TR (AGP) -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5453 -+device.name Rage 128 TS -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5454 -+device.name Rage 128 TT -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5455 -+device.name Rage 128 TU -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5460 -+device.name Radeon Mobility M300 (M22) 5460 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5464 -+device.name FireGL M22 GL 5464 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5548 -+device.name Radeon X800 (R423) UH (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5549 -+device.name Radeon X800PRO (R423) UI (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x554a -+device.name Radeon X800LE (R423) UJ (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x554b -+device.name Radeon X800SE (R423) UK (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x554d -+device.name Radeon X800 XL -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x554b - - vendor.id pci 0x1002 -&device.id pci 0x554d -&subvendor.id pci 0x174b -&subdevice.id pci 0x0600 -+subdevice.name Radeon X800 XL - - vendor.id pci 0x1002 -&device.id pci 0x5551 -+device.name FireGL V7200 (R423) UQ (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5552 -+device.name FireGL V5100 (R423) UR (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5554 -+device.name FireGL V7100 (R423) UT (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5654 -+device.name Mach64 VT -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x5655 -+device.name 264VT3 [Mach64 VT3] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x5656 -+device.name 264VT4 [Mach64 VT4] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x5834 -+device.name RS300 5834 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5835 -+device.name RS300 5835 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5960 -+device.name RV280 5960 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5961 -+device.name RV280 5961 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5962 -+device.name RV280 5962 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5964 -+device.name RV280 5964 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5964 -&subvendor.id pci 0x17af -&subdevice.id pci 0x2012 -+subdevice.name Radeon 9200 SE (DH) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5969 -+device.name ES1000 (PCI) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5b60 -+device.name Radeon X300 (RV370) 5B60 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5b60 -&subvendor.id pci 0x174b -&subdevice.id pci 0x0440 -+subdevice.name Radeon X300 SE -+driver.xfree 4|radeon -+driver.xfree 4|fglrx|3d||dri -+driver.xfree.config Option "UseInternalAGPGART" "no" -+driver.xfree.config Option "mtrr" "off" -+driver.xfree.config Option "VideoOverlay" "on" -+driver.xfree.config Option "OpenGLOverlay" "off" -+requires fglrx - - vendor.id pci 0x1002 -&device.id pci 0x5b62 -+device.name Radeon X600 (RV370) 5B62 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5b64 -+device.name FireGL V3100 (RV370) 5B64 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5b65 -+device.name FireGL D1100 (RV370) 5B65 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5c61 -+device.name RV280 5c61 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5c63 -+device.name RV280 5c63 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5d57 -+device.name Radeon X800XT (R423) 5D57 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5e4a -+device.name Radeon X700 XT -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x5D57 - - vendor.id pci 0x1002 -&device.id pci 0x5e4b -+device.name Radeon X700 Pro -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x5549 -+driver.xfree 4|fglrx|3d||dri -+requires fglrx - - vendor.id pci 0x1002 -&device.id pci 0x5e4c -+device.name Radeon X700 SE -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x554B - - vendor.id pci 0x1002 -&device.id pci 0x5e4d -+device.name Radeon X700 (5E4D) -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x5548 - - vendor.id pci 0x1002 -&device.id pci 0x5e4f -+device.name Radeon X700 (5E4F) -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x5548 - - vendor.id pci 0x1002 -&device.id pci 0x7834 -+device.name Radeon 9100 PRO IGP 7834 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x7835 -+device.name Radeon Mobility 9200 IGP 7835 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x100b -+vendor.name National Semiconductor Corporation - - vendor.id pci 0x100b -&device.id pci 0x0030 -+device.name REDCLOUD -+driver.xfree 4|nsc - - vendor.id pci 0x100b -&device.id pci 0x0104 -+device.name SC1400 -+driver.xfree 4|nsc - - vendor.id pci 0x100b -&device.id pci 0x0504 -+device.name SC1200 -+driver.xfree 4|nsc - - vendor.id pci 0x100c -+vendor.name Tseng Labs Inc - - vendor.id pci 0x100c -&device.id pci 0x3202 -+device.name ET4000/W32p rev A -+driver.xfree 4|tseng - - vendor.id pci 0x100c -&device.id pci 0x3205 -+device.name ET4000/W32p rev B -+driver.xfree 4|tseng - - vendor.id pci 0x100c -&device.id pci 0x3206 -+device.name ET4000/W32p rev C -+driver.xfree 4|tseng - - vendor.id pci 0x100c -&device.id pci 0x3207 -+device.name ET4000/W32p rev D -+driver.xfree 4|tseng - - vendor.id pci 0x100c -&device.id pci 0x3208 -+device.name ET6000 -+driver.xfree 4|tseng - - vendor.id pci 0x1013 -+vendor.name Cirrus Logic - - vendor.id pci 0x1013 -&device.id pci 0x0038 -+device.name GD 7548 -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00a0 -+device.name GD 5430/40 [Alpine] -+driver.xfree 4|cirrus||||Noaccel - - vendor.id pci 0x1013 -&device.id pci 0x00a4 -+device.name GD 5434-4 [Alpine] -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00a8 -+device.name GD 5434-8 [Alpine] -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00ac -+device.name GD 5436 [Alpine] -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00b8 -+device.name GD 5446 -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00bc -+device.name GD 5480 -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00d0 -+device.name GD 5462 -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00d4 -+device.name GD 5464 [Laguna] -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00d5 -+device.name GD5464BD -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00d6 -+device.name GD 5465 [Laguna] -+driver.xfree 4|cirrus - - vendor.id pci 0x1023 -+vendor.name Trident Microsystems Inc. - - vendor.id pci 0x1023 -&device.id pci 0x2100 -+device.name CyberBlade/xp4 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8400 -+device.name CyberBlade/i7 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8420 -+device.name CyberBlade/i7d -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8500 -+device.name CyberBlade/i1 -+driver.xfree 4|trident||||CyberStretch,sw_cursor - - vendor.id pci 0x1023 -&device.id pci 0x8520 -+device.name 8520 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8600 -+device.name 8600 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8620 -+device.name CyberBlade/DSTN/Ai1 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8820 -+device.name 8820 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9320 -+device.name 9320 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9388 -+device.name Cyber 9388 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9397 -+device.name Cyber 9397 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x939a -+device.name Cyber 9397DVD -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9420 -+device.name TGUI 9420 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9440 -+device.name TGUI 9440 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9520 -+device.name Cyber 9520 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9525 -+device.name Cyber 9525 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9540 -+device.name Cyber 9540 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9660 -+device.name TGUI 9660/968x/968x -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9750 -+device.name 3DIm`age 975 -+driver.xfree 4|trident|||||8,15,16,24 - - vendor.id pci 0x1023 -&device.id pci 0x9850 -+device.name 3DImage 9850 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9880 -+device.name 9880 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9910 -+device.name 9910 -+driver.xfree 4|trident - - vendor.id pci 0x102b -+vendor.name Matrox Graphics, Inc. - - vendor.id pci 0x102b -&device.id pci 0x0519 -+device.name MGA 2064W [Millennium] -+driver.xfree 4|mga||||NoHal|8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051a -+device.name MGA 1064SG [Mystique] -+driver.xfree 4|mga||||NoHal|8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051b -+device.name MGA 2164W [Millennium II] -+driver.xfree 4|mga||||NoHal|8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051f -+device.name MGA 2164W [Millennium II] AGP -+driver.xfree 4|mga||||NoHal - - vendor.id pci 0x102b -&device.id pci 0x0520 -+device.name MGA G200 -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x0521 -+device.name MGA G200 AGP -+driver.xfree 4|mga|||||8,16,24 -+driver.xfree.config VideoRam 8192 -+driver.xfree 4|mga|3d||dri||16 -+driver.xfree.config VideoRam 8192 - - vendor.id pci 0x102b -&device.id pci 0x0525 -+device.name MGA G400 AGP -+driver.xfree 4|mga -+driver.xfree 4|mga|3d||dri - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0540 -+subdevice.name G450-0540 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0541 -+subdevice.name G450 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0641 -+subdevice.name Matrox G400 DH-0641 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x07c0 -+subdevice.name G450 LE - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0d41 -+subdevice.name G450 DH G450 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0d43 -+subdevice.name G450 PCI -+driver.xfree 4|mga - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x2179 -+subdevice.name G400 DH - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x23c3 -+subdevice.name G450-23c3 - - vendor.id pci 0x102b -&device.id pci 0x1000 -+device.name MGA G100 [Productiva] -+driver.xfree 4|mga||||NoHal - - vendor.id pci 0x102b -&device.id pci 0x1001 -+device.name MGA G100 [Productiva] AGP -+driver.xfree 4|mga||||NoHal|8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x2527 -+device.name G550 -+driver.xfree 4|mga -+driver.xfree 4|mga|3d||dri - - vendor.id pci 0x102c -+vendor.name Chips and Technologies - - vendor.id pci 0x102c -&device.id pci 0x00c0 -+device.name F69000 HiQVideo -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00d8 -+device.name F65545 -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00dc -+device.name F65548 -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00e0 -+device.name 65550 -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00e4 -+device.name F65554 -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00e5 -+device.name F65555 HiQVPro -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00f4 -+device.name F68554 HiQVision -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x0c30 -+device.name 69030 -+driver.xfree 4|chips - - vendor.id pci 0x1039 -+vendor.name Silicon Integrated Systems Corp. - - vendor.id pci 0x1039 -&device.id pci 0x0200 -+device.name 5597/5598 VGA -+driver.xfree 4|sis|||||16,24 - - vendor.id pci 0x1039 -&device.id pci 0x0300 -+device.name SIS300 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x0310 -+device.name SiS315H -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x0325 -+device.name SiS315PRO -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x0330 -+device.name SiS330 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x0340 -+device.name SiS340 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x5300 -+device.name SiS540 PCI Display Adapter -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x5315 -+device.name SiS550 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x6300 -+device.name SiS630 GUI Accelerator+3D -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x6306 -+device.name 6306 3D-AGP -+driver.xfree 4|sis|||||16 - - vendor.id pci 0x1039 -&device.id pci 0x6325 -+device.name SiS650 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x6326 -+device.name 86C326 -+driver.xfree 4|sis|||||8,16,24 - - vendor.id pci 0x1039 -&device.id pci 0x6330 -+device.name SiS 660 -+driver.xfree 4|sis - - vendor.id pci 0x104c -+vendor.name Texas Instruments - - vendor.id pci 0x104c -&device.id pci 0x3d04 -+device.name TVP4010 [Permedia] -+driver.xfree 4|glint - - vendor.id pci 0x104c -&device.id pci 0x3d07 -+device.name TVP4020 [Permedia 2] -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x105d -+vendor.name Number 9 Computer Company - - vendor.id pci 0x105d -&device.id pci 0x2309 -+device.name Imagine 128 -+driver.xfree 4|i128 - - vendor.id pci 0x105d -&device.id pci 0x2339 -+device.name Imagine 128-II -+driver.xfree 4|i128 - - vendor.id pci 0x105d -&device.id pci 0x493d -+device.name Imagine 128 T2R [Ticket to Ride] -+driver.xfree 4|i128 - - vendor.id pci 0x105d -&device.id pci 0x5348 -+device.name Revolution 4 -+driver.xfree 4|i128 - - vendor.id pci 0x1078 -+vendor.name Cyrix Corporation - - vendor.id pci 0x1078 -&device.id pci 0x0000 -+device.name 5510 -+driver.xfree 4|cyrix - - vendor.id pci 0x1078 -&device.id pci 0x0002 -+device.name 5520 [Cognac] -+driver.xfree 4|cyrix - - vendor.id pci 0x1078 -&device.id pci 0x0104 -+device.name 5530 Video [Kahlua] -+driver.xfree 4|cyrix - - vendor.id pci 0x10c8 -+vendor.name Neomagic Corporation - - vendor.id pci 0x10c8 -&device.id pci 0x0001 -+device.name NM2070 [MagicGraph NM2070] -+driver.xfree 4|neomagic - - vendor.id pci 0x10c8 -&device.id pci 0x0002 -+device.name NM2090 [MagicGraph 128V] -+driver.xfree 4|neomagic - - vendor.id pci 0x10c8 -&device.id pci 0x0003 -+device.name NM2093 [MagicGraph 128ZV] -+driver.xfree 4|neomagic - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -+device.name NM2160 [MagicGraph 128XD] -+driver.xfree 4|neomagic|||||8,16 - - vendor.id pci 0x10c8 -&device.id pci 0x0005 -+device.name MagicMedia 256AV -+driver.xfree 4|neomagic|||||8,16,24 - - vendor.id pci 0x10c8 -&device.id pci 0x0006 -+device.name NM2360 [MagicMedia 256ZX] -+driver.xfree 4|neomagic|||||16 - - vendor.id pci 0x10c8 -&device.id pci 0x0016 -+device.name 256XL(2380) -+driver.xfree 4|neomagic|||||8,16,24 -+driver.xfree.config VideoRam 4096 - - vendor.id pci 0x10c8 -&device.id pci 0x0025 -+device.name NM2230 -+driver.xfree 4|neomagic - - vendor.id pci 0x10c8 -&device.id pci 0x0083 -+device.name MagicGraph 128ZV Plus -+driver.xfree 4|neomagic - - vendor.id pci 0x10de -+vendor.name nVidia Corporation - - vendor.id pci 0x10de -&device.id pci 0x0020 -+device.name RIVA TNT -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0028 -+device.name RIVA TNT2/TNT2 Pro -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0029 -+device.name RIVA TNT2 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x002a -+device.name Unknown TNT2 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x002c -+device.name Vanta/Vanta LT -+driver.xfree 4|nv|||||8,16,24 -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x002d -+device.name RIVA TNT2 Model 64/Model 64 Pro -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0040 -+device.name GeForce 6800 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0041 -+device.name GeForce 6800 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0042 -+device.name GeForce 6800 LE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0043 -+device.name 0x0043 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0045 -+device.name GeForce 6800 GT -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0049 -+device.name 0x0049 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x004e -+device.name Quadro FX 4000 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00a0 -+device.name Aladdin TNT2 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x00c0 -+device.name 0x00c0 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00c1 -+device.name GeForce 6800 (0x00C1) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00c2 -+device.name 0x00c2 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00c8 -+device.name GeForce Go 6800 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00c9 -+device.name GeForce Go 6800 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00cc -+device.name Quadro FX Go1400 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00cd -+device.name 0x00CD -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00ce -+device.name Quadro FX 1400 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00f0 -+device.name GeForce 6800/GeForce 6800 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00f1 -+device.name GeForce 6600/GeForce 6600 GT -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00f2 -+device.name GeForce 6600 GT (0x00F2) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00f3 -+device.name GeForce 6200 (AGP) -+driver.xfree 4|nv -+driver.xfree.config Option "noaccel" -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00f8 -+device.name Quadro FX 3400 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00f9 -+device.name GeForce 6800 Ultra (0x00F9) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00fa -+device.name GeForce PCX 5750 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00fb -+device.name GeForce PCX 5900 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00fc -+device.name Quadro FX 330/GeForce PCX 5300 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00fd -+device.name Quadro NVS 280 PCI-E/Quadro FX 330 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00fe -+device.name Quadro FX 1300 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00ff -+device.name GeForce PCX 4300 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0100 -+device.name GeForce 256 -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0101 -+device.name GeForce DDR -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0103 -+device.name Quadro -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0110 -+device.name GeForce2 MX/MX 400 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0111 -+device.name GeForce2 MX 100/200 -+driver.xfree 4|nv||||sw_cursor -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0112 -+device.name GeForce2 Go -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree 4|nvidia|3d||||16 -+driver.xfree.config #Option "CrtcNumber" "0" - - vendor.id pci 0x10de -&device.id pci 0x0113 -+device.name Quadro2 MXR/EX/Go -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0140 -+device.name GeForce 6600 GT -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0141 -+device.name GeForce 6600 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0141 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x3124 -+subdevice.name GeForce 6600 (Gigabyte) -+driver.xfree 4|nv -+driver.xfree.config Option "XaaNoScreenToScreenCopy" -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0142 -+device.name 0x0142 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0143 -+device.name 0x0143 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0144 -+device.name GeForce Go 6600 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0145 -+device.name GeForce 6610 XL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0146 -+device.name GeForce Go 6600 TE/6200 TE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0147 -+device.name 0x0147 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0148 -+device.name GeForce Go 6600 (0x0148) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0149 -+device.name 0x0149 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x014b -+device.name 0x014b -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x014c -+device.name 0x014c -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x014d -+device.name 0x014d -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x014e -+device.name Quadro FX 540 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x014f -+device.name GeForce 6200 -+driver.xfree 4|nv -+driver.xfree.config Option "XaaNoScreenToScreenCopy" -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0150 -+device.name GeForce2 GTS/GeForce2 Pro -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0151 -+device.name GeForce2 Ti -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0152 -+device.name GeForce2 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0153 -+device.name Quadro2 Pro -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0160 -+device.name 0x0160 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0161 -+device.name GeForce 6200 TurboCache(TM) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0161 -&subvendor.id pci 0x10de -&subdevice.id pci 0x025c -+subdevice.name GeForce 6200 TurboCache(TM) (10de:025c) -+driver.xfree 4|nv -+driver.xfree.config Option "XaaNoScreenToScreenCopy" -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0162 -+device.name 0x0162 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0163 -+device.name 0x0163 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0164 -+device.name GeForce Go 6200 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0165 -+device.name 0x0165 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0166 -+device.name GeForce Go 6250 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0167 -+device.name GeForce Go 6200 (0x0167) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0168 -+device.name GeForce Go 6250 (0x0168) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0169 -+device.name 0x0169 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x016b -+device.name 0x016B -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x016c -+device.name 0x016C -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x016d -+device.name 0x016D -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x016e -+device.name 0x016E -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0170 -+device.name GeForce4 MX 460 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0171 -+device.name GeForce4 MX 440 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0172 -+device.name GeForce4 MX 420 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0173 -+device.name GeForce4 MX 440-SE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0174 -+device.name GeForce4 440 Go -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" -+driver.xfree 4|nvidia|3d||||16 -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x0175 -+device.name GeForce4 420 Go -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" -+driver.xfree 4|nvidia|3d||||16 -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x0176 -+device.name GeForce4 420 Go 32M -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" -+driver.xfree 4|nvidia|3d||||16 -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x0176 -&subvendor.id pci 0x1584 -&subdevice.id pci 0x2241 -+subdevice.name GeForce4 Go DH -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0177 -+device.name GeForce4 460 Go -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0178 -+device.name Quadro4 550 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0178 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0151 -+subdevice.name Quadro4 550 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0179 -+device.name GeForce4 440 Go 64M -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" -+driver.xfree 4|nvidia|3d||||16 -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x017a -+device.name Quadro4 NVS -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x017c -+device.name Quadro4 500 GoGL -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" -+driver.xfree 4|nvidia|3d||||16 -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x017d -+device.name GeForce4 410 Go 16M -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0181 -+device.name GeForce4 MX 440 with AGP8X -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0182 -+device.name GeForce4 MX 440SE with AGP8X -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0183 -+device.name GeForce4 MX 420 with AGP8X -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0185 -+device.name GeForce4 MX 4000 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0186 -+device.name GeForce4 448 Go -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0187 -+device.name GeForce4 488 Go -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0188 -+device.name Quadro4 580 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0189 -+device.name GeForce4 MX with AGP8X (Mac) -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x018a -+device.name Quadro NVS with AGP8X -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x018b -+device.name Quadro4 380 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x018c -+device.name Quadro NVS 50 PCI -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x018d -+device.name GeForce4 448 Go (0x018D) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x01a0 -+device.name GeForce2 Integrated GPU -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x01f0 -+device.name GeForce4 MX Integrated GPU -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0200 -+device.name GeForce3 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0201 -+device.name GeForce3 Ti 200 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0202 -+device.name GeForce3 Ti 500 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0203 -+device.name Quadro DCC -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0210 -+device.name 0x0210 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0211 -+device.name GeForce 6800 (0x0211) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0212 -+device.name GeForce 6800 LE (0x0212) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0215 -+device.name GeForce 6800 GT (0x0215) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0220 -+device.name 0x0220 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0221 -+device.name 0x0221 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0222 -+device.name 0x0222 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0228 -+device.name 0x0228 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0250 -+device.name GeForce4 Ti 4600 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0250 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x8725 -+subdevice.name GeForce4 Ti 4600 DH -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0251 -+device.name GeForce4 Ti 4400 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0252 -+device.name NV25 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0253 -+device.name GeForce4 Ti 4200 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0258 -+device.name Quadro4 900 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0258 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0138 -+subdevice.name Quadro4 900 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0259 -+device.name Quadro4 750 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0259 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0139 -+subdevice.name Quadro4 750 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x025b -+device.name Quadro4 700 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x025b -&subvendor.id pci 0x10de -&subdevice.id pci 0x013b -+subdevice.name Quadro4 700 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0280 -+device.name GeForce4 Ti 4800 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0281 -+device.name GeForce4 Ti 4200 with AGP8X -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0282 -+device.name GeForce4 Ti 4800 SE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0286 -+device.name GeForce4 4200 Go -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0288 -+device.name Quadro4 980 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0288 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0174 -+subdevice.name Quadro4 980 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0289 -+device.name Quadro4 780 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x028c -+device.name Quadro4 700 GoGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0301 -+device.name GeForce FX 5800 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0302 -+device.name GeForce FX 5800 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0308 -+device.name Quadro FX 2000 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0308 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0183 -+subdevice.name Quadro FX2000 DH - - vendor.id pci 0x10de -&device.id pci 0x0309 -+device.name Quadro FX 1000 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0309 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0182 -+subdevice.name Quadro FX1000 DH -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0311 -+device.name GeForce FX 5600 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0312 -+device.name GeForce FX 5600 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0313 -+device.name 0x0313 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0314 -+device.name GeForce FX 5600XT -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0316 -+device.name 0x0316 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0317 -+device.name 0x0317 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x031a -+device.name GeForce FX Go5600 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x031b -+device.name GeForce FX Go5650 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x031c -+device.name Quadro FX Go700 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x031d -+device.name 0x031d -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x031e -+device.name 0x031e -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x031f -+device.name 0x031f -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0320 -+device.name GeForce FX 5200 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0321 -+device.name GeForce FX 5200 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0322 -+device.name GeForce FX 5200 (0x0322) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0322 -&subvendor.id pci 0x10b0 -&subdevice.id pci 0x0431 -+subdevice.name GeForce FX 5200 DH -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0323 -+device.name GeForce FX 5200LE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0324 -+device.name GeForce FX Go5200 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0325 -+device.name GeForce FX Go5250 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0326 -+device.name GeForce FX 5500 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0327 -+device.name GeForce FX 5100 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0328 -+device.name GeForce FX Go5200 32M/64M -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0329 -+device.name GeForce FX 5200 (Mac) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x032a -+device.name Quadro NVS 280 PCI -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x032b -+device.name Quadro FX 500/600 PCI -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x032c -+device.name GeForce FX Go53xx -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x032d -+device.name GeForce FX Go5100 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x032f -+device.name 0x032F -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0330 -+device.name GeForce FX 5900 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0331 -+device.name GeForce FX 5900 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0332 -+device.name GeForce FX 5900XT -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0333 -+device.name GeForce FX 5950 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0333 -&subvendor.id pci 0x10b0 -&subdevice.id pci 0x0602 -+subdevice.name GeForce FX 5950 - - vendor.id pci 0x10de -&device.id pci 0x0334 -+device.name GeForce FX 5900ZT -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0338 -+device.name Quadro FX 3000 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0338 -&subvendor.id pci 0x10de -&subdevice.id pci 0x01c2 -+subdevice.name Quadro FX 3000 DH - - vendor.id pci 0x10de -&device.id pci 0x033f -+device.name Quadro FX 700 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0341 -+device.name GeForce FX 5700 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0341 -&subvendor.id pci 0x270f -&subdevice.id pci 0x194c -+subdevice.name GeForce FX 5700 Ultra DH - - vendor.id pci 0x10de -&device.id pci 0x0342 -+device.name GeForce FX 5700 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0343 -+device.name GeForce FX 5700LE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0344 -+device.name GeForce FX 5700VE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0345 -+device.name 0x0345 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0347 -+device.name GeForce FX Go5700 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0348 -+device.name GeForce FX Go5700 (0x0348) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0349 -+device.name 0x0349 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x034b -+device.name 0x034b -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x034c -+device.name Quadro FX Go1000 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x034e -+device.name Quadro FX 1100 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x034f -+device.name 0x034f -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10e0 -+vendor.name Imstt - - vendor.id pci 0x10e0 -&device.id pci 0x9128 -+device.name Imstt128 -+driver.xfree 4|imstt - - vendor.id pci 0x10e0 -&device.id pci 0x9135 -+device.name Imstt3D -+driver.xfree 4|imstt - - vendor.id pci 0x1106 -+vendor.name VIA Technologies, Inc. - - vendor.id pci 0x1106 -&device.id pci 0x3122 -+device.name VIA CLE 3122 -+driver.xfree 4|via - - vendor.id pci 0x1106 -&device.id pci 0x7205 -+device.name VIA VT 7205 -+driver.xfree 4|via - - vendor.id pci 0x1106 -&device.id pci 0x7205 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x0033 -+subdevice.name Acer Incorporated VIA VT 7205 - - vendor.id pci 0x1106 -&device.id pci 0x7205 -&subvendor.id pci 0x1584 -&subdevice.id pci 0x800a -+subdevice.name Uniwill VIA VT 7205 - - vendor.id pci 0x1142 -+vendor.name Alliance Semiconductor Corporation - - vendor.id pci 0x1142 -&device.id pci 0x6422 -+device.name ProVideo 6422 -+driver.xfree 4|apm - - vendor.id pci 0x1142 -&device.id pci 0x6424 -+device.name ProVideo 6424 -+driver.xfree 4|apm - - vendor.id pci 0x1163 -+vendor.name Rendition - - vendor.id pci 0x1163 -&device.id pci 0x0001 -+device.name Verite 1000 -+driver.xfree 4|rendition - - vendor.id pci 0x1163 -&device.id pci 0x2000 -+device.name Verite V2000/V2100/V2200 -+driver.xfree 4|rendition - - vendor.id pci 0x121a -+vendor.name 3Dfx Interactive, Inc. - - vendor.id pci 0x121a -&device.id pci 0x0003 -+device.name Voodoo Banshee -+driver.xfree 4|tdfx|||||8,16,24 -+driver.xfree 4|tdfx|3d||dri||16 - - vendor.id pci 0x121a -&device.id pci 0x0005 -+device.name Voodoo 3 -+driver.xfree 4|tdfx|||||8,16,24 -+driver.xfree 4|tdfx|3d||dri||16 - - vendor.id pci 0x121a -&device.id pci 0x0009 -+device.name Voodoo5 5500 -+driver.xfree 4|tdfx|||||8,16,24 -+driver.xfree 4|tdfx|3d||dri||16 - - vendor.id pci 0x126f -+vendor.name Silicon Motion, Inc. - - vendor.id pci 0x126f -&device.id pci 0x0710 -+device.name SM710 LynxEM -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0712 -+device.name SM712 LynxEM+ -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0720 -+device.name SM720 Lynx3DM -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0730 -+device.name SMI 731 -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0810 -+device.name SM810 LynxE -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0820 -+device.name 820 -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0910 -+device.name SM910 -+driver.xfree 4|siliconmotion - - vendor.id pci 0x12d2 -+vendor.name NVidia / SGS Thomson (Joint Venture) - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -+device.name Riva128 -+driver.xfree 4|nv|||||15,24 - - vendor.id pci 0x15ad -+vendor.name VMWare Inc - - vendor.id pci 0x15ad -&device.id pci 0x0405 -+device.name VMWARE0405 -+driver.xfree 4|vmware - - vendor.id pci 0x15ad -&device.id pci 0x0710 -+device.name VMWARE0710 -+driver.xfree 4|vmware - - vendor.id pci 0x18ca -+vendor.name XGI Technology Inc. - - vendor.id pci 0x18ca -&device.id pci 0x0020 -+device.name Volari Z7 -+driver.xfree 4|xgi - - vendor.id pci 0x18ca -&device.id pci 0x0040 -+device.name Volari V8_V5_V3XT -+driver.xfree 4|xgi - - vendor.id pci 0x3d3d -+vendor.name 3DLabs - - vendor.id pci 0x3d3d -&device.id pci 0x0002 -+device.name GLINT 500TX -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x0004 -+device.name Permedia -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x0006 -+device.name GLINT MX -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x0007 -+device.name 3D Extreme -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -+device.name Permedia II 2D+3D -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x3d3d -&device.id pci 0x000a -+device.name GLINT R3 -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x000c -+device.name Permedia 4 -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x000d -+device.name R4 -+driver.xfree 4|glint - - vendor.id pci 0x5333 -+vendor.name S3 Inc. - - vendor.id pci 0x5333 -&device.id pci 0x5631 -+device.name 86c325 [ViRGE] -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8811 -+device.name 86c764/765 [Trio32/64/64V+] -+driver.xfree 4|s3 - - vendor.id pci 0x5333 -&device.id pci 0x8812 -+device.name 86cM65 [Aurora64V+] -+driver.xfree 4|s3 - - vendor.id pci 0x5333 -&device.id pci 0x8814 -+device.name 86c767 [Trio 64UV+] -+driver.xfree 4|s3 - - vendor.id pci 0x5333 -&device.id pci 0x883d -+device.name 86c988 [ViRGE/VX] -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8901 -+device.name Trio 64V2/DX or /GX -+driver.xfree 4|s3 - - vendor.id pci 0x5333 -&device.id pci 0x8904 -+device.name Integrated Trio3D -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8a01 -+device.name ViRGE/DX -+driver.xfree 4|s3virge||||noVBE - - vendor.id pci 0x5333 -&device.id pci 0x8a10 -+device.name ViRGE/GX2 -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8a13 -+device.name 86c368 [Trio 3D/2X] -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8a20 -+device.name 86c794 [Savage 3D] -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8a21 -+device.name 86c795 [Savage 3D/MV] -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -+device.name Savage 4 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8a25 -+device.name ProSavage PM 133 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8a26 -+device.name ProSavage KM 133 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c01 -+device.name ViRGE/MX -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8c03 -+device.name ViRGE/MX+MV -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8c10 -+device.name 86C270-294 Savage/MX-/IX -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c11 -+device.name Savage MX -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c12 -+device.name Savage IX/MV -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c12 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x017f -+subdevice.name Savage IX/MV IBM -+driver.xfree 4|savage||||ShadowStatus - - vendor.id pci 0x5333 -&device.id pci 0x8c13 -+device.name Savage IX -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c22 -+device.name SuperSavage/MX 128 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c24 -+device.name SuperSavage/MX 64 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c26 -+device.name SuperSavage/MX 64C -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2a -+device.name SuperSavage/IX 128 SDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2b -+device.name SuperSavage/IX 128 DDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2c -+device.name SuperSavage/IX 64 SDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2d -+device.name SuperSavage/IX 64 DDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2e -+device.name SuperSavage/IXC 64 SDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2f -+device.name SuperSavage/IXC 64 DDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8d01 -+device.name S3Twister_P -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8d02 -+device.name Twister_K -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8d03 -+device.name ProSavage DDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8d04 -+device.name ProSavage DDR-K -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x9102 -+device.name 86C410 Savage 2000 -+driver.xfree 4|savage - - vendor.id pci 0x8086 -+vendor.name Intel Corporation - - vendor.id pci 0x8086 -&device.id pci 0x00d1 -+device.name i740_PCI -+driver.xfree 4|i740 - - vendor.id pci 0x8086 -&device.id pci 0x1132 -+device.name I815 -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16 - - vendor.id pci 0x8086 -&device.id pci 0x2562 -+device.name i845 -+driver.xfree 4|i810 -+driver.xfree.config Option "NoDDC" -+driver.xfree 4|i810|3d||dri -+driver.xfree.config Option "NoDDC" - - vendor.id pci 0x8086 -&device.id pci 0x2572 -+device.name 865 G -+driver.xfree 4|i810 -+driver.xfree.config Option "NoDDC" -+driver.xfree 4|i810|3d||dri -+driver.xfree.config Option "NoDDC" - - vendor.id pci 0x8086 -&device.id pci 0x2582 -+device.name 915 G -+driver.xfree 4|i810 -+driver.xfree.config Option "NoDDC" -+driver.xfree 4|i810|3d||dri -+driver.xfree.config Option "NoDDC" - - vendor.id pci 0x8086 -&device.id pci 0x2592 -+device.name 915 GM -+driver.xfree 4|i810 -+driver.xfree.config Option "NoDDC" - - vendor.id pci 0x8086 -&device.id pci 0x3577 -+device.name i830 -+driver.xfree 4|i810 -+driver.xfree.config Option "NoDDC" -+driver.xfree 4|i810|3d||dri -+driver.xfree.config Option "NoDDC" - - vendor.id pci 0x8086 -&device.id pci 0x3582 -+device.name 855 GM -+driver.xfree 4|i810 -+driver.xfree.config Option "NoDDC" -+driver.xfree 4|i810|3d||dri -+driver.xfree.config Option "NoDDC" - - vendor.id pci 0x8086 -&device.id pci 0x7121 -+device.name 82810 CGC [Chipset Graphics Controller] -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16 - - vendor.id pci 0x8086 -&device.id pci 0x7123 -+device.name 82810-DC100 CGC [Chipset Graphics Controller] -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16 - - vendor.id pci 0x8086 -&device.id pci 0x7125 -+device.name 82810E CGC [Chipset Graphics Controller] -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16 - - vendor.id pci 0x8086 -&device.id pci 0x7800 -+device.name i740 -+driver.xfree 4|i740 - - vendor.id pci 0xedd8 -+vendor.name ARK Logic Inc - - vendor.id pci 0xedd8 -&device.id pci 0xa091 -+device.name 1000PV [Stingray] -+driver.xfree 4|ark - - vendor.id pci 0xedd8 -&device.id pci 0xa099 -+device.name 2000PV [Stingray] -+driver.xfree 4|ark - - vendor.id pci 0xedd8 -&device.id pci 0xa0a1 -+device.name 2000MT -+driver.xfree 4|ark - diff --git a/src/hwinfo/src/ids/src/x11.axp b/src/hwinfo/src/ids/src/x11.axp deleted file mode 100644 index ef79c31299..0000000000 --- a/src/hwinfo/src/ids/src/x11.axp +++ /dev/null @@ -1,841 +0,0 @@ - vendor.id pci 0x1002 -+vendor.name ATI Technologies Inc - - vendor.id pci 0x1002 -&device.id pci 0x0084 -+device.name RageIIC -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x0088 -+device.name Mach64 -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4354 -+device.name 215CT [Mach64 CT] -+driver.xfree 4|ati|||||8,16,24,32 - - vendor.id pci 0x1002 -&device.id pci 0x4358 -+device.name 210888CX [Mach64 CX] -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4554 -+device.name 210888ET [Mach64 ET] -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4654 -+device.name Mach64 VT -+driver.xfree 4|ati|||||8,24 - - vendor.id pci 0x1002 -&device.id pci 0x474d -+device.name Rage XL AGP -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x474e -+device.name Rage XC AGP -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4754 -+device.name 3D Rage I/II 215GT [Mach64 GT] -+driver.xfree 4|ati||||dpms|8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4756 -+device.name 3D Rage IIC 215IIC [Mach64 GT IIC] -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4757 -+device.name 3D Rage IIC AGP -+driver.xfree 4|ati|||||8,15,16,24,32 - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0044 -+subdevice.name 3D Rage LT Pro AGP-133 -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c44 -+device.name 3D Rage LT Pro AGP-66 -+driver.xfree 4|ati|||||8,24 - - vendor.id pci 0x1002 -&device.id pci 0x4c45 -+device.name Rage 128 Mobility LE -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4c46 -+device.name Mobility M3 AGP 2x -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -+device.name 3D Rage P/M Mobility AGP 2x -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c52 -+device.name 3D Rage P/M Mobility -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c54 -+device.name 264LT [Mach64 LT] -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4d46 -+device.name Rage 128 Mobility MF -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4d4c -+device.name Rage 128 Mobility ML -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5041 -+device.name Rage 128 PA -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5042 -+device.name Rage 128 PB -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5043 -+device.name Rage 128 PC -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5044 -+device.name Rage 128 PD -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5045 -+device.name Rage 128 PE -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5046 -+device.name Rage 128 PF -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5047 -+device.name Rage 128 PG -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5048 -+device.name Rage 128 PH -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5049 -+device.name Rage 128 PI -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x504a -+device.name Rage 128 PJ -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x504b -+device.name Rage 128 PK -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x504c -+device.name Rage 128 PL -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x504d -+device.name Rage 128 PM -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x504e -+device.name Rage 128 PN -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x504f -+device.name Rage 128 PO -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5050 -+device.name Rage 128 PP -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5051 -+device.name Rage 128 PQ -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5052 -+device.name Rage 128 PR -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5053 -+device.name Rage 128 PS -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5054 -+device.name Rage 128 PT -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5055 -+device.name Rage 128 PU -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5056 -+device.name Rage 128 PV -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5057 -+device.name Rage 128 PW -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5058 -+device.name Rage 128 PX -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5144 -+device.name Radeon QD -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5145 -+device.name Radeon QE -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5146 -+device.name Radeon QF -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5147 -+device.name Radeon QG -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5245 -+device.name Rage 128 RE -+driver.xfree 4|r128|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5246 -+device.name Rage 128 RF -+driver.xfree 4|r128|||||8,15,16,24 -+driver.xfree 4|r128|3d||dri||16||switch2xf86_glx -+requires xf86_glx - - vendor.id pci 0x1002 -&device.id pci 0x5247 -+device.name Rage 128 RG -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x524b -+device.name Rage 128 RK -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x524c -+device.name Rage 128 RL -+driver.xfree 4|r128|||||8,15,16,24 -+driver.xfree 4|r128|3d||dri||16||switch2xf86_glx -+requires xf86_glx - - vendor.id pci 0x1002 -&device.id pci 0x5345 -+device.name Rage 128 SE -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5346 -+device.name Rage 128 SF -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5347 -+device.name Rage 128 SG -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5348 -+device.name Rage 128 4x -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x534b -+device.name Rage 128 SK -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x534c -+device.name Rage 128 SL -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x534d -+device.name Rage 128 SM -+driver.xfree 4|r128|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5354 -+device.name Mach 64 VT -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5354 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x5654 -+subdevice.name Mach 64 reference - - vendor.id pci 0x1002 -&device.id pci 0x5452 -+device.name Rage 128 Pro TR (AGP) -+driver.xfree 4||||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5655 -+device.name 264VT3 [Mach64 VT3] -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5656 -+device.name 264VT4 [Mach64 VT4] -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x100c -+vendor.name Tseng Labs Inc - - vendor.id pci 0x100c -&device.id pci 0x3206 -+device.name ET4000/W32p rev C -+driver.xfree 4|tseng - - vendor.id pci 0x1011 -+vendor.name Digital Equipment Corporation - - vendor.id pci 0x1011 -&device.id pci 0x0004 -+device.name DECchip 21030 [TGA] -+driver.xfree 4|tga|||||8 - - vendor.id pci 0x1013 -+vendor.name Cirrus Logic - - vendor.id pci 0x1013 -&device.id pci 0x00bc -+device.name GD 5480 -+driver.xfree 4|cirrus - - vendor.id pci 0x1014 -+vendor.name IBM - - vendor.id pci 0x1014 -&device.id pci 0x00b7 -+device.name fgl1 -+driver.xfree 4|firegl1|||||24 -+driver.xfree.config Option "no_accel" "no" -+driver.xfree.config Option "NumDMABuffers2D" "4" -+driver.xfree.config Option "NumDMABuffers" "24" -+driver.xfree.config Option "NumTMBuffers" "4" -+driver.xfree.config Option "Capabilities" "0x00000000" -+driver.xfree.config Option "Capabilities2" "0x00000000" -+driver.xfree 4|firegl1|3d||dri,fgl1|DDCInfo,accel|24||switch2xf86_glx -+driver.xfree.config Option "no_accel" "no" -+driver.xfree.config Option "NumDMABuffers2D" "4" -+driver.xfree.config Option "NumDMABuffers" "24" -+driver.xfree.config Option "NumTMBuffers" "4" -+driver.xfree.config Option "Capabilities" "0x00000000" -+driver.xfree.config Option "Capabilities2" "0x00000000" -+requires xf86_glx|xfiregl1 - - vendor.id pci 0x1014 -&device.id pci 0x0170 -+device.name fgl2 -+driver.xfree 4|firegl23|||||24 -+driver.xfree.config Option "no_accel" "no" -+driver.xfree.config Option "enable DVI" "on" -+driver.xfree.config Option "NumDMABuffers" "24" -+driver.xfree.config Option "NumTMBuffers" "4" -+driver.xfree.config Option "Capabilities" "0x00000000" -+driver.xfree.config Option "Capabilities2" "0x00000000" -+driver.xfree 4|firegl23|3d||dri,fgl23||24||switch2xf86_glx -+driver.xfree.config Option "no_accel" "no" -+driver.xfree.config Option "enable DVI" "on" -+driver.xfree.config Option "NumDMABuffers" "24" -+driver.xfree.config Option "NumTMBuffers" "4" -+driver.xfree.config Option "Capabilities" "0x00000000" -+driver.xfree.config Option "Capabilities2" "0x00000000" -+requires xf86_glx|xfiregl1 - - vendor.id pci 0x1023 -+vendor.name Trident Microsystems Inc. - - vendor.id pci 0x1023 -&device.id pci 0x8400 -+device.name CyberBlade/i7 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8620 -+device.name CyberBlade/DSTN/Ai1 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9385 -+device.name Cyber 9385 [Reference design] -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9525 -+device.name Cyber 9525 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9540 -+device.name Cyber 9540 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9750 -+device.name 3DIm`age 975 -+driver.xfree 4|trident|||||8,15,16,24 - - vendor.id pci 0x102b -+vendor.name Matrox Graphics, Inc. - - vendor.id pci 0x102b -&device.id pci 0x0100 -+device.name Millennium II -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x0518 -+device.name MGA-II [Athena] -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x0519 -+device.name MGA 2064W [Millennium] -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051a -+device.name MGA 1064SG [Mystique] -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051a -&subvendor.id pci 0x102b -&subdevice.id pci 0x1100 -+subdevice.name MGA-1084SG Mystique - - vendor.id pci 0x102b -&device.id pci 0x051b -+device.name MGA 2164W [Millennium II] -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051e -+device.name MGA 1064SG [Mystique] AGP -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051f -+device.name MGA 2164W [Millennium II] AGP -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x0520 -+device.name MGA G200 -+driver.xfree 4|mga||||NoHal|8,16,24 -+driver.xfree 4|mga|3d||dri|NoHal|16||switch2xf86_glx -+requires xf86_glx - - vendor.id pci 0x102b -&device.id pci 0x0521 -+device.name MGA G200 AGP -+driver.xfree 4|mga||||NoHal|8,16,24 -+driver.xfree.config VideoRam 8192 -+driver.xfree 4|mga|3d||dri|NoHal|16||switch2xf86_glx -+driver.xfree.config VideoRam 8192 -+requires xf86_glx - - vendor.id pci 0x102b -&device.id pci 0x0525 -+device.name MGA G400 AGP -+driver.xfree 4|mga||||NoHal|8,15,16,24 -+driver.xfree 4|mga|3d||dri|NoHal|16||switch2xf86_glx -+requires xf86_glx - - vendor.id pci 0x102b -&device.id pci 0x0d10 -+device.name MGA Ultima/Impression -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x1000 -+device.name MGA G100 [Productiva] -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x1001 -+device.name MGA G100 [Productiva] AGP -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x2007 -+device.name MGA Mistral -+driver.xfree 4|mga|||||8 - - vendor.id pci 0x102b -&device.id pci 0xff03 -+device.name Millennium G200 SD -+driver.xfree 4|mga||||sw_cursor|8,16,24 - - vendor.id pci 0x102c -+vendor.name Chips and Technologies - - vendor.id pci 0x102c -&device.id pci 0x00e5 -+device.name F65555 HiQVPro -+driver.xfree 4|chips - - vendor.id pci 0x1039 -+vendor.name Silicon Integrated Systems Corp. - - vendor.id pci 0x1039 -&device.id pci 0x6306 -+device.name 6306 3D-AGP -+driver.xfree 4|sis||||FastVRam,Noaccel|8 - - vendor.id pci 0x104c -+vendor.name Texas Instruments - - vendor.id pci 0x104c -&device.id pci 0x3d07 -+device.name TVP4020 [Permedia 2] -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x105d -+vendor.name Number 9 Computer Company - - vendor.id pci 0x105d -&device.id pci 0x2309 -+device.name Imagine 128 -+driver.xfree 4 - - vendor.id pci 0x1092 -+vendor.name Diamond Multimedia Systems - - vendor.id pci 0x1092 -&device.id pci 0x4820 -+device.name Viper V550 with TV out -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10c8 -+vendor.name Neomagic Corporation - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -+device.name NM2160 [MagicGraph 128XD] -+driver.xfree 4|neomagic|||||8,16 - - vendor.id pci 0x10c8 -&device.id pci 0x0005 -+device.name MagicMedia 256AV -+driver.xfree 4|neomagic|||||8,16,24 - - vendor.id pci 0x10c8 -&device.id pci 0x0006 -+device.name NM2360 [MagicMedia 256ZX] -+driver.xfree 4|neomagic|||||16 - - vendor.id pci 0x10c8 -&device.id pci 0x0016 -+device.name 256XL(2380) -+driver.xfree 4|neomagic|||||8,16,24 -+driver.xfree.config VideoRam 4096 - - vendor.id pci 0x10c8 -&device.id pci 0x8005 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x00dd -+subdevice.name MagicMedia 256AV Audio Device on BlackTip Thinkpad -+driver.xfree 4|neomagic|||||8,16 - - vendor.id pci 0x10de -+vendor.name nVidia Corporation - - vendor.id pci 0x10de -&device.id pci 0x0020 -+device.name RIVA TNT -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0028 -+device.name RIVA TNT2/TNT2 Pro -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0029 -+device.name RIVA TNT2 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x002c -+device.name Vanta/Vanta LT -+driver.xfree 4|nv|||||8,16,24 -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x002d -+device.name RIVA TNT2 Model 64/Model 64 Pro -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x00a0 -+device.name Aladdin TNT2 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0100 -+device.name GeForce 256 -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0101 -+device.name GeForce DDR -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0103 -+device.name Quadro -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0110 -+device.name GeForce2 MX/MX 400 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0111 -+device.name GeForce2 MX 100/200 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0112 -+device.name GeForce2 Go -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0113 -+device.name Quadro2 MXR/EX/Go -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0150 -+device.name GeForce2 GTS/GeForce2 Pro -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0151 -+device.name GeForce2 Ti -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0152 -+device.name GeForce2 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x10de -&device.id pci 0x0153 -+device.name Quadro2 Pro -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16||switch2nvidia_glx -+requires NVIDIA_GLX|NVIDIA_kernel - - vendor.id pci 0x1163 -+vendor.name Rendition - - vendor.id pci 0x1163 -&device.id pci 0x2000 -+device.name Verite V2000/V2100/V2200 -+driver.xfree 4|rendition - - vendor.id pci 0x121a -+vendor.name 3Dfx Interactive, Inc. - - vendor.id pci 0x121a -&device.id pci 0x0001 -+device.name Voodoo -+driver.xfree 4|glide|||||16 -+driver.xfree 4||3d||||16||switch2mesa3dfx -+requires dev3dfx|glide_vg|mesa3dfx - - vendor.id pci 0x121a -&device.id pci 0x0003 -+device.name Voodoo Banshee -+driver.xfree 4|tdfx|||||8,16,24 -+driver.xfree 4|tdfx|3d||dri||16||switch2xf86_glx -+requires glidedri|xf86_glx - - vendor.id pci 0x121a -&device.id pci 0x0005 -+device.name Voodoo 3 -+driver.xfree 4|tdfx|||||8,16 -+driver.xfree 4|tdfx|3d||dri||16||switch2xf86_glx -+requires glidedri|xf86_glx - - vendor.id pci 0x121a -&device.id pci 0x0009 -+device.name Voodoo5 5500 -+driver.xfree 4|tdfx|||||8,16,24 -+driver.xfree 4|tdfx|3d||dri||16||switch2xf86_glx -+requires gldri_v5|xf86_glx - - vendor.id pci 0x126f -+vendor.name Silicon Motion, Inc. - - vendor.id pci 0x126f -&device.id pci 0x0710 -+device.name SM710 LynxEM -+driver.xfree 4|siliconmotion|||||8,15,16,24 - - vendor.id pci 0x12d2 -+vendor.name NVidia / SGS Thomson (Joint Venture) - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -+device.name Riva128 -+driver.xfree 4|nv|||||8,15,16,24 - - vendor.id pci 0x3d3d -+vendor.name 3DLabs - - vendor.id pci 0x3d3d -&device.id pci 0x0007 -+device.name 3D Extreme -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -+device.name Permedia II 2D+3D -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x3d3d -&device.id pci 0x000a -+device.name GLINT R3 -+driver.xfree 4|glint|||||8,32 - - vendor.id pci 0x5333 -+vendor.name S3 Inc. - - vendor.id pci 0x5333 -&device.id pci 0x8a01 -+device.name ViRGE/DX or /GX -+driver.xfree 4|s3virge|||||8,15,16,24 - - vendor.id pci 0x8086 -+vendor.name Intel Corporation - - vendor.id pci 0x8086 -&device.id pci 0x1132 -+device.name I815 -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16||switch2xf86_glx -+driver.xfree.config VideoRam 16384 -+requires xf86_glx - - vendor.id pci 0x8086 -&device.id pci 0x7121 -+device.name 82810 CGC [Chipset Graphics Controller] -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16||switch2xf86_glx -+driver.xfree.config VideoRam 16384 -+requires xf86_glx - - vendor.id pci 0x8086 -&device.id pci 0x7123 -+device.name 82810-DC100 CGC [Chipset Graphics Controller] -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16||switch2xf86_glx -+driver.xfree.config VideoRam 16384 -+requires xf86_glx - - vendor.id pci 0x8086 -&device.id pci 0x7125 -+device.name 82810E CGC [Chipset Graphics Controller] -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16||switch2xf86_glx -+driver.xfree.config VideoRam 16384 -+requires xf86_glx - - vendor.id pci 0x8086 -&device.id pci 0x7800 -+device.name i740 -+driver.xfree 4|i740 - diff --git a/src/hwinfo/src/ids/src/x11.i386 b/src/hwinfo/src/ids/src/x11.i386 deleted file mode 100644 index 30bb3e80a8..0000000000 --- a/src/hwinfo/src/ids/src/x11.i386 +++ /dev/null @@ -1,3355 +0,0 @@ - vendor.id pci 0x1002 -+vendor.name ATI Technologies Inc - - vendor.id pci 0x1002 -&device.id pci 0x3150 -+device.name Radeon Mobility X600 (M24) 3150 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x3154 -+device.name FireGL M24 GL 3154 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x3e50 -+device.name Radeon X600 (RV380) 3E50 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x3e50 -&subvendor.id pci 0x174b -&subdevice.id pci 0x0450 -+subdevice.name Radeon X600 Pro -+driver.xfree 4|radeon -+driver.xfree 4|fglrx|3d||dri -+driver.xfree.config Option "UseInternalAGPGART" "no" -+driver.xfree.config Option "mtrr" "off" -+driver.xfree.config Option "VideoOverlay" "on" -+driver.xfree.config Option "OpenGLOverlay" "off" -+requires fglrx - - vendor.id pci 0x1002 -&device.id pci 0x3e54 -+device.name FireGL V3200 (RV380) 3E54 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4136 -+device.name RS100 4136 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4137 -+device.name RS100 4137 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4144 -+device.name R300 AD -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4145 -+device.name E300 AE -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4146 -+device.name R300 AF -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4147 -+device.name R300 AG -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4148 -+device.name R350 AH -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4149 -+device.name R350 AI -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x414a -+device.name R350 AJ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x414b -+device.name R350 AK -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4150 -+device.name RV350 AP -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4151 -+device.name RV350 AQ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4152 -+device.name RV350 AR -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4153 -+device.name RV350 AS -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4154 -+device.name RV350 AT -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4155 -+device.name RV350 AU -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x4154 - - vendor.id pci 0x1002 -&device.id pci 0x4156 -+device.name RV350 AV -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4157 -+device.name RV350 AW -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x4154 - - vendor.id pci 0x1002 -&device.id pci 0x4237 -+device.name RS250 4237 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4242 -+device.name R200 BB -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4243 -+device.name R200 BC -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4336 -+device.name RS100 4336 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4337 -+device.name RS200 4337 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4354 -+device.name 215CT [Mach64 CT] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4358 -+device.name 210888CX [Mach64 CX] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4437 -+device.name RS250 4437 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4554 -+device.name 210888ET [Mach64 ET] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4742 -+device.name 3D Rage Pro AGP 1X/2X -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4744 -+device.name 3D Rage Pro AGP 1X -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4749 -+device.name Mach64 GI -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x474c -+device.name Rage XC -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x474d -+device.name Rage XL AGP -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x474e -+device.name Rage XC AGP -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x474f -+device.name Rage XL -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4750 -+device.name 3D Rage Pro 215GP -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4751 -+device.name 3D Rage Pro 215GQ -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4752 -+device.name Mach64 GR -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4753 -+device.name Mach64 GS -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4754 -+device.name 3D Rage I/II 215GT [Mach64 GT] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4755 -+device.name 3D Rage II+ 215GTB [Mach64 GTB] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4756 -+device.name 3D Rage IIC 215IIC [Mach64 GT IIC] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4757 -+device.name 3D Rage IIC AGP -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4758 -+device.name 210888GX [Mach64 GX] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4759 -+device.name 3D Rage IIC -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x475a -+device.name Mach64 GZ -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4966 -+device.name RV250 If -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4966 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0002 -+subdevice.name Radeon 9000 - - vendor.id pci 0x1002 -&device.id pci 0x4967 -+device.name RV250 Ig -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4a48 -+device.name R420 JH -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a49 -+device.name R420 JI -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a4a -+device.name R420 JJ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a4b -+device.name R420 JK -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a4c -+device.name R420 JL -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a4d -+device.name R420 JM -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a4e -+device.name R420 JN -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4a50 -+device.name R420 JP -+driver.xfree 4|radeon -+driver.xfree 4|fglrx|3d||dri -+driver.xfree.config Option "UseInternalAGPGART" "no" -+driver.xfree.config Option "mtrr" "off" -+driver.xfree.config Option "VideoOverlay" "on" -+driver.xfree.config Option "OpenGLOverlay" "off" -+requires fglrx - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -+device.name Mach64 LB -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0044 -+subdevice.name 3D Rage LT Pro AGP-133 -+driver.xfree 4|ati -+driver.xfree.config Option "dpms" "off" - - vendor.id pci 0x1002 -&device.id pci 0x4c44 -+device.name 3D Rage LT Pro AGP-66 -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c45 -+device.name Rage 128 Mobility LE -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c46 -+device.name Mobility M3 AGP 2x -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c47 -+device.name 3D Rage LT-G 215LG -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c49 -+device.name Mach64 LI -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -+device.name 3D Rage P/M Mobility AGP 2x -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00bb -+subdevice.name Mach64LM/Dell -+driver.xfree 4|fbdev - - vendor.id pci 0x1002 -&device.id pci 0x4c4e -+device.name 3D Rage L Mobility AGP 2x -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c50 -+device.name 3D Rage LT Pro -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c51 -+device.name Mach64 LQ -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c52 -+device.name 3D Rage P/M Mobility -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c53 -+device.name 3D Rage L Mobility -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c57 -+device.name Radeon LW -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c58 -+device.name Radeon LX -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c59 -+device.name Radeon LY -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c5a -+device.name Radeon LZ -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c64 -+device.name RV250 Ld -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c66 -+device.name RV250 Lf -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c67 -+device.name RV250 Lg -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4d46 -+device.name Rage 128 Mobility MF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4d4c -+device.name Rage 128 Mobility ML -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4e44 -+device.name R300 ND -+driver.xfree 4|radeon -+driver.xfree 4|fglrx|3d||dri -+driver.xfree.config Option "UseInternalAGPGART" "no" -+driver.xfree.config Option "mtrr" "off" -+driver.xfree.config Option "VideoOverlay" "on" -+driver.xfree.config Option "OpenGLOverlay" "off" -+requires fglrx - - vendor.id pci 0x1002 -&device.id pci 0x4e44 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0002 -+subdevice.name Radeon 9700 - - vendor.id pci 0x1002 -&device.id pci 0x4e45 -+device.name R300 NE -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e46 -+device.name R300 NF -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e47 -+device.name R300 NG -+driver.xfree 4|radeon -+driver.xfree 4|fglrx|3d||dri -+driver.xfree.config Option "UseInternalAGPGART" "no" -+driver.xfree.config Option "mtrr" "off" -+driver.xfree.config Option "VideoOverlay" "on" -+driver.xfree.config Option "OpenGLOverlay" "off" -+requires fglrx - - vendor.id pci 0x1002 -&device.id pci 0x4e47 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0172 -+subdevice.name FireGL X1 - - vendor.id pci 0x1002 -&device.id pci 0x4e48 -+device.name R350 NH -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e49 -+device.name R350 NI -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e4a -+device.name R360 NJ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e4b -+device.name R350 NK -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e50 -+device.name RV350 NP -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e51 -+device.name RV350 NQ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e52 -+device.name RV350 NR -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e53 -+device.name RV350 NS -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e54 -+device.name RV350 NT -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e56 -+device.name RV350 NV -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5041 -+device.name Rage 128 PA -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5042 -+device.name Rage 128 PB -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5043 -+device.name Rage 128 PC -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5044 -+device.name Rage 128 PD -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5045 -+device.name Rage 128 PE -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5046 -+device.name Rage 128 PF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5047 -+device.name Rage 128 PG -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5048 -+device.name Rage 128 PH -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5049 -+device.name Rage 128 PI -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504a -+device.name Rage 128 PJ -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504b -+device.name Rage 128 PK -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504c -+device.name Rage 128 PL -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504d -+device.name Rage 128 PM -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504e -+device.name Rage 128 PN -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504f -+device.name Rage 128 PO -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5050 -+device.name Rage 128 PP -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5051 -+device.name Rage 128 PQ -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5052 -+device.name Rage 128 PR -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5053 -+device.name Rage 128 PS -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5054 -+device.name Rage 128 PT -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5055 -+device.name Rage 128 PU -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5056 -+device.name Rage 128 PV -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5057 -+device.name Rage 128 PW -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5058 -+device.name Rage 128 PX -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5144 -+device.name Radeon QD -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5145 -+device.name Radeon QE -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5146 -+device.name Radeon QF -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5147 -+device.name Radeon QG -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5148 -+device.name fgl8x00 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5148 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0152 -+subdevice.name FireGL 8800 - - vendor.id pci 0x1002 -&device.id pci 0x5148 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0172 -+subdevice.name FireGL 8700 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x514c -+device.name R200 QL -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x514d -+device.name Radeon 9100 QM -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -+device.name RV200 QW -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x013a -+subdevice.name Radeon 7500 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7146 -+subdevice.name Radeon 7500-7146 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7161 -+subdevice.name Radeon 7500 LE -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5158 -+device.name RV200 QX -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5159 -+device.name Radeon VE -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x515a -+device.name Radeon QZ -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x515e -+device.name ES1000 (1002:515E) -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x5969 - - vendor.id pci 0x1002 -&device.id pci 0x5245 -+device.name Rage 128 RE -+driver.xfree 4|r128|||||8,15,16,24 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5246 -+device.name Rage 128 RF -+driver.xfree 4|r128|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5247 -+device.name Rage 128 RG -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x524b -+device.name Rage 128 RK -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x524c -+device.name Rage 128 RL -+driver.xfree 4|r128|||||8,15,16,24 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5345 -+device.name Rage 128 SE -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5346 -+device.name Rage 128 SF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5347 -+device.name Rage 128 SG -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5348 -+device.name Rage 128 4x -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x534b -+device.name Rage 128 SK -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x534c -+device.name Rage 128 SL -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x534d -+device.name Rage 128 SM -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x534e -+device.name Rage 128 SN -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5446 -+device.name Rage 128 Ultra TF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x544c -+device.name Rage128 TL -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5452 -+device.name Rage 128 Pro TR (AGP) -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5453 -+device.name Rage 128 TS -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5454 -+device.name Rage 128 TT -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5455 -+device.name Rage 128 TU -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5460 -+device.name Radeon Mobility M300 (M22) 5460 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5464 -+device.name FireGL M22 GL 5464 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5548 -+device.name Radeon X800 (R423) UH (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5549 -+device.name Radeon X800PRO (R423) UI (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x554a -+device.name Radeon X800LE (R423) UJ (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x554b -+device.name Radeon X800SE (R423) UK (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x554d -+device.name Radeon X800 XL -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x554b - - vendor.id pci 0x1002 -&device.id pci 0x554d -&subvendor.id pci 0x174b -&subdevice.id pci 0x0600 -+subdevice.name Radeon X800 XL - - vendor.id pci 0x1002 -&device.id pci 0x5551 -+device.name FireGL V7200 (R423) UQ (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5552 -+device.name FireGL V5100 (R423) UR (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5554 -+device.name FireGL V7100 (R423) UT (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5654 -+device.name Mach64 VT -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x5655 -+device.name 264VT3 [Mach64 VT3] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x5656 -+device.name 264VT4 [Mach64 VT4] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x5834 -+device.name RS300 5834 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5835 -+device.name RS300 5835 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5960 -+device.name RV280 5960 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5961 -+device.name RV280 5961 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5962 -+device.name RV280 5962 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5964 -+device.name RV280 5964 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5964 -&subvendor.id pci 0x17af -&subdevice.id pci 0x2012 -+subdevice.name Radeon 9200 SE (DH) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5969 -+device.name ES1000 (PCI) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5b60 -+device.name Radeon X300 (RV370) 5B60 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5b60 -&subvendor.id pci 0x174b -&subdevice.id pci 0x0440 -+subdevice.name Radeon X300 SE -+driver.xfree 4|radeon -+driver.xfree 4|fglrx|3d||dri -+driver.xfree.config Option "UseInternalAGPGART" "no" -+driver.xfree.config Option "mtrr" "off" -+driver.xfree.config Option "VideoOverlay" "on" -+driver.xfree.config Option "OpenGLOverlay" "off" -+requires fglrx - - vendor.id pci 0x1002 -&device.id pci 0x5b62 -+device.name Radeon X600 (RV370) 5B62 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5b64 -+device.name FireGL V3100 (RV370) 5B64 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5b65 -+device.name FireGL D1100 (RV370) 5B65 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5c61 -+device.name RV280 5c61 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5c63 -+device.name RV280 5c63 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5d57 -+device.name Radeon X800XT (R423) 5D57 (PCIE) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5e4a -+device.name Radeon X700 XT -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x5D57 - - vendor.id pci 0x1002 -&device.id pci 0x5e4b -+device.name Radeon X700 Pro -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x5549 -+driver.xfree 4|fglrx|3d||dri -+requires fglrx - - vendor.id pci 0x1002 -&device.id pci 0x5e4c -+device.name Radeon X700 SE -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x554B - - vendor.id pci 0x1002 -&device.id pci 0x5e4d -+device.name Radeon X700 (5E4D) -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x5548 - - vendor.id pci 0x1002 -&device.id pci 0x5e4f -+device.name Radeon X700 (5E4F) -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x5548 - - vendor.id pci 0x1002 -&device.id pci 0x7834 -+device.name Radeon 9100 PRO IGP 7834 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x7835 -+device.name Radeon Mobility 9200 IGP 7835 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x100b -+vendor.name National Semiconductor Corporation - - vendor.id pci 0x100b -&device.id pci 0x0030 -+device.name REDCLOUD -+driver.xfree 4|nsc - - vendor.id pci 0x100b -&device.id pci 0x0104 -+device.name SC1400 -+driver.xfree 4|nsc - - vendor.id pci 0x100b -&device.id pci 0x0504 -+device.name SC1200 -+driver.xfree 4|nsc - - vendor.id pci 0x100c -+vendor.name Tseng Labs Inc - - vendor.id pci 0x100c -&device.id pci 0x3202 -+device.name ET4000/W32p rev A -+driver.xfree 4|tseng - - vendor.id pci 0x100c -&device.id pci 0x3205 -+device.name ET4000/W32p rev B -+driver.xfree 4|tseng - - vendor.id pci 0x100c -&device.id pci 0x3206 -+device.name ET4000/W32p rev C -+driver.xfree 4|tseng - - vendor.id pci 0x100c -&device.id pci 0x3207 -+device.name ET4000/W32p rev D -+driver.xfree 4|tseng - - vendor.id pci 0x100c -&device.id pci 0x3208 -+device.name ET6000 -+driver.xfree 4|tseng - - vendor.id pci 0x1013 -+vendor.name Cirrus Logic - - vendor.id pci 0x1013 -&device.id pci 0x0038 -+device.name GD 7548 -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00a0 -+device.name GD 5430/40 [Alpine] -+driver.xfree 4|cirrus||||Noaccel - - vendor.id pci 0x1013 -&device.id pci 0x00a4 -+device.name GD 5434-4 [Alpine] -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00a8 -+device.name GD 5434-8 [Alpine] -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00ac -+device.name GD 5436 [Alpine] -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00b8 -+device.name GD 5446 -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00bc -+device.name GD 5480 -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00d0 -+device.name GD 5462 -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00d4 -+device.name GD 5464 [Laguna] -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00d5 -+device.name GD5464BD -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00d6 -+device.name GD 5465 [Laguna] -+driver.xfree 4|cirrus - - vendor.id pci 0x1023 -+vendor.name Trident Microsystems Inc. - - vendor.id pci 0x1023 -&device.id pci 0x2100 -+device.name CyberBlade/xp4 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8400 -+device.name CyberBlade/i7 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8420 -+device.name CyberBlade/i7d -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8500 -+device.name CyberBlade/i1 -+driver.xfree 4|trident||||CyberStretch,sw_cursor - - vendor.id pci 0x1023 -&device.id pci 0x8520 -+device.name 8520 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8600 -+device.name 8600 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8620 -+device.name CyberBlade/DSTN/Ai1 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8820 -+device.name 8820 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9320 -+device.name 9320 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9388 -+device.name Cyber 9388 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9397 -+device.name Cyber 9397 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x939a -+device.name Cyber 9397DVD -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9420 -+device.name TGUI 9420 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9440 -+device.name TGUI 9440 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9520 -+device.name Cyber 9520 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9525 -+device.name Cyber 9525 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9540 -+device.name Cyber 9540 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9660 -+device.name TGUI 9660/968x/968x -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9750 -+device.name 3DIm`age 975 -+driver.xfree 4|trident|||||8,15,16,24 - - vendor.id pci 0x1023 -&device.id pci 0x9850 -+device.name 3DImage 9850 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9880 -+device.name 9880 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9910 -+device.name 9910 -+driver.xfree 4|trident - - vendor.id pci 0x102b -+vendor.name Matrox Graphics, Inc. - - vendor.id pci 0x102b -&device.id pci 0x0519 -+device.name MGA 2064W [Millennium] -+driver.xfree 4|mga||||NoHal|8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051a -+device.name MGA 1064SG [Mystique] -+driver.xfree 4|mga||||NoHal|8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051b -+device.name MGA 2164W [Millennium II] -+driver.xfree 4|mga||||NoHal|8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051f -+device.name MGA 2164W [Millennium II] AGP -+driver.xfree 4|mga||||NoHal - - vendor.id pci 0x102b -&device.id pci 0x0520 -+device.name MGA G200 -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x0521 -+device.name MGA G200 AGP -+driver.xfree 4|mga|||||8,16,24 -+driver.xfree.config VideoRam 8192 -+driver.xfree 4|mga|3d||dri||16 -+driver.xfree.config VideoRam 8192 - - vendor.id pci 0x102b -&device.id pci 0x0525 -+device.name MGA G400 AGP -+driver.xfree 4|mga -+driver.xfree 4|mga|3d||dri - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0540 -+subdevice.name G450-0540 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0541 -+subdevice.name G450 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0641 -+subdevice.name Matrox G400 DH-0641 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x07c0 -+subdevice.name G450 LE - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0d41 -+subdevice.name G450 DH G450 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0d43 -+subdevice.name G450 PCI -+driver.xfree 4|mga - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x2179 -+subdevice.name G400 DH - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x23c3 -+subdevice.name G450-23c3 - - vendor.id pci 0x102b -&device.id pci 0x1000 -+device.name MGA G100 [Productiva] -+driver.xfree 4|mga||||NoHal - - vendor.id pci 0x102b -&device.id pci 0x1001 -+device.name MGA G100 [Productiva] AGP -+driver.xfree 4|mga||||NoHal|8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x2527 -+device.name G550 -+driver.xfree 4|mga -+driver.xfree 4|mga|3d||dri - - vendor.id pci 0x102c -+vendor.name Chips and Technologies - - vendor.id pci 0x102c -&device.id pci 0x00c0 -+device.name F69000 HiQVideo -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00d8 -+device.name F65545 -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00dc -+device.name F65548 -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00e0 -+device.name 65550 -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00e4 -+device.name F65554 -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00e5 -+device.name F65555 HiQVPro -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00f4 -+device.name F68554 HiQVision -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x0c30 -+device.name 69030 -+driver.xfree 4|chips - - vendor.id pci 0x1039 -+vendor.name Silicon Integrated Systems Corp. - - vendor.id pci 0x1039 -&device.id pci 0x0200 -+device.name 5597/5598 VGA -+driver.xfree 4|sis|||||16,24 - - vendor.id pci 0x1039 -&device.id pci 0x0300 -+device.name SIS300 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x0310 -+device.name SiS315H -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x0325 -+device.name SiS315PRO -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x0330 -+device.name SiS330 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x0340 -+device.name SiS340 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x5300 -+device.name SiS540 PCI Display Adapter -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x5315 -+device.name SiS550 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x6300 -+device.name SiS630 GUI Accelerator+3D -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x6306 -+device.name 6306 3D-AGP -+driver.xfree 4|sis|||||16 - - vendor.id pci 0x1039 -&device.id pci 0x6325 -+device.name SiS650 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x6326 -+device.name 86C326 -+driver.xfree 4|sis|||||8,16,24 - - vendor.id pci 0x1039 -&device.id pci 0x6330 -+device.name SiS 660 -+driver.xfree 4|sis - - vendor.id pci 0x104c -+vendor.name Texas Instruments - - vendor.id pci 0x104c -&device.id pci 0x3d04 -+device.name TVP4010 [Permedia] -+driver.xfree 4|glint - - vendor.id pci 0x104c -&device.id pci 0x3d07 -+device.name TVP4020 [Permedia 2] -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x105d -+vendor.name Number 9 Computer Company - - vendor.id pci 0x105d -&device.id pci 0x2309 -+device.name Imagine 128 -+driver.xfree 4|i128 - - vendor.id pci 0x105d -&device.id pci 0x2339 -+device.name Imagine 128-II -+driver.xfree 4|i128 - - vendor.id pci 0x105d -&device.id pci 0x493d -+device.name Imagine 128 T2R [Ticket to Ride] -+driver.xfree 4|i128 - - vendor.id pci 0x105d -&device.id pci 0x5348 -+device.name Revolution 4 -+driver.xfree 4|i128 - - vendor.id pci 0x1078 -+vendor.name Cyrix Corporation - - vendor.id pci 0x1078 -&device.id pci 0x0000 -+device.name 5510 -+driver.xfree 4|cyrix - - vendor.id pci 0x1078 -&device.id pci 0x0002 -+device.name 5520 [Cognac] -+driver.xfree 4|cyrix - - vendor.id pci 0x1078 -&device.id pci 0x0104 -+device.name 5530 Video [Kahlua] -+driver.xfree 4|cyrix - - vendor.id pci 0x10c8 -+vendor.name Neomagic Corporation - - vendor.id pci 0x10c8 -&device.id pci 0x0001 -+device.name NM2070 [MagicGraph NM2070] -+driver.xfree 4|neomagic - - vendor.id pci 0x10c8 -&device.id pci 0x0002 -+device.name NM2090 [MagicGraph 128V] -+driver.xfree 4|neomagic - - vendor.id pci 0x10c8 -&device.id pci 0x0003 -+device.name NM2093 [MagicGraph 128ZV] -+driver.xfree 4|neomagic - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -+device.name NM2160 [MagicGraph 128XD] -+driver.xfree 4|neomagic|||||8,16 - - vendor.id pci 0x10c8 -&device.id pci 0x0005 -+device.name MagicMedia 256AV -+driver.xfree 4|neomagic|||||8,16,24 - - vendor.id pci 0x10c8 -&device.id pci 0x0006 -+device.name NM2360 [MagicMedia 256ZX] -+driver.xfree 4|neomagic|||||16 - - vendor.id pci 0x10c8 -&device.id pci 0x0016 -+device.name 256XL(2380) -+driver.xfree 4|neomagic|||||8,16,24 -+driver.xfree.config VideoRam 4096 - - vendor.id pci 0x10c8 -&device.id pci 0x0025 -+device.name NM2230 -+driver.xfree 4|neomagic - - vendor.id pci 0x10c8 -&device.id pci 0x0083 -+device.name MagicGraph 128ZV Plus -+driver.xfree 4|neomagic - - vendor.id pci 0x10de -+vendor.name nVidia Corporation - - vendor.id pci 0x10de -&device.id pci 0x0020 -+device.name RIVA TNT -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0028 -+device.name RIVA TNT2/TNT2 Pro -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0029 -+device.name RIVA TNT2 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x002a -+device.name Unknown TNT2 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x002c -+device.name Vanta/Vanta LT -+driver.xfree 4|nv|||||8,16,24 -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x002d -+device.name RIVA TNT2 Model 64/Model 64 Pro -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0040 -+device.name GeForce 6800 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0041 -+device.name GeForce 6800 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0042 -+device.name GeForce 6800 LE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0043 -+device.name 0x0043 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0045 -+device.name GeForce 6800 GT -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0049 -+device.name 0x0049 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x004e -+device.name Quadro FX 4000 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00a0 -+device.name Aladdin TNT2 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x00c0 -+device.name 0x00c0 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00c1 -+device.name GeForce 6800 (0x00C1) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00c2 -+device.name 0x00c2 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00c8 -+device.name GeForce Go 6800 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00c9 -+device.name GeForce Go 6800 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00cc -+device.name Quadro FX Go1400 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00cd -+device.name 0x00CD -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00ce -+device.name Quadro FX 1400 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00f0 -+device.name GeForce 6800/GeForce 6800 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00f1 -+device.name GeForce 6600/GeForce 6600 GT -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00f2 -+device.name GeForce 6600 GT (0x00F2) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00f3 -+device.name GeForce 6200 (AGP) -+driver.xfree 4|nv -+driver.xfree.config Option "noaccel" -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00f8 -+device.name Quadro FX 3400 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00f9 -+device.name GeForce 6800 Ultra (0x00F9) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00fa -+device.name GeForce PCX 5750 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00fb -+device.name GeForce PCX 5900 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00fc -+device.name Quadro FX 330/GeForce PCX 5300 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00fd -+device.name Quadro NVS 280 PCI-E/Quadro FX 330 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00fe -+device.name Quadro FX 1300 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x00ff -+device.name GeForce PCX 4300 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0100 -+device.name GeForce 256 -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0101 -+device.name GeForce DDR -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0103 -+device.name Quadro -+driver.xfree 4|nv|||||8,15,16,24 -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0110 -+device.name GeForce2 MX/MX 400 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0111 -+device.name GeForce2 MX 100/200 -+driver.xfree 4|nv||||sw_cursor -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0112 -+device.name GeForce2 Go -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree 4|nvidia|3d||||16 -+driver.xfree.config #Option "CrtcNumber" "0" - - vendor.id pci 0x10de -&device.id pci 0x0113 -+device.name Quadro2 MXR/EX/Go -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0140 -+device.name GeForce 6600 GT -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0141 -+device.name GeForce 6600 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0141 -&subvendor.id pci 0x1458 -&subdevice.id pci 0x3124 -+subdevice.name GeForce 6600 (Gigabyte) -+driver.xfree 4|nv -+driver.xfree.config Option "XaaNoScreenToScreenCopy" -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0142 -+device.name 0x0142 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0143 -+device.name 0x0143 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0144 -+device.name GeForce Go 6600 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0145 -+device.name GeForce 6610 XL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0146 -+device.name GeForce Go 6600 TE/6200 TE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0147 -+device.name 0x0147 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0148 -+device.name GeForce Go 6600 (0x0148) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0149 -+device.name 0x0149 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x014b -+device.name 0x014b -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x014c -+device.name 0x014c -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x014d -+device.name 0x014d -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x014e -+device.name Quadro FX 540 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x014f -+device.name GeForce 6200 -+driver.xfree 4|nv -+driver.xfree.config Option "XaaNoScreenToScreenCopy" -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0150 -+device.name GeForce2 GTS/GeForce2 Pro -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0151 -+device.name GeForce2 Ti -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0152 -+device.name GeForce2 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0153 -+device.name Quadro2 Pro -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0160 -+device.name 0x0160 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0161 -+device.name GeForce 6200 TurboCache(TM) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0161 -&subvendor.id pci 0x10de -&subdevice.id pci 0x025c -+subdevice.name GeForce 6200 TurboCache(TM) (10de:025c) -+driver.xfree 4|nv -+driver.xfree.config Option "XaaNoScreenToScreenCopy" -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0162 -+device.name 0x0162 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0163 -+device.name 0x0163 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0164 -+device.name GeForce Go 6200 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0165 -+device.name 0x0165 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0166 -+device.name GeForce Go 6250 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0167 -+device.name GeForce Go 6200 (0x0167) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0168 -+device.name GeForce Go 6250 (0x0168) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0169 -+device.name 0x0169 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x016b -+device.name 0x016B -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x016c -+device.name 0x016C -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x016d -+device.name 0x016D -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x016e -+device.name 0x016E -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0170 -+device.name GeForce4 MX 460 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0171 -+device.name GeForce4 MX 440 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0172 -+device.name GeForce4 MX 420 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0173 -+device.name GeForce4 MX 440-SE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0174 -+device.name GeForce4 440 Go -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" -+driver.xfree 4|nvidia|3d||||16 -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x0175 -+device.name GeForce4 420 Go -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" -+driver.xfree 4|nvidia|3d||||16 -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x0176 -+device.name GeForce4 420 Go 32M -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" -+driver.xfree 4|nvidia|3d||||16 -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x0176 -&subvendor.id pci 0x1584 -&subdevice.id pci 0x2241 -+subdevice.name GeForce4 Go DH -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0177 -+device.name GeForce4 460 Go -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0178 -+device.name Quadro4 550 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0178 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0151 -+subdevice.name Quadro4 550 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0179 -+device.name GeForce4 440 Go 64M -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" -+driver.xfree 4|nvidia|3d||||16 -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x017a -+device.name Quadro4 NVS -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x017c -+device.name Quadro4 500 GoGL -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" -+driver.xfree 4|nvidia|3d||||16 -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x017d -+device.name GeForce4 410 Go 16M -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0181 -+device.name GeForce4 MX 440 with AGP8X -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0182 -+device.name GeForce4 MX 440SE with AGP8X -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0183 -+device.name GeForce4 MX 420 with AGP8X -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0185 -+device.name GeForce4 MX 4000 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0186 -+device.name GeForce4 448 Go -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0187 -+device.name GeForce4 488 Go -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0188 -+device.name Quadro4 580 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0189 -+device.name GeForce4 MX with AGP8X (Mac) -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x018a -+device.name Quadro NVS with AGP8X -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x018b -+device.name Quadro4 380 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x018c -+device.name Quadro NVS 50 PCI -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x018d -+device.name GeForce4 448 Go (0x018D) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x01a0 -+device.name GeForce2 Integrated GPU -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x01f0 -+device.name GeForce4 MX Integrated GPU -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0200 -+device.name GeForce3 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0201 -+device.name GeForce3 Ti 200 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0202 -+device.name GeForce3 Ti 500 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0203 -+device.name Quadro DCC -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0210 -+device.name 0x0210 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0211 -+device.name GeForce 6800 (0x0211) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0212 -+device.name GeForce 6800 LE (0x0212) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0215 -+device.name GeForce 6800 GT (0x0215) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0220 -+device.name 0x0220 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0221 -+device.name 0x0221 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0222 -+device.name 0x0222 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0228 -+device.name 0x0228 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0250 -+device.name GeForce4 Ti 4600 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0250 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x8725 -+subdevice.name GeForce4 Ti 4600 DH -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0251 -+device.name GeForce4 Ti 4400 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0252 -+device.name NV25 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0253 -+device.name GeForce4 Ti 4200 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0258 -+device.name Quadro4 900 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0258 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0138 -+subdevice.name Quadro4 900 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0259 -+device.name Quadro4 750 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0259 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0139 -+subdevice.name Quadro4 750 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x025b -+device.name Quadro4 700 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x025b -&subvendor.id pci 0x10de -&subdevice.id pci 0x013b -+subdevice.name Quadro4 700 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0280 -+device.name GeForce4 Ti 4800 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0281 -+device.name GeForce4 Ti 4200 with AGP8X -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0282 -+device.name GeForce4 Ti 4800 SE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0286 -+device.name GeForce4 4200 Go -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0288 -+device.name Quadro4 980 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0288 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0174 -+subdevice.name Quadro4 980 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0289 -+device.name Quadro4 780 XGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x028c -+device.name Quadro4 700 GoGL -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0301 -+device.name GeForce FX 5800 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0302 -+device.name GeForce FX 5800 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0308 -+device.name Quadro FX 2000 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0308 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0183 -+subdevice.name Quadro FX2000 DH - - vendor.id pci 0x10de -&device.id pci 0x0309 -+device.name Quadro FX 1000 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0309 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0182 -+subdevice.name Quadro FX1000 DH -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0311 -+device.name GeForce FX 5600 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0312 -+device.name GeForce FX 5600 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0313 -+device.name 0x0313 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0314 -+device.name GeForce FX 5600XT -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0316 -+device.name 0x0316 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0317 -+device.name 0x0317 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x031a -+device.name GeForce FX Go5600 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x031b -+device.name GeForce FX Go5650 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x031c -+device.name Quadro FX Go700 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x031d -+device.name 0x031d -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x031e -+device.name 0x031e -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x031f -+device.name 0x031f -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0320 -+device.name GeForce FX 5200 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0321 -+device.name GeForce FX 5200 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0322 -+device.name GeForce FX 5200 (0x0322) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0322 -&subvendor.id pci 0x10b0 -&subdevice.id pci 0x0431 -+subdevice.name GeForce FX 5200 DH -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0323 -+device.name GeForce FX 5200LE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0324 -+device.name GeForce FX Go5200 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0325 -+device.name GeForce FX Go5250 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0326 -+device.name GeForce FX 5500 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0327 -+device.name GeForce FX 5100 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0328 -+device.name GeForce FX Go5200 32M/64M -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0329 -+device.name GeForce FX 5200 (Mac) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x032a -+device.name Quadro NVS 280 PCI -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x032b -+device.name Quadro FX 500/600 PCI -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x032c -+device.name GeForce FX Go53xx -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x032d -+device.name GeForce FX Go5100 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x032f -+device.name 0x032F -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0330 -+device.name GeForce FX 5900 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0331 -+device.name GeForce FX 5900 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0332 -+device.name GeForce FX 5900XT -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0333 -+device.name GeForce FX 5950 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0333 -&subvendor.id pci 0x10b0 -&subdevice.id pci 0x0602 -+subdevice.name GeForce FX 5950 - - vendor.id pci 0x10de -&device.id pci 0x0334 -+device.name GeForce FX 5900ZT -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0338 -+device.name Quadro FX 3000 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0338 -&subvendor.id pci 0x10de -&subdevice.id pci 0x01c2 -+subdevice.name Quadro FX 3000 DH - - vendor.id pci 0x10de -&device.id pci 0x033f -+device.name Quadro FX 700 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0341 -+device.name GeForce FX 5700 Ultra -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0341 -&subvendor.id pci 0x270f -&subdevice.id pci 0x194c -+subdevice.name GeForce FX 5700 Ultra DH - - vendor.id pci 0x10de -&device.id pci 0x0342 -+device.name GeForce FX 5700 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0343 -+device.name GeForce FX 5700LE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0344 -+device.name GeForce FX 5700VE -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0345 -+device.name 0x0345 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0347 -+device.name GeForce FX Go5700 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0348 -+device.name GeForce FX Go5700 (0x0348) -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0349 -+device.name 0x0349 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x034b -+device.name 0x034b -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x034c -+device.name Quadro FX Go1000 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x034e -+device.name Quadro FX 1100 -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x034f -+device.name 0x034f -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10e0 -+vendor.name Imstt - - vendor.id pci 0x10e0 -&device.id pci 0x9128 -+device.name Imstt128 -+driver.xfree 4|imstt - - vendor.id pci 0x10e0 -&device.id pci 0x9135 -+device.name Imstt3D -+driver.xfree 4|imstt - - vendor.id pci 0x1106 -+vendor.name VIA Technologies, Inc. - - vendor.id pci 0x1106 -&device.id pci 0x3122 -+device.name VIA CLE 3122 -+driver.xfree 4|via - - vendor.id pci 0x1106 -&device.id pci 0x7205 -+device.name VIA VT 7205 -+driver.xfree 4|via - - vendor.id pci 0x1106 -&device.id pci 0x7205 -&subvendor.id pci 0x1025 -&subdevice.id pci 0x0033 -+subdevice.name Acer Incorporated VIA VT 7205 - - vendor.id pci 0x1106 -&device.id pci 0x7205 -&subvendor.id pci 0x1584 -&subdevice.id pci 0x800a -+subdevice.name Uniwill VIA VT 7205 - - vendor.id pci 0x1142 -+vendor.name Alliance Semiconductor Corporation - - vendor.id pci 0x1142 -&device.id pci 0x6422 -+device.name ProVideo 6422 -+driver.xfree 4|apm - - vendor.id pci 0x1142 -&device.id pci 0x6424 -+device.name ProVideo 6424 -+driver.xfree 4|apm - - vendor.id pci 0x1163 -+vendor.name Rendition - - vendor.id pci 0x1163 -&device.id pci 0x0001 -+device.name Verite 1000 -+driver.xfree 4|rendition - - vendor.id pci 0x1163 -&device.id pci 0x2000 -+device.name Verite V2000/V2100/V2200 -+driver.xfree 4|rendition - - vendor.id pci 0x121a -+vendor.name 3Dfx Interactive, Inc. - - vendor.id pci 0x121a -&device.id pci 0x0003 -+device.name Voodoo Banshee -+driver.xfree 4|tdfx|||||8,16,24 -+driver.xfree 4|tdfx|3d||dri||16 - - vendor.id pci 0x121a -&device.id pci 0x0005 -+device.name Voodoo 3 -+driver.xfree 4|tdfx|||||8,16,24 -+driver.xfree 4|tdfx|3d||dri||16 - - vendor.id pci 0x121a -&device.id pci 0x0009 -+device.name Voodoo5 5500 -+driver.xfree 4|tdfx|||||8,16,24 -+driver.xfree 4|tdfx|3d||dri||16 - - vendor.id pci 0x126f -+vendor.name Silicon Motion, Inc. - - vendor.id pci 0x126f -&device.id pci 0x0710 -+device.name SM710 LynxEM -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0712 -+device.name SM712 LynxEM+ -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0720 -+device.name SM720 Lynx3DM -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0730 -+device.name SMI 731 -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0810 -+device.name SM810 LynxE -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0820 -+device.name 820 -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0910 -+device.name SM910 -+driver.xfree 4|siliconmotion - - vendor.id pci 0x12d2 -+vendor.name NVidia / SGS Thomson (Joint Venture) - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -+device.name Riva128 -+driver.xfree 4|nv|||||15,24 - - vendor.id pci 0x15ad -+vendor.name VMWare Inc - - vendor.id pci 0x15ad -&device.id pci 0x0405 -+device.name VMWARE0405 -+driver.xfree 4|vmware - - vendor.id pci 0x15ad -&device.id pci 0x0710 -+device.name VMWARE0710 -+driver.xfree 4|vmware - - vendor.id pci 0x18ca -+vendor.name XGI Technology Inc. - - vendor.id pci 0x18ca -&device.id pci 0x0020 -+device.name Volari Z7 -+driver.xfree 4|xgi - - vendor.id pci 0x18ca -&device.id pci 0x0040 -+device.name Volari V8_V5_V3XT -+driver.xfree 4|xgi - - vendor.id pci 0x3d3d -+vendor.name 3DLabs - - vendor.id pci 0x3d3d -&device.id pci 0x0002 -+device.name GLINT 500TX -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x0004 -+device.name Permedia -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x0006 -+device.name GLINT MX -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x0007 -+device.name 3D Extreme -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -+device.name Permedia II 2D+3D -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x3d3d -&device.id pci 0x000a -+device.name GLINT R3 -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x000c -+device.name Permedia 4 -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x000d -+device.name R4 -+driver.xfree 4|glint - - vendor.id pci 0x5333 -+vendor.name S3 Inc. - - vendor.id pci 0x5333 -&device.id pci 0x5631 -+device.name 86c325 [ViRGE] -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8811 -+device.name 86c764/765 [Trio32/64/64V+] -+driver.xfree 4|s3 - - vendor.id pci 0x5333 -&device.id pci 0x8812 -+device.name 86cM65 [Aurora64V+] -+driver.xfree 4|s3 - - vendor.id pci 0x5333 -&device.id pci 0x8814 -+device.name 86c767 [Trio 64UV+] -+driver.xfree 4|s3 - - vendor.id pci 0x5333 -&device.id pci 0x883d -+device.name 86c988 [ViRGE/VX] -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8901 -+device.name Trio 64V2/DX or /GX -+driver.xfree 4|s3 - - vendor.id pci 0x5333 -&device.id pci 0x8904 -+device.name Integrated Trio3D -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8a01 -+device.name ViRGE/DX -+driver.xfree 4|s3virge||||noVBE - - vendor.id pci 0x5333 -&device.id pci 0x8a10 -+device.name ViRGE/GX2 -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8a13 -+device.name 86c368 [Trio 3D/2X] -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8a20 -+device.name 86c794 [Savage 3D] -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8a21 -+device.name 86c795 [Savage 3D/MV] -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -+device.name Savage 4 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8a25 -+device.name ProSavage PM 133 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8a26 -+device.name ProSavage KM 133 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c01 -+device.name ViRGE/MX -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8c03 -+device.name ViRGE/MX+MV -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8c10 -+device.name 86C270-294 Savage/MX-/IX -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c11 -+device.name Savage MX -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c12 -+device.name Savage IX/MV -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c12 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x017f -+subdevice.name Savage IX/MV IBM -+driver.xfree 4|savage||||ShadowStatus - - vendor.id pci 0x5333 -&device.id pci 0x8c13 -+device.name Savage IX -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c22 -+device.name SuperSavage/MX 128 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c24 -+device.name SuperSavage/MX 64 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c26 -+device.name SuperSavage/MX 64C -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2a -+device.name SuperSavage/IX 128 SDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2b -+device.name SuperSavage/IX 128 DDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2c -+device.name SuperSavage/IX 64 SDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2d -+device.name SuperSavage/IX 64 DDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2e -+device.name SuperSavage/IXC 64 SDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2f -+device.name SuperSavage/IXC 64 DDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8d01 -+device.name S3Twister_P -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8d02 -+device.name Twister_K -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8d03 -+device.name ProSavage DDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8d04 -+device.name ProSavage DDR-K -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x9102 -+device.name 86C410 Savage 2000 -+driver.xfree 4|savage - - vendor.id pci 0x8086 -+vendor.name Intel Corporation - - vendor.id pci 0x8086 -&device.id pci 0x00d1 -+device.name i740_PCI -+driver.xfree 4|i740 - - vendor.id pci 0x8086 -&device.id pci 0x1132 -+device.name I815 -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16 - - vendor.id pci 0x8086 -&device.id pci 0x2562 -+device.name i845 -+driver.xfree 4|i810 -+driver.xfree.config Option "NoDDC" -+driver.xfree 4|i810|3d||dri -+driver.xfree.config Option "NoDDC" - - vendor.id pci 0x8086 -&device.id pci 0x2572 -+device.name 865 G -+driver.xfree 4|i810 -+driver.xfree.config Option "NoDDC" -+driver.xfree 4|i810|3d||dri -+driver.xfree.config Option "NoDDC" - - vendor.id pci 0x8086 -&device.id pci 0x2582 -+device.name 915 G -+driver.xfree 4|i810 -+driver.xfree.config Option "NoDDC" -+driver.xfree 4|i810|3d||dri -+driver.xfree.config Option "NoDDC" - - vendor.id pci 0x8086 -&device.id pci 0x2592 -+device.name 915 GM -+driver.xfree 4|i810 -+driver.xfree.config Option "NoDDC" - - vendor.id pci 0x8086 -&device.id pci 0x3577 -+device.name i830 -+driver.xfree 4|i810 -+driver.xfree.config Option "NoDDC" -+driver.xfree 4|i810|3d||dri -+driver.xfree.config Option "NoDDC" - - vendor.id pci 0x8086 -&device.id pci 0x3582 -+device.name 855 GM -+driver.xfree 4|i810 -+driver.xfree.config Option "NoDDC" -+driver.xfree 4|i810|3d||dri -+driver.xfree.config Option "NoDDC" - - vendor.id pci 0x8086 -&device.id pci 0x7121 -+device.name 82810 CGC [Chipset Graphics Controller] -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16 - - vendor.id pci 0x8086 -&device.id pci 0x7123 -+device.name 82810-DC100 CGC [Chipset Graphics Controller] -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16 - - vendor.id pci 0x8086 -&device.id pci 0x7125 -+device.name 82810E CGC [Chipset Graphics Controller] -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16 - - vendor.id pci 0x8086 -&device.id pci 0x7800 -+device.name i740 -+driver.xfree 4|i740 - - vendor.id pci 0xedd8 -+vendor.name ARK Logic Inc - - vendor.id pci 0xedd8 -&device.id pci 0xa091 -+device.name 1000PV [Stingray] -+driver.xfree 4|ark - - vendor.id pci 0xedd8 -&device.id pci 0xa099 -+device.name 2000PV [Stingray] -+driver.xfree 4|ark - - vendor.id pci 0xedd8 -&device.id pci 0xa0a1 -+device.name 2000MT -+driver.xfree 4|ark - diff --git a/src/hwinfo/src/ids/src/x11.ia64 b/src/hwinfo/src/ids/src/x11.ia64 deleted file mode 100644 index 27c78617c0..0000000000 --- a/src/hwinfo/src/ids/src/x11.ia64 +++ /dev/null @@ -1,2514 +0,0 @@ - vendor.id pci 0x1002 -+vendor.name ATI Technologies Inc - - vendor.id pci 0x1002 -&device.id pci 0x4136 -+device.name RS100 4136 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4137 -+device.name RS100 4137 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4144 -+device.name R300 AD -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4145 -+device.name E300 AE -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4146 -+device.name R300 AF -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4147 -+device.name R300 AG -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4148 -+device.name R350 AH -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4149 -+device.name R350 AI -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x414a -+device.name R350 AJ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x414b -+device.name R350 AK -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4150 -+device.name RV350 AP -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4151 -+device.name RV350 AQ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4152 -+device.name RV350 AR -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4153 -+device.name RV350 AS -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4154 -+device.name RV350 AT -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4155 -+device.name RV350 AU -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x4154 - - vendor.id pci 0x1002 -&device.id pci 0x4156 -+device.name RV350 AV -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4157 -+device.name RV350 AW -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x4154 - - vendor.id pci 0x1002 -&device.id pci 0x4237 -+device.name RS250 4237 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4242 -+device.name R200 BB -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4243 -+device.name R200 BC -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x4336 -+device.name RS100 4336 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4337 -+device.name RS200 4337 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4354 -+device.name 215CT [Mach64 CT] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4358 -+device.name 210888CX [Mach64 CX] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4437 -+device.name RS250 4437 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4554 -+device.name 210888ET [Mach64 ET] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4742 -+device.name 3D Rage Pro AGP 1X/2X -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4744 -+device.name 3D Rage Pro AGP 1X -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4749 -+device.name Mach64 GI -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x474c -+device.name Rage XC -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x474d -+device.name Rage XL AGP -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x474e -+device.name Rage XC AGP -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x474f -+device.name Rage XL -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4750 -+device.name 3D Rage Pro 215GP -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4751 -+device.name 3D Rage Pro 215GQ -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4752 -+device.name Mach64 GR -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4753 -+device.name Mach64 GS -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4754 -+device.name 3D Rage I/II 215GT [Mach64 GT] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4755 -+device.name 3D Rage II+ 215GTB [Mach64 GTB] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4756 -+device.name 3D Rage IIC 215IIC [Mach64 GT IIC] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4757 -+device.name 3D Rage IIC AGP -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4758 -+device.name 210888GX [Mach64 GX] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4759 -+device.name 3D Rage IIC -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x475a -+device.name Mach64 GZ -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4966 -+device.name RV250 If -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4966 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0002 -+subdevice.name Radeon 9000 - - vendor.id pci 0x1002 -&device.id pci 0x4967 -+device.name RV250 Ig -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -+device.name Mach64 LB -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0044 -+subdevice.name 3D Rage LT Pro AGP-133 -+driver.xfree 4|ati -+driver.xfree.config Option "dpms" "off" - - vendor.id pci 0x1002 -&device.id pci 0x4c44 -+device.name 3D Rage LT Pro AGP-66 -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c45 -+device.name Rage 128 Mobility LE -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c46 -+device.name Mobility M3 AGP 2x -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c47 -+device.name 3D Rage LT-G 215LG -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c49 -+device.name Mach64 LI -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -+device.name 3D Rage P/M Mobility AGP 2x -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -&subvendor.id pci 0x1028 -&subdevice.id pci 0x00bb -+subdevice.name Mach64LM/Dell -+driver.xfree 4|fbdev - - vendor.id pci 0x1002 -&device.id pci 0x4c4e -+device.name 3D Rage L Mobility AGP 2x -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c50 -+device.name 3D Rage LT Pro -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c51 -+device.name Mach64 LQ -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c52 -+device.name 3D Rage P/M Mobility -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c53 -+device.name 3D Rage L Mobility -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c57 -+device.name Radeon LW -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c58 -+device.name Radeon LX -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c59 -+device.name Radeon LY -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c5a -+device.name Radeon LZ -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c64 -+device.name RV250 Ld -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c66 -+device.name RV250 Lf -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4c67 -+device.name RV250 Lg -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4d46 -+device.name Rage 128 Mobility MF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4d4c -+device.name Rage 128 Mobility ML -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x4e44 -+device.name R300 ND -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e44 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0002 -+subdevice.name Radeon 9700 - - vendor.id pci 0x1002 -&device.id pci 0x4e45 -+device.name R300 NE -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e46 -+device.name R300 NF -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e47 -+device.name R300 NG -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e47 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0172 -+subdevice.name FireGL X1 - - vendor.id pci 0x1002 -&device.id pci 0x4e48 -+device.name R350 NH -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e49 -+device.name R350 NI -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e4a -+device.name R360 NJ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e4b -+device.name R350 NK -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e50 -+device.name RV350 NP -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e51 -+device.name RV350 NQ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e52 -+device.name RV350 NR -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e53 -+device.name RV350 NS -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e54 -+device.name RV350 NT -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e56 -+device.name RV350 NV -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5041 -+device.name Rage 128 PA -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5042 -+device.name Rage 128 PB -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5043 -+device.name Rage 128 PC -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5044 -+device.name Rage 128 PD -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5045 -+device.name Rage 128 PE -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5046 -+device.name Rage 128 PF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5047 -+device.name Rage 128 PG -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5048 -+device.name Rage 128 PH -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5049 -+device.name Rage 128 PI -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504a -+device.name Rage 128 PJ -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504b -+device.name Rage 128 PK -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504c -+device.name Rage 128 PL -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504d -+device.name Rage 128 PM -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504e -+device.name Rage 128 PN -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x504f -+device.name Rage 128 PO -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5050 -+device.name Rage 128 PP -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5051 -+device.name Rage 128 PQ -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5052 -+device.name Rage 128 PR -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5053 -+device.name Rage 128 PS -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5054 -+device.name Rage 128 PT -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5055 -+device.name Rage 128 PU -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5056 -+device.name Rage 128 PV -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5057 -+device.name Rage 128 PW -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5058 -+device.name Rage 128 PX -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5144 -+device.name Radeon QD -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5145 -+device.name Radeon QE -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5146 -+device.name Radeon QF -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5147 -+device.name Radeon QG -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5148 -+device.name fgl8x00 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5148 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0152 -+subdevice.name FireGL 8800 - - vendor.id pci 0x1002 -&device.id pci 0x5148 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0172 -+subdevice.name FireGL 8700 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x514c -+device.name R200 QL -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x514d -+device.name Radeon 9100 QM -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -+device.name RV200 QW -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x013a -+subdevice.name Radeon 7500 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7146 -+subdevice.name Radeon 7500-7146 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7161 -+subdevice.name Radeon 7500 LE -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5158 -+device.name RV200 QX -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5159 -+device.name Radeon VE -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x010a -+subdevice.name Radeon VE (0x010a) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5159 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x013a -+subdevice.name Radeon VE (0x013a) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x515a -+device.name Radeon QZ -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5245 -+device.name Rage 128 RE -+driver.xfree 4|r128|||||8,15,16,24 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5246 -+device.name Rage 128 RF -+driver.xfree 4|r128|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5247 -+device.name Rage 128 RG -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x524b -+device.name Rage 128 RK -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x524c -+device.name Rage 128 RL -+driver.xfree 4|r128|||||8,15,16,24 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5345 -+device.name Rage 128 SE -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5346 -+device.name Rage 128 SF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5347 -+device.name Rage 128 SG -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5348 -+device.name Rage 128 4x -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x534b -+device.name Rage 128 SK -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x534c -+device.name Rage 128 SL -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x534d -+device.name Rage 128 SM -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x534e -+device.name Rage 128 SN -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5446 -+device.name Rage 128 Ultra TF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x544c -+device.name Rage128 TL -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5452 -+device.name Rage 128 Pro TR (AGP) -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5453 -+device.name Rage 128 TS -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5454 -+device.name Rage 128 TT -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5455 -+device.name Rage 128 TU -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5654 -+device.name Mach64 VT -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x5655 -+device.name 264VT3 [Mach64 VT3] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x5656 -+device.name 264VT4 [Mach64 VT4] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x5834 -+device.name RS300 5834 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5835 -+device.name RS300 5835 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5960 -+device.name RV280 5960 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5961 -+device.name RV280 5961 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5962 -+device.name RV280 5962 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri||16 - - vendor.id pci 0x1002 -&device.id pci 0x5964 -+device.name RV280 5964 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5964 -&subvendor.id pci 0x17af -&subdevice.id pci 0x2012 -+subdevice.name Radeon 9200 SE (DH) -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5c61 -+device.name RV280 5c61 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x1002 -&device.id pci 0x5c63 -+device.name RV280 5c63 -+driver.xfree 4|radeon -+driver.xfree 4|radeon|3d||dri - - vendor.id pci 0x100b -+vendor.name National Semiconductor Corporation - - vendor.id pci 0x100b -&device.id pci 0x0030 -+device.name REDCLOUD -+driver.xfree 4|nsc - - vendor.id pci 0x100b -&device.id pci 0x0104 -+device.name SC1400 -+driver.xfree 4|nsc - - vendor.id pci 0x100b -&device.id pci 0x0504 -+device.name SC1200 -+driver.xfree 4|nsc - - vendor.id pci 0x100c -+vendor.name Tseng Labs Inc - - vendor.id pci 0x100c -&device.id pci 0x3202 -+device.name ET4000/W32p rev A -+driver.xfree 4|tseng - - vendor.id pci 0x100c -&device.id pci 0x3205 -+device.name ET4000/W32p rev B -+driver.xfree 4|tseng - - vendor.id pci 0x100c -&device.id pci 0x3206 -+device.name ET4000/W32p rev C -+driver.xfree 4|tseng - - vendor.id pci 0x100c -&device.id pci 0x3207 -+device.name ET4000/W32p rev D -+driver.xfree 4|tseng - - vendor.id pci 0x100c -&device.id pci 0x3208 -+device.name ET6000 -+driver.xfree 4|tseng - - vendor.id pci 0x1013 -+vendor.name Cirrus Logic - - vendor.id pci 0x1013 -&device.id pci 0x0038 -+device.name GD 7548 -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00a0 -+device.name GD 5430/40 [Alpine] -+driver.xfree 4|cirrus||||Noaccel - - vendor.id pci 0x1013 -&device.id pci 0x00a4 -+device.name GD 5434-4 [Alpine] -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00a8 -+device.name GD 5434-8 [Alpine] -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00ac -+device.name GD 5436 [Alpine] -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00b8 -+device.name GD 5446 -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00bc -+device.name GD 5480 -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00d0 -+device.name GD 5462 -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00d4 -+device.name GD 5464 [Laguna] -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00d5 -+device.name GD5464BD -+driver.xfree 4|cirrus - - vendor.id pci 0x1013 -&device.id pci 0x00d6 -+device.name GD 5465 [Laguna] -+driver.xfree 4|cirrus - - vendor.id pci 0x1023 -+vendor.name Trident Microsystems Inc. - - vendor.id pci 0x1023 -&device.id pci 0x2100 -+device.name CyberBlade/xp4 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8400 -+device.name CyberBlade/i7 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8420 -+device.name CyberBlade/i7d -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8500 -+device.name CyberBlade/i1 -+driver.xfree 4|trident||||CyberStretch,sw_cursor - - vendor.id pci 0x1023 -&device.id pci 0x8520 -+device.name 8520 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8600 -+device.name 8600 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8620 -+device.name CyberBlade/DSTN/Ai1 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x8820 -+device.name 8820 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9320 -+device.name 9320 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9388 -+device.name Cyber 9388 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9397 -+device.name Cyber 9397 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x939a -+device.name Cyber 9397DVD -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9420 -+device.name TGUI 9420 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9440 -+device.name TGUI 9440 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9520 -+device.name Cyber 9520 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9525 -+device.name Cyber 9525 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9540 -+device.name Cyber 9540 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9660 -+device.name TGUI 9660/968x/968x -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9750 -+device.name 3DIm`age 975 -+driver.xfree 4|trident|||||8,15,16,24 - - vendor.id pci 0x1023 -&device.id pci 0x9850 -+device.name 3DImage 9850 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9880 -+device.name 9880 -+driver.xfree 4|trident - - vendor.id pci 0x1023 -&device.id pci 0x9910 -+device.name 9910 -+driver.xfree 4|trident - - vendor.id pci 0x102b -+vendor.name Matrox Graphics, Inc. - - vendor.id pci 0x102b -&device.id pci 0x0519 -+device.name MGA 2064W [Millennium] -+driver.xfree 4|mga||||NoHal|8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051a -+device.name MGA 1064SG [Mystique] -+driver.xfree 4|mga||||NoHal|8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051b -+device.name MGA 2164W [Millennium II] -+driver.xfree 4|mga||||NoHal|8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x051f -+device.name MGA 2164W [Millennium II] AGP -+driver.xfree 4|mga||||NoHal - - vendor.id pci 0x102b -&device.id pci 0x0520 -+device.name MGA G200 -+driver.xfree 4|mga|||||8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x0521 -+device.name MGA G200 AGP -+driver.xfree 4|mga|||||8,16,24 -+driver.xfree.config VideoRam 8192 -+driver.xfree 4|mga|3d||dri||16 -+driver.xfree.config VideoRam 8192 - - vendor.id pci 0x102b -&device.id pci 0x0525 -+device.name MGA G400 AGP -+driver.xfree 4|mga -+driver.xfree 4|mga|3d||dri - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0540 -+subdevice.name G450-0540 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0541 -+subdevice.name G450 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0641 -+subdevice.name Matrox G400 DH-0641 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x07c0 -+subdevice.name G450 LE - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0d41 -+subdevice.name G450 DH G450 - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x0d43 -+subdevice.name G450 PCI -+driver.xfree 4|mga - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x2179 -+subdevice.name G400 DH - - vendor.id pci 0x102b -&device.id pci 0x0525 -&subvendor.id pci 0x102b -&subdevice.id pci 0x23c3 -+subdevice.name G450-23c3 - - vendor.id pci 0x102b -&device.id pci 0x1000 -+device.name MGA G100 [Productiva] -+driver.xfree 4|mga||||NoHal - - vendor.id pci 0x102b -&device.id pci 0x1001 -+device.name MGA G100 [Productiva] AGP -+driver.xfree 4|mga||||NoHal|8,16,24 - - vendor.id pci 0x102b -&device.id pci 0x2527 -+device.name G550 -+driver.xfree 4|mga -+driver.xfree 4|mga|3d||dri - - vendor.id pci 0x102c -+vendor.name Chips and Technologies - - vendor.id pci 0x102c -&device.id pci 0x00c0 -+device.name F69000 HiQVideo -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00d8 -+device.name F65545 -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00dc -+device.name F65548 -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00e0 -+device.name 65550 -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00e4 -+device.name F65554 -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00e5 -+device.name F65555 HiQVPro -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x00f4 -+device.name F68554 HiQVision -+driver.xfree 4|chips - - vendor.id pci 0x102c -&device.id pci 0x0c30 -+device.name 69030 -+driver.xfree 4|chips - - vendor.id pci 0x1039 -+vendor.name Silicon Integrated Systems Corp. - - vendor.id pci 0x1039 -&device.id pci 0x0200 -+device.name 5597/5598 VGA -+driver.xfree 4|sis|||||16,24 - - vendor.id pci 0x1039 -&device.id pci 0x0300 -+device.name SIS300 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x0310 -+device.name SiS315H -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x0325 -+device.name SiS315PRO -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x0330 -+device.name SiS330 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x5300 -+device.name SiS540 PCI Display Adapter -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x5315 -+device.name SiS550 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x6300 -+device.name SiS630 GUI Accelerator+3D -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x6306 -+device.name 6306 3D-AGP -+driver.xfree 4|sis|||||16 - - vendor.id pci 0x1039 -&device.id pci 0x6325 -+device.name SiS650 -+driver.xfree 4|sis - - vendor.id pci 0x1039 -&device.id pci 0x6326 -+device.name 86C326 -+driver.xfree 4|sis|||||8,16,24 - - vendor.id pci 0x1039 -&device.id pci 0x6330 -+device.name SiS 660 -+driver.xfree 4|sis - - vendor.id pci 0x104c -+vendor.name Texas Instruments - - vendor.id pci 0x104c -&device.id pci 0x3d04 -+device.name TVP4010 [Permedia] -+driver.xfree 4|glint - - vendor.id pci 0x104c -&device.id pci 0x3d07 -+device.name TVP4020 [Permedia 2] -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x105d -+vendor.name Number 9 Computer Company - - vendor.id pci 0x105d -&device.id pci 0x2309 -+device.name Imagine 128 -+driver.xfree 4|i128 - - vendor.id pci 0x105d -&device.id pci 0x2339 -+device.name Imagine 128-II -+driver.xfree 4|i128 - - vendor.id pci 0x105d -&device.id pci 0x493d -+device.name Imagine 128 T2R [Ticket to Ride] -+driver.xfree 4|i128 - - vendor.id pci 0x105d -&device.id pci 0x5348 -+device.name Revolution 4 -+driver.xfree 4|i128 - - vendor.id pci 0x1078 -+vendor.name Cyrix Corporation - - vendor.id pci 0x1078 -&device.id pci 0x0000 -+device.name 5510 -+driver.xfree 4|cyrix - - vendor.id pci 0x1078 -&device.id pci 0x0002 -+device.name 5520 [Cognac] -+driver.xfree 4|cyrix - - vendor.id pci 0x1078 -&device.id pci 0x0104 -+device.name 5530 Video [Kahlua] -+driver.xfree 4|cyrix - - vendor.id pci 0x10c8 -+vendor.name Neomagic Corporation - - vendor.id pci 0x10c8 -&device.id pci 0x0001 -+device.name NM2070 [MagicGraph NM2070] -+driver.xfree 4|neomagic - - vendor.id pci 0x10c8 -&device.id pci 0x0002 -+device.name NM2090 [MagicGraph 128V] -+driver.xfree 4|neomagic - - vendor.id pci 0x10c8 -&device.id pci 0x0003 -+device.name NM2093 [MagicGraph 128ZV] -+driver.xfree 4|neomagic - - vendor.id pci 0x10c8 -&device.id pci 0x0004 -+device.name NM2160 [MagicGraph 128XD] -+driver.xfree 4|neomagic|||||8,16 - - vendor.id pci 0x10c8 -&device.id pci 0x0005 -+device.name MagicMedia 256AV -+driver.xfree 4|neomagic|||||8,16,24 - - vendor.id pci 0x10c8 -&device.id pci 0x0006 -+device.name NM2360 [MagicMedia 256ZX] -+driver.xfree 4|neomagic|||||16 - - vendor.id pci 0x10c8 -&device.id pci 0x0016 -+device.name 256XL(2380) -+driver.xfree 4|neomagic|||||8,16,24 -+driver.xfree.config VideoRam 4096 - - vendor.id pci 0x10c8 -&device.id pci 0x0025 -+device.name NM2230 -+driver.xfree 4|neomagic - - vendor.id pci 0x10c8 -&device.id pci 0x0083 -+device.name MagicGraph 128ZV Plus -+driver.xfree 4|neomagic - - vendor.id pci 0x10de -+vendor.name nVidia Corporation - - vendor.id pci 0x10de -&device.id pci 0x0020 -+device.name RIVA TNT -+driver.xfree 4|nv|||||8,15,16,24 - - vendor.id pci 0x10de -&device.id pci 0x0028 -+device.name RIVA TNT2/TNT2 Pro -+driver.xfree 4|nv|||||8,15,16,24 - - vendor.id pci 0x10de -&device.id pci 0x0029 -+device.name RIVA TNT2 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x002a -+device.name Unknown TNT2 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x002c -+device.name Vanta/Vanta LT -+driver.xfree 4|nv|||||8,16,24 - - vendor.id pci 0x10de -&device.id pci 0x002d -+device.name RIVA TNT2 Model 64/Model 64 Pro -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x00a0 -+device.name Aladdin TNT2 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0100 -+device.name GeForce 256 -+driver.xfree 4|nv|||||8,15,16,24 - - vendor.id pci 0x10de -&device.id pci 0x0101 -+device.name GeForce DDR -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0103 -+device.name Quadro -+driver.xfree 4|nv|||||8,15,16,24 - - vendor.id pci 0x10de -&device.id pci 0x0110 -+device.name GeForce2 MX/MX 400 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0111 -+device.name GeForce2 MX 100/200 -+driver.xfree 4|nv||||sw_cursor - - vendor.id pci 0x10de -&device.id pci 0x0112 -+device.name GeForce2 Go -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" - - vendor.id pci 0x10de -&device.id pci 0x0113 -+device.name Quadro2 MXR/EX/Go -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0150 -+device.name GeForce2 GTS/GeForce2 Pro -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0151 -+device.name GeForce2 Ti -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0152 -+device.name GeForce2 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0153 -+device.name Quadro2 Pro -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0170 -+device.name GeForce4 MX 460 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0171 -+device.name GeForce4 MX 440 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0172 -+device.name GeForce4 MX 420 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0173 -+device.name GeForce4 MX 440-SE -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0174 -+device.name GeForce4 440 Go -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x0175 -+device.name GeForce4 420 Go -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x0176 -+device.name GeForce4 420 Go 32M -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x0176 -&subvendor.id pci 0x1584 -&subdevice.id pci 0x2241 -+subdevice.name GeForce4 Go DH -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d||||16 - - vendor.id pci 0x10de -&device.id pci 0x0177 -+device.name GeForce4 460 Go -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0178 -+device.name Quadro4 550 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0178 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0151 -+subdevice.name Quadro4 550 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0179 -+device.name GeForce4 440 Go 64M -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x017a -+device.name Quadro4 NVS -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x017c -+device.name Quadro4 500 GoGL -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x017d -+device.name GeForce4 410 Go 16M -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0181 -+device.name GeForce4 MX 440 with AGP8X -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0182 -+device.name GeForce4 MX 440SE with AGP8X -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0183 -+device.name GeForce4 MX 420 with AGP8X -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0186 -+device.name GeForce4 448 Go -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0187 -+device.name GeForce4 488 Go -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0188 -+device.name Quadro4 580 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0189 -+device.name GeForce4 MX with AGP8X (Mac) -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x018a -+device.name Quadro NVS with AGP8X -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x018b -+device.name Quadro4 380 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x01a0 -+device.name GeForce2 Integrated GPU -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x01f0 -+device.name GeForce4 MX Integrated GPU -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0200 -+device.name GeForce3 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0201 -+device.name GeForce3 Ti 200 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0202 -+device.name GeForce3 Ti 500 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0203 -+device.name Quadro DCC -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0250 -+device.name GeForce4 Ti 4600 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0250 -&subvendor.id pci 0x1462 -&subdevice.id pci 0x8725 -+subdevice.name GeForce4 Ti 4600 DH -+driver.xfree 4|nv -+driver.xfree 4|nvidia|3d - - vendor.id pci 0x10de -&device.id pci 0x0251 -+device.name GeForce4 Ti 4400 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0252 -+device.name NV25 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0253 -+device.name GeForce4 Ti 4200 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0258 -+device.name Quadro4 900 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0258 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0138 -+subdevice.name Quadro4 900 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0259 -+device.name Quadro4 750 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0259 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0139 -+subdevice.name Quadro4 750 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x025b -+device.name Quadro4 700 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x025b -&subvendor.id pci 0x10de -&subdevice.id pci 0x013b -+subdevice.name Quadro4 700 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0280 -+device.name GeForce4 Ti 4800 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0281 -+device.name GeForce4 Ti 4200 with AGP8X -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0282 -+device.name GeForce4 Ti 4800 SE -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0286 -+device.name GeForce4 4200 Go -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0288 -+device.name Quadro4 980 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0288 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0174 -+subdevice.name Quadro4 980 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0289 -+device.name Quadro4 780 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x028c -+device.name Quadro4 700 GoGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0301 -+device.name GeForce FX 5800 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0302 -+device.name GeForce FX 5800 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0308 -+device.name Quadro FX 2000 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0308 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0183 -+subdevice.name Quadro FX2000 DH - - vendor.id pci 0x10de -&device.id pci 0x0309 -+device.name Quadro FX 1000 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0309 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0182 -+subdevice.name Quadro FX1000 DH - - vendor.id pci 0x10de -&device.id pci 0x0311 -+device.name GeForce FX 5600 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0312 -+device.name GeForce FX 5600 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0313 -+device.name 0x0313 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0314 -+device.name GeForce FX 5600XT -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0316 -+device.name 0x0316 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0317 -+device.name 0x0317 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x031a -+device.name GeForce FX Go5600 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x031b -+device.name GeForce FX Go5650 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x031c -+device.name Quadro FX Go700 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x031d -+device.name 0x031d -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x031e -+device.name 0x031e -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x031f -+device.name 0x031f -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0320 -+device.name GeForce FX 5200 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0321 -+device.name GeForce FX 5200 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0322 -+device.name GeForce FX 5200 (0x0322) -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0323 -+device.name GeForce FX 5200LE -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0324 -+device.name GeForce FX Go5200 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0325 -+device.name GeForce FX Go5250 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0328 -+device.name GeForce FX Go5200 32M/64M -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0329 -+device.name GeForce FX 5200 (Mac) -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x032a -+device.name Quadro NVS 280 PCI -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x032b -+device.name Quadro FX 500/600 PCI -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x032c -+device.name GeForce FX Go53xx -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x032d -+device.name GeForce FX Go5100 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x032f -+device.name 0x032F -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0330 -+device.name GeForce FX 5900 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0331 -+device.name GeForce FX 5900 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0332 -+device.name GeForce FX 5900XT -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0333 -+device.name GeForce FX 5950 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0333 -&subvendor.id pci 0x10b0 -&subdevice.id pci 0x0602 -+subdevice.name GeForce FX 5950 - - vendor.id pci 0x10de -&device.id pci 0x0334 -+device.name GeForce FX 5900ZT -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0338 -+device.name Quadro FX 3000 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0338 -&subvendor.id pci 0x10de -&subdevice.id pci 0x01c2 -+subdevice.name Quadro FX 3000 DH - - vendor.id pci 0x10de -&device.id pci 0x0341 -+device.name GeForce FX 5700 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0341 -&subvendor.id pci 0x270f -&subdevice.id pci 0x194c -+subdevice.name GeForce FX 5700 Ultra DH - - vendor.id pci 0x10de -&device.id pci 0x0342 -+device.name GeForce FX 5700 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0343 -+device.name GeForce FX 5700LE -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0344 -+device.name GeForce FX 5700VE -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0345 -+device.name 0x0345 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0347 -+device.name GeForce FX Go5700 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0348 -+device.name GeForce FX Go5700 (0x0348) -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0349 -+device.name 0x0349 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x034b -+device.name 0x034b -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x034c -+device.name Quadro FX Go1000 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x034e -+device.name Quadro FX 1100 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x034f -+device.name 0x034f -+driver.xfree 4|nv - - vendor.id pci 0x10e0 -+vendor.name Imstt - - vendor.id pci 0x10e0 -&device.id pci 0x9128 -+device.name Imstt128 -+driver.xfree 4|imstt - - vendor.id pci 0x10e0 -&device.id pci 0x9135 -+device.name Imstt3D -+driver.xfree 4|imstt - - vendor.id pci 0x1106 -+vendor.name VIA Technologies, Inc. - - vendor.id pci 0x1106 -&device.id pci 0x3022 -+device.name VIA CLE 3022 -+driver.xfree 4|via - - vendor.id pci 0x1106 -&device.id pci 0x3122 -+device.name VIA CLE 3122 -+driver.xfree 4|via - - vendor.id pci 0x1106 -&device.id pci 0x7205 -+device.name VIA VT 7205 -+driver.xfree 4|via - - vendor.id pci 0x1142 -+vendor.name Alliance Semiconductor Corporation - - vendor.id pci 0x1142 -&device.id pci 0x6422 -+device.name ProVideo 6422 -+driver.xfree 4|apm - - vendor.id pci 0x1142 -&device.id pci 0x6424 -+device.name ProVideo 6424 -+driver.xfree 4|apm - - vendor.id pci 0x1163 -+vendor.name Rendition - - vendor.id pci 0x1163 -&device.id pci 0x0001 -+device.name Verite 1000 -+driver.xfree 4|rendition - - vendor.id pci 0x1163 -&device.id pci 0x2000 -+device.name Verite V2000/V2100/V2200 -+driver.xfree 4|rendition - - vendor.id pci 0x121a -+vendor.name 3Dfx Interactive, Inc. - - vendor.id pci 0x121a -&device.id pci 0x0003 -+device.name Voodoo Banshee -+driver.xfree 4|tdfx|||||8,16,24 -+driver.xfree 4|tdfx|3d||dri||16 - - vendor.id pci 0x121a -&device.id pci 0x0005 -+device.name Voodoo 3 -+driver.xfree 4|tdfx|||||8,16,24 -+driver.xfree 4|tdfx|3d||dri||16 - - vendor.id pci 0x121a -&device.id pci 0x0009 -+device.name Voodoo5 5500 -+driver.xfree 4|tdfx|||||8,16,24 -+driver.xfree 4|tdfx|3d||dri||16 - - vendor.id pci 0x126f -+vendor.name Silicon Motion, Inc. - - vendor.id pci 0x126f -&device.id pci 0x0710 -+device.name SM710 LynxEM -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0712 -+device.name SM712 LynxEM+ -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0720 -+device.name SM720 Lynx3DM -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0730 -+device.name SMI 731 -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0810 -+device.name SM810 LynxE -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0820 -+device.name 820 -+driver.xfree 4|siliconmotion - - vendor.id pci 0x126f -&device.id pci 0x0910 -+device.name SM910 -+driver.xfree 4|siliconmotion - - vendor.id pci 0x12d2 -+vendor.name NVidia / SGS Thomson (Joint Venture) - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -+device.name Riva128 -+driver.xfree 4|nv|||||15,24 - - vendor.id pci 0x15ad -+vendor.name VMWare Inc - - vendor.id pci 0x15ad -&device.id pci 0x0405 -+device.name VMWARE0405 -+driver.xfree 4|vmware - - vendor.id pci 0x15ad -&device.id pci 0x0710 -+device.name VMWARE0710 -+driver.xfree 4|vmware - - vendor.id pci 0x3d3d -+vendor.name 3DLabs - - vendor.id pci 0x3d3d -&device.id pci 0x0002 -+device.name GLINT 500TX -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x0004 -+device.name Permedia -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x0006 -+device.name GLINT MX -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x0007 -+device.name 3D Extreme -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -+device.name Permedia II 2D+3D -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x3d3d -&device.id pci 0x000a -+device.name GLINT R3 -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x000c -+device.name Permedia 4 -+driver.xfree 4|glint - - vendor.id pci 0x3d3d -&device.id pci 0x000d -+device.name R4 -+driver.xfree 4|glint - - vendor.id pci 0x5333 -+vendor.name S3 Inc. - - vendor.id pci 0x5333 -&device.id pci 0x5631 -+device.name 86c325 [ViRGE] -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8811 -+device.name 86c764/765 [Trio32/64/64V+] -+driver.xfree 4|s3 - - vendor.id pci 0x5333 -&device.id pci 0x8812 -+device.name 86cM65 [Aurora64V+] -+driver.xfree 4|s3 - - vendor.id pci 0x5333 -&device.id pci 0x8814 -+device.name 86c767 [Trio 64UV+] -+driver.xfree 4|s3 - - vendor.id pci 0x5333 -&device.id pci 0x883d -+device.name 86c988 [ViRGE/VX] -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8901 -+device.name Trio 64V2/DX or /GX -+driver.xfree 4|s3 - - vendor.id pci 0x5333 -&device.id pci 0x8904 -+device.name Integrated Trio3D -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8a01 -+device.name ViRGE/DX -+driver.xfree 4|s3virge||||noVBE - - vendor.id pci 0x5333 -&device.id pci 0x8a10 -+device.name ViRGE/GX2 -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8a13 -+device.name 86c368 [Trio 3D/2X] -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8a20 -+device.name 86c794 [Savage 3D] -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8a21 -+device.name 86c795 [Savage 3D/MV] -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8a22 -+device.name Savage 4 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8a25 -+device.name ProSavage PM 133 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8a26 -+device.name ProSavage KM 133 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c01 -+device.name ViRGE/MX -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8c03 -+device.name ViRGE/MX+MV -+driver.xfree 4|s3virge - - vendor.id pci 0x5333 -&device.id pci 0x8c10 -+device.name 86C270-294 Savage/MX-/IX -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c11 -+device.name Savage MX -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c12 -+device.name Savage IX/MV -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c12 -&subvendor.id pci 0x1014 -&subdevice.id pci 0x017f -+subdevice.name Savage IX/MV IBM -+driver.xfree 4|savage||||ShadowStatus - - vendor.id pci 0x5333 -&device.id pci 0x8c13 -+device.name Savage IX -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c22 -+device.name SuperSavage/MX 128 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c24 -+device.name SuperSavage/MX 64 -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c26 -+device.name SuperSavage/MX 64C -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2a -+device.name SuperSavage/IX 128 SDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2b -+device.name SuperSavage/IX 128 DDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2c -+device.name SuperSavage/IX 64 SDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2d -+device.name SuperSavage/IX 64 DDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2e -+device.name SuperSavage/IXC 64 SDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8c2f -+device.name SuperSavage/IXC 64 DDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8d01 -+device.name S3Twister_P -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8d02 -+device.name Twister_K -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8d03 -+device.name ProSavage DDR -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x8d04 -+device.name ProSavage DDR-K -+driver.xfree 4|savage - - vendor.id pci 0x5333 -&device.id pci 0x9102 -+device.name 86C410 Savage 2000 -+driver.xfree 4|savage - - vendor.id pci 0x8086 -+vendor.name Intel Corporation - - vendor.id pci 0x8086 -&device.id pci 0x00d1 -+device.name i740_PCI -+driver.xfree 4|i740 - - vendor.id pci 0x8086 -&device.id pci 0x1132 -+device.name I815 -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16 -+driver.xfree.config VideoRam 16384 - - vendor.id pci 0x8086 -&device.id pci 0x2562 -+device.name i845 -+driver.xfree 4|i810 -+driver.xfree 4|i810|3d||dri||16 -+driver.xfree.config VideoRam 16384 - - vendor.id pci 0x8086 -&device.id pci 0x2572 -+device.name 865 G -+driver.xfree 4|i810 -+driver.xfree 4|i810|3d||dri||16 -+driver.xfree.config VideoRam 16384 - - vendor.id pci 0x8086 -&device.id pci 0x3577 -+device.name i830 -+driver.xfree 4|i810 -+driver.xfree 4|i810|3d||dri||16 -+driver.xfree.config VideoRam 16384 - - vendor.id pci 0x8086 -&device.id pci 0x3582 -+device.name 855 GM -+driver.xfree 4|i810 -+driver.xfree 4|i810|3d||dri||16 -+driver.xfree.config VideoRam 16384 - - vendor.id pci 0x8086 -&device.id pci 0x7121 -+device.name 82810 CGC [Chipset Graphics Controller] -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16 -+driver.xfree.config VideoRam 16384 - - vendor.id pci 0x8086 -&device.id pci 0x7123 -+device.name 82810-DC100 CGC [Chipset Graphics Controller] -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16 -+driver.xfree.config VideoRam 16384 - - vendor.id pci 0x8086 -&device.id pci 0x7125 -+device.name 82810E CGC [Chipset Graphics Controller] -+driver.xfree 4|i810|||||8,16,24 -+driver.xfree 4|i810|3d||dri||16 -+driver.xfree.config VideoRam 16384 - - vendor.id pci 0x8086 -&device.id pci 0x7800 -+device.name i740 -+driver.xfree 4|i740 - - vendor.id pci 0xedd8 -+vendor.name ARK Logic Inc - - vendor.id pci 0xedd8 -&device.id pci 0xa091 -+device.name 1000PV [Stingray] -+driver.xfree 4|ark - - vendor.id pci 0xedd8 -&device.id pci 0xa099 -+device.name 2000PV [Stingray] -+driver.xfree 4|ark - - vendor.id pci 0xedd8 -&device.id pci 0xa0a1 -+device.name 2000MT -+driver.xfree 4|ark - diff --git a/src/hwinfo/src/ids/src/x11.ppc b/src/hwinfo/src/ids/src/x11.ppc deleted file mode 100644 index 0dc17c4df7..0000000000 --- a/src/hwinfo/src/ids/src/x11.ppc +++ /dev/null @@ -1,1464 +0,0 @@ - vendor.id pci 0x1002 -+vendor.name ATI Technologies Inc - - vendor.id pci 0x1002 -&device.id pci 0x4136 -+device.name RS100 4136 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4137 -+device.name RS100 4137 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4144 -+device.name R300 AD -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4145 -+device.name E300 AE -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4146 -+device.name R300 AF -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4147 -+device.name R300 AG -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4148 -+device.name R350 AH -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4149 -+device.name R350 AI -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x414a -+device.name R350 AJ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x414b -+device.name R350 AK -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4150 -+device.name RV350 AP -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4151 -+device.name RV350 AQ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4152 -+device.name RV350 AR -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4153 -+device.name RV350 AS -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4154 -+device.name RV350 AT -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4155 -+device.name RV350 AU -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x4154 - - vendor.id pci 0x1002 -&device.id pci 0x4156 -+device.name RV350 AV -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4157 -+device.name RV350 AW -+driver.xfree 4|radeon -+driver.xfree.config ChipID 0x4154 - - vendor.id pci 0x1002 -&device.id pci 0x4237 -+device.name RS250 4237 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4242 -+device.name R200 BB -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4243 -+device.name R200 BC -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4336 -+device.name RS100 4336 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4337 -+device.name RS200 4337 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4354 -+device.name 215CT [Mach64 CT] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4358 -+device.name 210888CX [Mach64 CX] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4437 -+device.name RS250 4437 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4554 -+device.name 210888ET [Mach64 ET] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4742 -+device.name 3D Rage Pro AGP 1X/2X -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4744 -+device.name 3D Rage Pro AGP 1X -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4749 -+device.name Mach64 GI -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x474c -+device.name Rage XC -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x474d -+device.name Rage XL AGP -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x474e -+device.name Rage XC AGP -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x474f -+device.name Rage XL -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4750 -+device.name 3D Rage Pro 215GP -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4751 -+device.name 3D Rage Pro 215GQ -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4752 -+device.name Mach64 GR -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4753 -+device.name Mach64 GS -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4754 -+device.name 3D Rage I/II 215GT [Mach64 GT] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4755 -+device.name 3D Rage II+ 215GTB [Mach64 GTB] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4756 -+device.name 3D Rage IIC 215IIC [Mach64 GT IIC] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4757 -+device.name 3D Rage IIC AGP -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4758 -+device.name 210888GX [Mach64 GX] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4759 -+device.name 3D Rage IIC -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x475a -+device.name Mach64 GZ -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4966 -+device.name RV250 If -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4966 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0002 -+subdevice.name Radeon 9000 - - vendor.id pci 0x1002 -&device.id pci 0x4967 -+device.name RV250 Ig -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -+device.name Mach64 LB -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c42 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0044 -+subdevice.name 3D Rage LT Pro AGP-133 -+driver.xfree 4|ati -+driver.xfree.config Option "dpms" "off" - - vendor.id pci 0x1002 -&device.id pci 0x4c44 -+device.name 3D Rage LT Pro AGP-66 -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c45 -+device.name Rage 128 Mobility LE -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x4c46 -+device.name Mobility M3 AGP 2x -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri|dpms,usefbdev|16||switch2xf86_glx -+requires xf86_glx - - vendor.id pci 0x1002 -&device.id pci 0x4c47 -+device.name 3D Rage LT-G 215LG -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c49 -+device.name Mach64 LI -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c4d -+device.name 3D Rage P/M Mobility AGP 2x -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c4e -+device.name 3D Rage L Mobility AGP 2x -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c50 -+device.name 3D Rage LT Pro -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c51 -+device.name Mach64 LQ -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c52 -+device.name 3D Rage P/M Mobility -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c53 -+device.name 3D Rage L Mobility -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x4c57 -+device.name Radeon LW -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4c58 -+device.name Radeon LX -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4c59 -+device.name Radeon LY -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4c5a -+device.name Radeon LZ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4c64 -+device.name RV250 Ld -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4c66 -+device.name RV250 Lf -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4c67 -+device.name RV250 Lg -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4d46 -+device.name Rage 128 Mobility MF -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x4d4c -+device.name Rage 128 Mobility ML -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x4e44 -+device.name R300 ND -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e44 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0002 -+subdevice.name Radeon 9700 - - vendor.id pci 0x1002 -&device.id pci 0x4e45 -+device.name R300 NE -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e46 -+device.name R300 NF -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e47 -+device.name R300 NG -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e47 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0172 -+subdevice.name FireGL X1 - - vendor.id pci 0x1002 -&device.id pci 0x4e48 -+device.name R350 NH -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e49 -+device.name R350 NI -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e4a -+device.name R360 NJ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e4b -+device.name R350 NK -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e50 -+device.name RV350 NP -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e51 -+device.name RV350 NQ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e52 -+device.name RV350 NR -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e53 -+device.name RV350 NS -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e54 -+device.name RV350 NT -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x4e56 -+device.name RV350 NV -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5041 -+device.name Rage 128 PA -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5042 -+device.name Rage 128 PB -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5043 -+device.name Rage 128 PC -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5044 -+device.name Rage 128 PD -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5045 -+device.name Rage 128 PE -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5046 -+device.name Rage 128 PF -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri|dpms,usefbdev|16,24||switch2xf86_glx -+requires xf86_glx - - vendor.id pci 0x1002 -&device.id pci 0x5047 -+device.name Rage 128 PG -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5048 -+device.name Rage 128 PH -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5049 -+device.name Rage 128 PI -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x504a -+device.name Rage 128 PJ -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x504b -+device.name Rage 128 PK -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x504c -+device.name Rage 128 PL -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x504d -+device.name Rage 128 PM -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x504e -+device.name Rage 128 PN -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x504f -+device.name Rage 128 PO -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5050 -+device.name Rage 128 PP -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5051 -+device.name Rage 128 PQ -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5052 -+device.name Rage 128 PR -+driver.xfree 4|r128 -+driver.xfree 4|r128|3d||dri|dpms,usefbdev|16||switch2xf86_glx -+driver.xfree.config ati_r128_rl -+requires xf86_glx - - vendor.id pci 0x1002 -&device.id pci 0x5053 -+device.name Rage 128 PS -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5054 -+device.name Rage 128 PT -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5055 -+device.name Rage 128 PU -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5056 -+device.name Rage 128 PV -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5057 -+device.name Rage 128 PW -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5058 -+device.name Rage 128 PX -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5144 -+device.name Radeon QD -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5145 -+device.name Radeon QE -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5146 -+device.name Radeon QF -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5147 -+device.name Radeon QG -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5148 -+device.name fgl8x00 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5148 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0152 -+subdevice.name FireGL 8800 - - vendor.id pci 0x1002 -&device.id pci 0x5148 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x0172 -+subdevice.name FireGL 8700 - - vendor.id pci 0x1002 -&device.id pci 0x514c -+device.name R200 QL -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x514d -+device.name Radeon 9100 QM -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5157 -+device.name RV200 QW -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x013a -+subdevice.name Radeon 7500 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7146 -+subdevice.name Radeon 7500-7146 - - vendor.id pci 0x1002 -&device.id pci 0x5157 -&subvendor.id pci 0x174b -&subdevice.id pci 0x7161 -+subdevice.name Radeon 7500 LE - - vendor.id pci 0x1002 -&device.id pci 0x5158 -+device.name RV200 QX -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5159 -+device.name Radeon VE -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x515a -+device.name Radeon QZ -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5245 -+device.name Rage 128 RE -+driver.xfree 4|r128|||||8,15,16,24 -+driver.xfree 4|r128|3d||dri|dpms,usefbdev|16,24||switch2xf86_glx -+requires xf86_glx - - vendor.id pci 0x1002 -&device.id pci 0x5246 -+device.name Rage 128 RF -+driver.xfree 4|r128|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5247 -+device.name Rage 128 RG -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x524b -+device.name Rage 128 RK -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x524c -+device.name Rage 128 RL -+driver.xfree 4|r128|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5345 -+device.name Rage 128 SE -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5346 -+device.name Rage 128 SF -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5347 -+device.name Rage 128 SG -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5348 -+device.name Rage 128 4x -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x534b -+device.name Rage 128 SK -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x534c -+device.name Rage 128 SL -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x534d -+device.name Rage 128 SM -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x534e -+device.name Rage 128 SN -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5446 -+device.name Rage 128 Ultra TF -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x544c -+device.name Rage128 TL -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5452 -+device.name Rage 128 Pro TR (AGP) -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5453 -+device.name Rage 128 TS -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5454 -+device.name Rage 128 TT -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5455 -+device.name Rage 128 TU -+driver.xfree 4|r128 - - vendor.id pci 0x1002 -&device.id pci 0x5654 -+device.name Mach64 VT -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x5655 -+device.name 264VT3 [Mach64 VT3] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x5656 -+device.name 264VT4 [Mach64 VT4] -+driver.xfree 4|ati - - vendor.id pci 0x1002 -&device.id pci 0x5834 -+device.name RS300 5834 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5835 -+device.name RS300 5835 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5960 -+device.name RV280 5960 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5961 -+device.name RV280 5961 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5962 -+device.name RV280 5962 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5964 -+device.name RV280 5964 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5964 -&subvendor.id pci 0x17af -&subdevice.id pci 0x2012 -+subdevice.name Radeon 9200 SE (DH) - - vendor.id pci 0x1002 -&device.id pci 0x5c61 -+device.name RV280 5c61 -+driver.xfree 4|radeon - - vendor.id pci 0x1002 -&device.id pci 0x5c63 -+device.name RV280 5c63 -+driver.xfree 4|radeon - - vendor.id pci 0x1013 -+vendor.name Cirrus Logic - - vendor.id pci 0x1013 -&device.id pci 0x00b8 -+device.name GD 5446 -+driver.xfree 4|fbdev||||dpms,usefbdev - - vendor.id pci 0x102b -+vendor.name Matrox Graphics, Inc. - - vendor.id pci 0x102b -&device.id pci 0x0519 -+device.name MGA 2064W [Millennium] -+driver.xfree 4|mga||||DDCInfo,dpms,hw_cursor|8,15,16,24,32 - - vendor.id pci 0x102b -&device.id pci 0x051a -+device.name MGA 1064SG [Mystique] -+driver.xfree 4|fbdev||||dpms,hw_cursor|16,24 -+driver.xfree.config DacSpeed 200 - - vendor.id pci 0x102b -&device.id pci 0x0520 -+device.name MGA G200 -+driver.xfree 4|fbdev||||dpms,hw_cursor|16,24 -+driver.xfree.config DacSpeed 200 200 200 200 - - vendor.id pci 0x10de -+vendor.name nVidia Corporation - - vendor.id pci 0x10de -&device.id pci 0x0020 -+device.name RIVA TNT -+driver.xfree 4|nv|||||8,15,16,24 - - vendor.id pci 0x10de -&device.id pci 0x0028 -+device.name RIVA TNT2/TNT2 Pro -+driver.xfree 4|nv|||||8,15,16,24 - - vendor.id pci 0x10de -&device.id pci 0x0029 -+device.name RIVA TNT2 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x002a -+device.name Unknown TNT2 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x002c -+device.name Vanta/Vanta LT -+driver.xfree 4|nv|||||8,16,24 - - vendor.id pci 0x10de -&device.id pci 0x002d -+device.name RIVA TNT2 Model 64/Model 64 Pro -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x00a0 -+device.name Aladdin TNT2 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0100 -+device.name GeForce 256 -+driver.xfree 4|nv|||||8,15,16,24 - - vendor.id pci 0x10de -&device.id pci 0x0101 -+device.name GeForce DDR -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0103 -+device.name Quadro -+driver.xfree 4|nv|||||8,15,16,24 - - vendor.id pci 0x10de -&device.id pci 0x0110 -+device.name GeForce2 MX/MX 400 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0111 -+device.name GeForce2 MX 100/200 -+driver.xfree 4|nv||||sw_cursor - - vendor.id pci 0x10de -&device.id pci 0x0112 -+device.name GeForce2 Go -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" - - vendor.id pci 0x10de -&device.id pci 0x0113 -+device.name Quadro2 MXR/EX/Go -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0150 -+device.name GeForce2 GTS/GeForce2 Pro -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0151 -+device.name GeForce2 Ti -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0152 -+device.name GeForce2 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0153 -+device.name Quadro2 Pro -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0170 -+device.name GeForce4 MX 460 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0171 -+device.name GeForce4 MX 440 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0172 -+device.name GeForce4 MX 420 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0173 -+device.name GeForce4 MX 440-SE -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0174 -+device.name GeForce4 440 Go -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x0175 -+device.name GeForce4 420 Go -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x0176 -+device.name GeForce4 420 Go 32M -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x0177 -+device.name GeForce4 460 Go -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0178 -+device.name Quadro4 550 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0178 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0151 -+subdevice.name Quadro4 550 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0179 -+device.name GeForce4 440 Go 64M -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x017a -+device.name Quadro4 NVS -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x017c -+device.name Quadro4 500 GoGL -+driver.xfree 4|nv -+driver.xfree.config #Option "CrtcNumber" "0" -+driver.xfree.config #Option "CrtcNumber" "1" - - vendor.id pci 0x10de -&device.id pci 0x017d -+device.name GeForce4 410 Go 16M -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0181 -+device.name GeForce4 MX 440 with AGP8X -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0182 -+device.name GeForce4 MX 440SE with AGP8X -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0183 -+device.name GeForce4 MX 420 with AGP8X -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0186 -+device.name GeForce4 448 Go -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0187 -+device.name GeForce4 488 Go -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0188 -+device.name Quadro4 580 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0189 -+device.name GeForce4 MX with AGP8X (Mac) -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x018a -+device.name Quadro NVS with AGP8X -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x018b -+device.name Quadro4 380 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x01a0 -+device.name GeForce2 Integrated GPU -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x01f0 -+device.name GeForce4 MX Integrated GPU -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0200 -+device.name GeForce3 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0201 -+device.name GeForce3 Ti 200 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0202 -+device.name GeForce3 Ti 500 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0203 -+device.name Quadro DCC -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0250 -+device.name GeForce4 Ti 4600 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0251 -+device.name GeForce4 Ti 4400 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0252 -+device.name NV25 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0253 -+device.name GeForce4 Ti 4200 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0258 -+device.name Quadro4 900 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0258 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0138 -+subdevice.name Quadro4 900 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0259 -+device.name Quadro4 750 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0259 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0139 -+subdevice.name Quadro4 750 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x025b -+device.name Quadro4 700 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x025b -&subvendor.id pci 0x10de -&subdevice.id pci 0x013b -+subdevice.name Quadro4 700 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0280 -+device.name GeForce4 Ti 4800 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0281 -+device.name GeForce4 Ti 4200 with AGP8X -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0282 -+device.name GeForce4 Ti 4800 SE -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0286 -+device.name GeForce4 4200 Go -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0288 -+device.name Quadro4 980 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0288 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0174 -+subdevice.name Quadro4 980 XGL DH - - vendor.id pci 0x10de -&device.id pci 0x0289 -+device.name Quadro4 780 XGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x028c -+device.name Quadro4 700 GoGL -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0301 -+device.name GeForce FX 5800 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0302 -+device.name GeForce FX 5800 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0308 -+device.name Quadro FX 2000 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0308 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0183 -+subdevice.name Quadro FX2000 DH - - vendor.id pci 0x10de -&device.id pci 0x0309 -+device.name Quadro FX 1000 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0309 -&subvendor.id pci 0x10de -&subdevice.id pci 0x0182 -+subdevice.name Quadro FX1000 DH - - vendor.id pci 0x10de -&device.id pci 0x0311 -+device.name GeForce FX 5600 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0312 -+device.name GeForce FX 5600 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0313 -+device.name 0x0313 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0314 -+device.name GeForce FX 5600XT -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0316 -+device.name 0x0316 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0317 -+device.name 0x0317 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x031a -+device.name GeForce FX Go5600 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x031b -+device.name GeForce FX Go5650 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x031c -+device.name Quadro FX Go700 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x031d -+device.name 0x031d -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x031e -+device.name 0x031e -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x031f -+device.name 0x031f -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0320 -+device.name GeForce FX 5200 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0321 -+device.name GeForce FX 5200 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0322 -+device.name GeForce FX 5200 (0x0322) -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0323 -+device.name GeForce FX 5200LE -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0324 -+device.name GeForce FX Go5200 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0325 -+device.name GeForce FX Go5250 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0328 -+device.name GeForce FX Go5200 32M/64M -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0329 -+device.name GeForce FX 5200 (Mac) -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x032a -+device.name Quadro NVS 280 PCI -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x032b -+device.name Quadro FX 500/600 PCI -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x032c -+device.name GeForce FX Go53xx -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x032d -+device.name GeForce FX Go5100 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x032f -+device.name 0x032F -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0330 -+device.name GeForce FX 5900 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0331 -+device.name GeForce FX 5900 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0332 -+device.name GeForce FX 5900XT -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0333 -+device.name GeForce FX 5950 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0333 -&subvendor.id pci 0x10b0 -&subdevice.id pci 0x0602 -+subdevice.name GeForce FX 5950 - - vendor.id pci 0x10de -&device.id pci 0x0334 -+device.name GeForce FX 5900ZT -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0338 -+device.name Quadro FX 3000 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0338 -&subvendor.id pci 0x10de -&subdevice.id pci 0x01c2 -+subdevice.name Quadro FX 3000 DH - - vendor.id pci 0x10de -&device.id pci 0x0341 -+device.name GeForce FX 5700 Ultra -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0341 -&subvendor.id pci 0x270f -&subdevice.id pci 0x194c -+subdevice.name GeForce FX 5700 Ultra DH - - vendor.id pci 0x10de -&device.id pci 0x0342 -+device.name GeForce FX 5700 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0343 -+device.name GeForce FX 5700LE -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0344 -+device.name GeForce FX 5700VE -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0345 -+device.name 0x0345 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0347 -+device.name GeForce FX Go5700 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0348 -+device.name GeForce FX Go5700 (0x0348) -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x0349 -+device.name 0x0349 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x034b -+device.name 0x034b -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x034c -+device.name Quadro FX Go1000 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x034e -+device.name Quadro FX 1100 -+driver.xfree 4|nv - - vendor.id pci 0x10de -&device.id pci 0x034f -+device.name 0x034f -+driver.xfree 4|nv - - vendor.id pci 0x121a -+vendor.name 3Dfx Interactive, Inc. - - vendor.id pci 0x121a -&device.id pci 0x0003 -+device.name Voodoo Banshee -+driver.xfree 4|fbdev|||||24 - - vendor.id pci 0x12d2 -+vendor.name NVidia / SGS Thomson (Joint Venture) - - vendor.id pci 0x12d2 -&device.id pci 0x0018 -+device.name Riva128 -+driver.xfree 4|nv|||||15,24 - diff --git a/src/hwinfo/src/ids/src/x11.ppc.special b/src/hwinfo/src/ids/src/x11.ppc.special deleted file mode 100644 index d9112c5e93..0000000000 --- a/src/hwinfo/src/ids/src/x11.ppc.special +++ /dev/null @@ -1,14 +0,0 @@ -# x11 ppc data not in CDB - - vendor.id pci 0x106b -&device.id pci 0x0003 -+driver.xfree 4|fbdev - - vendor.id special 0x0401 -&device.id special 0x3000 -+driver.xfree 4|fbdev - - vendor.id special 0x0401 -&device.id special 0x3001 -+driver.xfree 3|FBDev - diff --git a/src/hwinfo/src/ids/src/x11.sparc b/src/hwinfo/src/ids/src/x11.sparc deleted file mode 100644 index 0ea811c094..0000000000 --- a/src/hwinfo/src/ids/src/x11.sparc +++ /dev/null @@ -1,323 +0,0 @@ - vendor.id pci 0x1002 -+vendor.name ATI Technologies Inc - - vendor.id pci 0x1002 -&device.id pci 0x0084 -+device.name RageIIC -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x0088 -+device.name Mach64 -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4158 -+device.name 68800AX [Mach32] -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4354 -+device.name 215CT [Mach64 CT] -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4358 -+device.name 210888CX [Mach64 CX] -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4554 -+device.name 210888ET [Mach64 ET] -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4654 -+device.name Mach64 VT -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4747 -+device.name 3D Rage Pro -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x474c -+device.name Rage XC -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x474f -+device.name Rage XL -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4750 -+device.name 3D Rage Pro 215GP -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4751 -+device.name 3D Rage Pro 215GQ -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4754 -+device.name 3D Rage I/II 215GT [Mach64 GT] -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4755 -+device.name 3D Rage II+ 215GTB [Mach64 GTB] -+driver.xfree 4|ati|||||8,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4756 -+device.name 3D Rage IIC 215IIC [Mach64 GT IIC] -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4758 -+device.name 210888GX [Mach64 GX] -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4759 -+device.name 3D Rage IIC -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4c47 -+device.name 3D Rage LT-G 215LG -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4c50 -+device.name 3D Rage LT Pro -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4c52 -+device.name 3D Rage P/M Mobility -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4c53 -+device.name 3D Rage L Mobility -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x4c54 -+device.name 264LT [Mach64 LT] -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5354 -+device.name Mach 64 VT -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5354 -&subvendor.id pci 0x1002 -&subdevice.id pci 0x5654 -+subdevice.name Mach 64 reference - - vendor.id pci 0x1002 -&device.id pci 0x5655 -+device.name 264VT3 [Mach64 VT3] -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x1002 -&device.id pci 0x5656 -+device.name 264VT4 [Mach64 VT4] -+driver.xfree 4|ati|||||8,15,16,24 - - vendor.id pci 0x104c -+vendor.name Texas Instruments - - vendor.id pci 0x104c -&device.id pci 0x3d04 -+device.name TVP4010 [Permedia] -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x104c -&device.id pci 0x3d07 -+device.name TVP4020 [Permedia 2] -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x3d3d -+vendor.name 3DLabs - - vendor.id pci 0x3d3d -&device.id pci 0x0004 -+device.name Permedia -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x3d3d -&device.id pci 0x0007 -+device.name 3D Extreme -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id pci 0x3d3d -&device.id pci 0x0009 -+device.name Permedia II 2D+3D -+driver.xfree 4|glint|||||8,15,16,24 - - vendor.id special 0x4001 -+vendor.name Sun Microsystems - - vendor.id special 0x4001 -&device.id special 0x0001 -+device.name Sun|Monochrome (bwtwo) -+driver.xfree 4|sunbw2 - - vendor.id special 0x4001 -&device.id special 0x0002 -+device.name Sun|Color3 (cgthree) -+driver.xfree 4|suncg3|||||8 - - vendor.id special 0x4001 -&device.id special 0x0008 -+device.name Sun|Double width GX (cgsix) -+driver.xfree 4|suncg6|||||8 - - vendor.id special 0x4001 -&device.id special 0x0009 -+device.name Sun|Single width GX (cgsix) -+driver.xfree 4|suncg6|||||8 - - vendor.id special 0x4001 -&device.id special 0x000a -+device.name Sun|Turbo GX with 1M VSIMM (cgsix) -+driver.xfree 4|suncg6|||||8 - - vendor.id special 0x4001 -&device.id special 0x000b -+device.name Sun|Turbo GX Plus (cgsix) -+driver.xfree 4|suncg6|||||8 - - vendor.id special 0x4001 -&device.id special 0x000c -+device.name Sun|Turbo GX (cgsix) -+driver.xfree 4|suncg6 - - vendor.id special 0x4001 -&device.id special 0x000d -+device.name Sun|Unknown GX (cgsix) -+driver.xfree 4|suncg6|||||8 - - vendor.id special 0x4001 -&device.id special 0x000e -+device.name Sun|SX with 4M VSIMM (cgfourteen) -+driver.xfree 4|suncg14|||||32 - - vendor.id special 0x4001 -&device.id special 0x000f -+device.name Sun|SX with 8M VSIMM (cgfourteen) -+driver.xfree 4|suncg14|||||32 - - vendor.id special 0x4001 -&device.id special 0x0010 -+device.name Sun|SX (cgfourteen) -+driver.xfree 4|suncg14|||||32 - - vendor.id special 0x4001 -&device.id special 0x0011 -+device.name Sun|ZX or Turbo ZX (leo) -+driver.xfree 4|sunleo|||||32 - - vendor.id special 0x4001 -&device.id special 0x0012 -+device.name Sun|Turbo ZX (leo) -+driver.xfree 4|sunleo|||||32 - - vendor.id special 0x4001 -&device.id special 0x0013 -+device.name Sun|TCX (8bit) -+driver.xfree 4|suntcx|||||8 - - vendor.id special 0x4001 -&device.id special 0x0014 -+device.name Sun|TCX (S24) -+driver.xfree 4|suntcx - - vendor.id special 0x4001 -&device.id special 0x0015 -+device.name Sun|Elite3D-M6 Horizontal (afb) -+driver.xfree 4|sunffb|||||24 - - vendor.id special 0x4001 -&device.id special 0x0016 -+device.name Sun|Elite3D (afb) -+driver.xfree 4|sunffb|||||24 - - vendor.id special 0x4001 -&device.id special 0x0017 -+device.name Sun|FFB 67MHz Creator (ffb) -+driver.xfree 4|sunffb|||||8,24 -+driver.xfree 4|sunffb|3d||dri||8,24||switch2xf86_glx -+requires xf86_glx - - vendor.id special 0x4001 -&device.id special 0x0018 -+device.name Sun|FFB 67MHz Creator 3D (ffb) -+driver.xfree 4|sunffb|||||8,24 -+driver.xfree 4|sunffb|3d||dri||8,24||switch2xf86_glx -+requires xf86_glx - - vendor.id special 0x4001 -&device.id special 0x0019 -+device.name Sun|FFB 75MHz Creator 3D (ffb) -+driver.xfree 4|sunffb|||||8,24 -+driver.xfree 4|sunffb|3d||dri||8,24||switch2xf86_glx -+requires xf86_glx - - vendor.id special 0x4001 -&device.id special 0x001a -+device.name Sun|FFB2 Vertical Creator (ffb) -+driver.xfree 4|sunffb|||||8,24 -+driver.xfree 4|sunffb|3d||dri||8,24||switch2xf86_glx -+requires xf86_glx - - vendor.id special 0x4001 -&device.id special 0x001b -+device.name Sun|FFB2 Vertical Creator 3D (ffb) -+driver.xfree 4|sunffb|||||8,24 -+driver.xfree 4|sunffb|3d||dri||8,24||switch2xf86_glx -+requires xf86_glx - - vendor.id special 0x4001 -&device.id special 0x001c -+device.name Sun|FFB2+ Vertical Creator (ffb) -+driver.xfree 4|sunffb|||||8,24 -+driver.xfree 4|sunffb|3d||dri||8,24||switch2xf86_glx -+requires xf86_glx - - vendor.id special 0x4001 -&device.id special 0x001d -+device.name Sun|FFB2+ Vertical Creator 3D (ffb) -+driver.xfree 4|sunffb|||||8,24 -+driver.xfree 4|sunffb|3d||dri||8,24||switch2xf86_glx -+requires xf86_glx - - vendor.id special 0x4001 -&device.id special 0x001e -+device.name Sun|FFB2 Horizontal Creator (ffb) -+driver.xfree 4|sunffb|||||8,24 -+driver.xfree 4|sunffb|3d||dri||8,24||switch2xf86_glx -+requires xf86_glx - - vendor.id special 0x4001 -&device.id special 0x001f -+device.name Sun|FFB2 Horizontal Creator 3D (ffb) -+driver.xfree 4|sunffb|||||8,24 -+driver.xfree 4|sunffb|3d||dri||8,24||switch2xf86_glx -+requires xf86_glx - - vendor.id special 0x4001 -&device.id special 0x0020 -+device.name Sun|FFB [unknown type] (ffb) -+driver.xfree 4|sunffb|||||8,24 -+driver.xfree 4|sunffb|3d||dri||8,24||switch2xf86_glx -+requires xf86_glx - diff --git a/src/hwinfo/src/ids/update_x11 b/src/hwinfo/src/ids/update_x11 deleted file mode 100755 index a3c42434af..0000000000 --- a/src/hwinfo/src/ids/update_x11 +++ /dev/null @@ -1,23 +0,0 @@ -#! /usr/bin/perl - -mkdir "tmp", 0755; - -system "./cdb_x11"; - -unlink "tmp/x11.hwinfo.all", "tmp/x11.hwinfo.s390"; - -chdir "tmp"; - -for () { - chomp; - $in = $_; - s/hwinfo\.//; - $out = $_; - system "../convert_hd $in"; - system "../check_hd --sort --check --join-keys-first --split --log=$out.log --out=$out hd.ids"; - rename $out, "../src/$out"; -} - -chdir ".."; - -system "rm -rf tmp"; diff --git a/src/hwinfo/src/int10/AsmMacros.h b/src/hwinfo/src/int10/AsmMacros.h deleted file mode 100644 index 68f9558721..0000000000 --- a/src/hwinfo/src/int10/AsmMacros.h +++ /dev/null @@ -1,458 +0,0 @@ -/* $XConsortium: AsmMacros.h /main/13 1996/10/25 11:33:12 kaleb $ */ -/* - * (c) Copyright 1993,1994 by David Wexelblat - * - * 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 - * DAVID WEXELBLAT 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 David Wexelblat shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from David Wexelblat. - * - */ -/* - * Copyright 1997 - * Digital Equipment Corporation. All rights reserved. - * This software is furnished under license and may be used and copied only in - * accordance with the following terms and conditions. Subject to these - * conditions, you may download, copy, install, use, modify and distribute - * this software in source and/or binary form. No title or ownership is - * transferred hereby. - * - * 1) Any source code used, modified or distributed must reproduce and retain - * this copyright notice and list of conditions as they appear in the source - * file. - * - * 2) No right is granted to use any trade name, trademark, or logo of Digital - * Equipment Corporation. Neither the "Digital Equipment Corporation" name - * nor any trademark or logo of Digital Equipment Corporation may be used - * to endorse or promote products derived from this software without the - * prior written permission of Digital Equipment Corporation. - * - * 3) This software is provided "AS-IS" and any express or implied warranties, - * including but not limited to, any implied warranties of merchantability, - * fitness for a particular purpose, or non-infringement are disclaimed. In - * no event shall DIGITAL be liable for any damages whatsoever, and in - * particular, DIGITAL shall not be liable for special, indirect, - * consequential, or incidental damages or damages for - * lost profits, loss of revenue or loss of use, whether such damages arise - * in contract, - * negligence, tort, under statute, in equity, at law or otherwise, even if - * advised of the possibility of such damage. - * - */ - -/* $XFree86: xc/programs/Xserver/hw/xfree86/SuperProbe/AsmMacros.h,v 3.14 1999/09/25 14:36:58 dawes Exp $ */ - - -#if defined(__GNUC__) - -#if defined(linux) && (defined(__alpha__) || defined(__ia64__)) - -#include - -#undef inb -#undef inw -#undef inl -#undef outb -#undef outw -#undef outl - -static __inline__ unsigned int inb(unsigned long int p) { return _inb(p); }; -static __inline__ unsigned int inw(unsigned long int p) { return _inw(p); }; -static __inline__ unsigned int inl(unsigned long int p) { return _inl(p); }; -static __inline__ void outb(unsigned long int p, unsigned char v) { _outb(v,p); }; -static __inline__ void outw(unsigned long int p, unsigned short v) { _outw(v,p); }; -static __inline__ void outl(unsigned long int p, unsigned int v) { _outl(v,p); }; - -#else - -#if defined(__sparc__) -#ifndef ASI_PL -#define ASI_PL 0x88 -#endif - -static __inline__ void -outb(port, val) -unsigned long port; -char val; -{ - __asm__ __volatile__("stba %0, [%1] %2" : : "r" (val), "r" (port), "i" (ASI_PL)); -} - -static __inline__ void -outw(port, val) -unsigned long port; -char val; -{ - __asm__ __volatile__("stha %0, [%1] %2" : : "r" (val), "r" (port), "i" (ASI_PL)); -} - -static __inline__ void -outl(port, val) -unsigned long port; -char val; -{ - __asm__ __volatile__("sta %0, [%1] %2" : : "r" (val), "r" (port), "i" (ASI_PL)); -} - -static __inline__ unsigned int -inb(port) -unsigned long port; -{ - unsigned char ret; - __asm__ __volatile__("lduba [%1] %2, %0" : "=r" (ret) : "r" (port), "i" (ASI_PL)); - return ret; -} - -static __inline__ unsigned int -inw(port) -unsigned long port; -{ - unsigned char ret; - __asm__ __volatile__("lduha [%1] %2, %0" : "=r" (ret) : "r" (port), "i" (ASI_PL)); - return ret; -} - -static __inline__ unsigned int -inl(port) -unsigned long port; -{ - unsigned char ret; - __asm__ __volatile__("lda [%1] %2, %0" : "=r" (ret) : "r" (port), "i" (ASI_PL)); - return ret; -} -#else -#ifdef __arm32__ -unsigned int IOPortBase; /* Memory mapped I/O port area */ - -static __inline__ void -outb(port, val) - short port; - char val; -{ - if ((unsigned short)port >= 0x400) return; - - *(volatile unsigned char*)(((unsigned short)(port))+IOPortBase) = val; -} - -static __inline__ void -outw(port, val) - short port; - short val; -{ - if ((unsigned short)port >= 0x400) return; - - *(volatile unsigned short*)(((unsigned short)(port))+IOPortBase) = val; -} - -static __inline__ void -outl(port, val) - short port; - int val; -{ - if ((unsigned short)port >= 0x400) return; - - *(volatile unsigned long*)(((unsigned short)(port))+IOPortBase) = val; -} - -static __inline__ unsigned int -inb(port) - short port; -{ - if ((unsigned short)port >= 0x400) return((unsigned int)-1); - - return(*(volatile unsigned char*)(((unsigned short)(port))+IOPortBase)); -} - -static __inline__ unsigned int -inw(port) - short port; -{ - if ((unsigned short)port >= 0x400) return((unsigned int)-1); - - return(*(volatile unsigned short*)(((unsigned short)(port))+IOPortBase)); -} - -static __inline__ unsigned int -inl(port) - short port; -{ - if ((unsigned short)port >= 0x400) return((unsigned int)-1); - - return(*(volatile unsigned long*)(((unsigned short)(port))+IOPortBase)); -} -#else /* __arm32__ */ -#if defined(Lynx) && defined(__powerpc__) -extern unsigned char *ioBase; - -static volatile void -eieio() -{ - __asm__ __volatile__ ("eieio"); -} - -static void -outb(port, value) -short port; -unsigned char value; -{ - *(uchar *)(ioBase + port) = value; eieio(); -} - -static void -outw(port, value) -short port; -unsigned short value; -{ - *(unsigned short *)(ioBase + port) = value; eieio(); -} - -static void -outl(port, value) -short port; -unsigned long value; -{ - *(unsigned long *)(ioBase + port) = value; eieio(); -} - -static unsigned char -inb(port) -short port; -{ - unsigned char val; - - val = *((unsigned char *)(ioBase + port)); eieio(); - return(val); -} - -static unsigned short -inw(port) -short port; -{ - unsigned short val; - - val = *((unsigned short *)(ioBase + port)); eieio(); - return(val); -} - -static unsigned long -inl(port) -short port; -{ - unsigned long val; - - val = *((unsigned long *)(ioBase + port)); eieio(); - return(val); -} - -#else -#if defined(__FreeBSD__) && defined(__alpha__) - -#include - -extern void outb(u_int32_t port, u_int8_t val); -extern void outw(u_int32_t port, u_int16_t val); -extern void outl(u_int32_t port, u_int32_t val); -extern u_int8_t inb(u_int32_t port); -extern u_int16_t inw(u_int32_t port); -extern u_int32_t inl(u_int32_t port); - -#else -#ifdef GCCUSESGAS -static __inline__ void -outb(port, val) -short port; -char val; -{ - __asm__ __volatile__("outb %0,%1" : :"a" (val), "d" (port)); -} - -static __inline__ void -outw(port, val) -short port; -short val; -{ - __asm__ __volatile__("outw %0,%1" : :"a" (val), "d" (port)); -} - -static __inline__ void -outl(port, val) -short port; -unsigned int val; -{ - __asm__ __volatile__("outl %0,%1" : :"a" (val), "d" (port)); -} - -static __inline__ unsigned int -inb(port) -short port; -{ - unsigned char ret; - __asm__ __volatile__("inb %1,%0" : - "=a" (ret) : - "d" (port)); - return ret; -} - -static __inline__ unsigned int -inw(port) -short port; -{ - unsigned short ret; - __asm__ __volatile__("inw %1,%0" : - "=a" (ret) : - "d" (port)); - return ret; -} - -static __inline__ unsigned int -inl(port) -short port; -{ - unsigned int ret; - __asm__ __volatile__("inl %1,%0" : - "=a" (ret) : - "d" (port)); - return ret; -} - -#else /* GCCUSESGAS */ - -static __inline__ void -outb(port, val) - short port; - char val; -{ - __asm__ __volatile__("out%B0 (%1)" : :"a" (val), "d" (port)); -} - -static __inline__ void -outw(port, val) - short port; - short val; -{ - __asm__ __volatile__("out%W0 (%1)" : :"a" (val), "d" (port)); -} - -static __inline__ void -outl(port, val) - short port; - unsigned int val; -{ - __asm__ __volatile__("out%L0 (%1)" : :"a" (val), "d" (port)); -} - -static __inline__ unsigned int -inb(port) - short port; -{ - unsigned int ret; - __asm__ __volatile__("in%B0 (%1)" : - "=a" (ret) : - "d" (port)); - return ret; -} - -static __inline__ unsigned int -inw(port) - short port; -{ - unsigned int ret; - __asm__ __volatile__("in%W0 (%1)" : - "=a" (ret) : - "d" (port)); - return ret; -} - -static __inline__ unsigned int -inl(port) - short port; -{ - unsigned int ret; - __asm__ __volatile__("in%L0 (%1)" : - "=a" (ret) : - "d" (port)); - return ret; -} - -#endif /* GCCUSESGAS */ -#endif /* Lynx && __powerpc__ */ -#endif /* arm32 */ -#endif /* linux && __sparc__ */ -#endif /* linux && __alpha__ */ -#endif /* __FreeBSD__ && __alpha__ */ - -#if defined(linux) || defined(__arm32__) || (defined(Lynx) && defined(__powerpc__)) - -#define intr_disable() -#define intr_enable() - -#else - -static __inline__ void -intr_disable() -{ - __asm__ __volatile__("cli"); -} - -static __inline__ void -intr_enable() -{ - __asm__ __volatile__("sti"); -} - -#endif /* else !linux && !__arm32__ */ - -#else /* __GNUC__ */ - -#if defined(_MINIX) && defined(_ACK) - -/* inb, outb, inw and outw are defined in the library */ -/* ... but I've no idea if the same is true for inl & outl */ - -u8_t inb(U16_t); -void outb(U16_t, U8_t); -u16_t inw(U16_t); -void outw(U16_t, U16_t); -u32_t inl(U16_t); -void outl(U16_t, U32_t); - -#else /* not _MINIX and _ACK */ - -# if defined(__STDC__) && (__STDC__ == 1) -# ifndef NCR -# define asm __asm -# endif -# endif -# ifdef SVR4 -# include -# ifndef __USLC__ -# define __USLC__ -# endif -# endif -#ifndef SCO325 -# include -#else -# include "../common/scoasm.h" -#endif -#define intr_disable() asm("cli") -#define intr_enable() asm("sti") - -#endif /* _MINIX and _ACK */ -#endif /* __GNUC__ */ diff --git a/src/hwinfo/src/int10/Makefile b/src/hwinfo/src/int10/Makefile deleted file mode 100644 index bcba090279..0000000000 --- a/src/hwinfo/src/int10/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -TOPDIR = ../.. -TARGETS = $(LIBHD_D) - -include $(TOPDIR)/Makefile.common - -$(LIBHD_D): $(OBJS) - ar r $(LIBHD) $? diff --git a/src/hwinfo/src/int10/README b/src/hwinfo/src/int10/README deleted file mode 100644 index 4b7d0fa029..0000000000 --- a/src/hwinfo/src/int10/README +++ /dev/null @@ -1,35 +0,0 @@ - -This is a preliminary version of a VGA softbooter for LINUX. - -It makes use of the of the vm86() call and is therefore only -usable on ix86 systems. -There are plans to port this program to use a x86 emulator -like x86emu. Also it may be ported to other operating systems. - -So far it has been tested on a small number of cards. It might -well be that it will fail on your card. - -If you need to make modifications to the programs to be able -to boot your card please let the author know. - -So far there is no command line interface. All options need -to be hardcoded. You can do this by editing debug.h. You can -turn on a bunch of debug output. Other options allow you to -boot the primary card (CONFIG_ACTIVE_DEVICE), save the bios -to a file (SAVE_BIOS), and map the original system bios -(MAP_SYS_BIOS). - -The author wants to thank - Hans Lermen (dosemu) - and - Kendall Bennett (x86emu) -for their support. - -Parts of the code - especially in v86.c and io.c - are based on code -taken from dosemu. Parts of the code in int.c are based on code taken -from x86emu - -Egbert Eich. - - - diff --git a/src/hwinfo/src/int10/emu_vm86.c b/src/hwinfo/src/int10/emu_vm86.c deleted file mode 100644 index 654cff8ac5..0000000000 --- a/src/hwinfo/src/int10/emu_vm86.c +++ /dev/null @@ -1,214 +0,0 @@ -#include -#include -#ifdef __i386__ -#include -#else -#include "vm86_struct.h" -#endif - -#define INT2PTR(a) ((a) + (unsigned char *) 0) - -#include "../x86emu/include/x86emu.h" -#include "AsmMacros.h" - -int emu_vm86_ret; - -static u8 Mem_rb(u32 addr) { - return *(u8 *)(INT2PTR(addr)); -} -static void Mem_wb(u32 addr, u8 val) { - *(u8 *)INT2PTR(addr) = val; -} -#ifdef __ia64__ - -static u16 Mem_rw(u32 addr) { - return *(u8 *)INT2PTR(addr) | *(u8 *)INT2PTR(addr + 1) << 8; -} -static u32 Mem_rl(u32 addr) { - return *(u8 *)INT2PTR(addr) | *(u8 *)INT2PTR(addr + 1) << 8 | - *(u8 *)INT2PTR(addr + 2) << 16 | *(u8 *)INT2PTR(addr + 3) << 24; -} -static void Mem_ww(u32 addr, u16 val) { - *(u8 *)INT2PTR(addr) = val; - *(u8 *)INT2PTR(addr + 1) = val >> 8; -} -static void Mem_wl(u32 addr, u32 val) { - *(u8 *)INT2PTR(addr) = val; - *(u8 *)INT2PTR(addr + 1) = val >> 8; - *(u8 *)INT2PTR(addr + 2) = val >> 16; - *(u8 *)INT2PTR(addr + 3) = val >> 24; -} - -#else - -static u16 Mem_rw(u32 addr) { - return *(u16 *)INT2PTR(addr); -} -static u32 Mem_rl(u32 addr) { - return *(u32 *)INT2PTR(addr); -} -static void Mem_ww(u32 addr, u16 val) { - *(u16 *)INT2PTR(addr) = val; -} -static void Mem_wl(u32 addr, u32 val) { - *(u32 *)INT2PTR(addr) = val; -} - -#endif - -static void do_int(int num) { - emu_vm86_ret = VM86_INTx | (num << 8); - M.x86.intr = INTR_HALTED; -} - - -static u8 deb_inb(X86EMU_pioAddr addr) -{ - u8 u; - - u = inb(addr); - fprintf(stderr, "%04x:%04x inb %04x = %02x\n", M.x86.R_CS, (unsigned) M.x86.R_EIP, addr, u); - - return u; -} - -static u16 deb_inw(X86EMU_pioAddr addr) -{ - u16 u; - - u = inw(addr); - fprintf(stderr, "%04x:%04x inw %04x = %04x\n", M.x86.R_CS, (unsigned) M.x86.R_EIP, addr, u); - - return u; -} - -static u32 deb_inl(X86EMU_pioAddr addr) -{ - u32 u; - - u = inl(addr); - fprintf(stderr, "%04x:%04x inl %04x = %08x\n", M.x86.R_CS, (unsigned) M.x86.R_EIP, addr, (unsigned) u); - - return u; -} - -static void deb_outb(X86EMU_pioAddr addr, u8 val) -{ - fprintf(stderr, "%04x:%04x outb %04x, %02x\n", M.x86.R_CS, (unsigned) M.x86.R_EIP, addr, val); - outb(addr, val); -} - -static void deb_outw(X86EMU_pioAddr addr, u16 val) -{ - fprintf(stderr, "%04x:%04x outw %04x, %04x\n", M.x86.R_CS, (unsigned) M.x86.R_EIP, addr, val); - outw(addr, val); -} - -static void deb_outl(X86EMU_pioAddr addr, u32 val) -{ - fprintf(stderr, "%04x:%04x outl %04x, %08x\n", M.x86.R_CS, (unsigned) M.x86.R_EIP, addr, (unsigned) val); - outl(addr, val); -} - -int -emu_vm86(struct vm86_struct *vm, unsigned debug) -{ - int i; - unsigned timeout; - - X86EMU_memFuncs memFuncs; - X86EMU_intrFuncs intFuncs[256]; - X86EMU_pioFuncs pioFuncs; - - memFuncs.rdb = Mem_rb; - memFuncs.rdw = Mem_rw; - memFuncs.rdl = Mem_rl; - memFuncs.wrb = Mem_wb; - memFuncs.wrw = Mem_ww; - memFuncs.wrl = Mem_wl; - X86EMU_setupMemFuncs(&memFuncs); - -if(debug) { - pioFuncs.inb = deb_inb; - pioFuncs.inw = deb_inw; - pioFuncs.inl = deb_inl; - pioFuncs.outb = deb_outb; - pioFuncs.outw = deb_outw; - pioFuncs.outl = deb_outl; -} else { - pioFuncs.inb = (u8(*)(u16))inb; - pioFuncs.inw = (u16(*)(u16))inw; - pioFuncs.inl = (u32(*)(u16))inl; - pioFuncs.outb = (void(*)(u16, u8))outb; - pioFuncs.outw = (void(*)(u16, u16))outw; - pioFuncs.outl = (void(*)(u16, u32))outl; -} - X86EMU_setupPioFuncs(&pioFuncs); - - for (i=0;i<256;i++) - intFuncs[i] = do_int; - X86EMU_setupIntrFuncs(intFuncs); - - M.mem_base = 0; - M.mem_size = 1024*1024 + 1024; - - M.x86.R_EAX = vm->regs.eax; - M.x86.R_EBX = vm->regs.ebx; - M.x86.R_ECX = vm->regs.ecx; - M.x86.R_EDX = vm->regs.edx; - - M.x86.R_ESP = vm->regs.esp; - M.x86.R_EBP = vm->regs.ebp; - M.x86.R_ESI = vm->regs.esi; - M.x86.R_EDI = vm->regs.edi; - M.x86.R_EIP = vm->regs.eip; - M.x86.R_EFLG = vm->regs.eflags; - - M.x86.R_CS = vm->regs.cs; - M.x86.R_DS = vm->regs.ds; - M.x86.R_SS = vm->regs.ss; - M.x86.R_ES = vm->regs.es; - M.x86.R_FS = vm->regs.fs; - M.x86.R_GS = vm->regs.gs; - - emu_vm86_ret = 0; - /* set timeout, 20s normal, 60s for debugging */ - timeout = debug ? (1 << 31) + 60 : 20; - X86EMU_exec(timeout); - - vm->regs.eax = M.x86.R_EAX; - vm->regs.ebx = M.x86.R_EBX; - vm->regs.ecx = M.x86.R_ECX; - vm->regs.edx = M.x86.R_EDX; - - vm->regs.esp = M.x86.R_ESP; - vm->regs.ebp = M.x86.R_EBP; - vm->regs.esi = M.x86.R_ESI; - vm->regs.edi = M.x86.R_EDI; - vm->regs.eip = M.x86.R_EIP; - vm->regs.eflags = M.x86.R_EFLG; - - vm->regs.cs = M.x86.R_CS; - vm->regs.ds = M.x86.R_DS; - vm->regs.ss = M.x86.R_SS; - vm->regs.es = M.x86.R_ES; - vm->regs.fs = M.x86.R_FS; - vm->regs.gs = M.x86.R_GS; - - if (emu_vm86_ret == 0 && *(unsigned char *)INT2PTR(((u32)M.x86.R_CS << 4) + (M.x86.R_IP - 1)) == 0xf4) - { - vm->regs.eip--; - return VM86_UNKNOWN; - } - return emu_vm86_ret ? emu_vm86_ret : -1; -} - -void -printk(const char *fmt, ...) -{ - va_list argptr; - va_start(argptr, fmt); - vfprintf(stderr, fmt, argptr); - va_end(argptr); -} - diff --git a/src/hwinfo/src/int10/i10_int.c b/src/hwinfo/src/int10/i10_int.c deleted file mode 100644 index 99a009d0a9..0000000000 --- a/src/hwinfo/src/int10/i10_int.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright 1999 Egbert Eich - * - * 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 name of the authors not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. The authors makes no representations - * about the suitability of this software for any purpose. It is provided - * "as is" without express or implied warranty. - * - * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE AUTHORS 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. - */ -#if defined(__alpha__) || defined (__ia64__) -#include -#endif - -#include "v86bios.h" -#include "AsmMacros.h" -#include "pci.h" - -static int int1A_handler(struct regs86 *regs); -static int int42_handler(int num, struct regs86 *regs); - -int -int_handler(int num, struct regs86 *regs) -{ - switch (num) { - case 0x10: - case 0x42: - return (int42_handler(num,regs)); - case 0x1A: - return (int1A_handler(regs)); - default: - return 0; - } - return 0; -} - -static int -int42_handler(int num,struct regs86 *regs) -{ - unsigned char c; - CARD32 val; - - /* - * video bios has modified these - - * leave it to the video bios to do this - */ - - val = getIntVect(num); - if (val != 0xF000F065) - return 0; - - if ((regs->ebx & 0xff) == 0x32) { - switch (regs->eax & 0xFFFF) { - case 0x1200: - c = inb(0x3cc); - c |= 0x02; - outb(0x3c2,c); - return 1; - case 0x1201: - c = inb(0x3cc); - c &= ~0x02; - outb(0x3c2,c); - return 1; - } - } - if (num == 0x42) - return 1; - else - return 0; -} - -#define SUCCESSFUL 0x00 -#define DEVICE_NOT_FOUND 0x86 -#define BAD_REGISTER_NUMBER 0x87 - -static int -int1A_handler(struct regs86 *regs) -{ - CARD32 Slot; -// PciStructPtr pPci; - - if (! CurrentPci) return 0; /* oops */ - - switch (regs->eax & 0xFFFF) { - case 0xb101: - regs->eax &= 0xFF00; /* no config space/special cycle support */ - regs->edx = 0x20494350; /* " ICP" */ - regs->ebx = 0x0210; /* Version 2.10 */ - regs->ecx &= 0xFF00; - regs->ecx |= (pciMaxBus & 0xFF); /* Max bus number in system */ - regs->eflags &= ~((unsigned long)0x01); /* clear carry flag */ - return 1; - case 0xb102: - if (((regs->edx & 0xFFFF) == CurrentPci->VendorID) && - ((regs->ecx & 0xFFFF) == CurrentPci->DeviceID) && - (regs->esi == 0)) { - regs->eax = (regs->eax & 0x00FF) | (SUCCESSFUL << 8); - regs->eflags &= ~((unsigned long)0x01); /* clear carry flag */ - regs->ebx = pciSlotBX(CurrentPci); - } else { - regs->eax = (regs->eax & 0x00FF) | (DEVICE_NOT_FOUND << 8); - regs->eflags |= ((unsigned long)0x01); /* set carry flag */ - } - return 1; - case 0xb103: - if (((regs->ecx & 0xFF) == CurrentPci->Interface) && - (((regs->ecx & 0xFF00) >> 8) == CurrentPci->SubClass) && - (((regs->ecx & 0xFFFF0000) >> 16) == CurrentPci->BaseClass) && - ((regs->esi & 0xff) == 0)) { - regs->eax = (regs->eax & 0x00FF) | (SUCCESSFUL << 8); - regs->ebx = pciSlotBX(CurrentPci); - regs->eflags &= ~((unsigned long)0x01); /* clear carry flag */ - } else { - regs->eax = (regs->eax & 0x00FF) | (DEVICE_NOT_FOUND << 8); - regs->eflags |= ((unsigned long)0x01); /* set carry flag */ - } - return 1; - case 0xb108: - if ((Slot = findPci(regs->ebx))) { - regs->ecx &= 0xFFFFFF00; - regs->ecx |= PciRead8(regs->edi,Slot); - regs->eax = (regs->eax & 0x00FF) | (SUCCESSFUL << 8); - regs->eflags &= ~((unsigned long)0x01); /* clear carry flag */ - } else { - regs->eax = (regs->eax & 0x00FF) | (BAD_REGISTER_NUMBER << 8); - regs->eflags |= ((unsigned long)0x01); /* set carry flag */ - } - return 1; - case 0xb109: - if ((Slot = findPci(regs->ebx))) { - regs->ecx &= 0xFFFF0000; - regs->ecx |= PciRead16(regs->edi,Slot); - regs->eax = (regs->eax & 0x00FF) | (SUCCESSFUL << 8); - regs->eflags &= ~((unsigned long)0x01); /* clear carry flag */ - } else { - regs->eax = (regs->eax & 0x00FF) | (BAD_REGISTER_NUMBER << 8); - regs->eflags |= ((unsigned long)0x01); /* set carry flag */ - } - return 1; - case 0xb10a: - if ((Slot = findPci(regs->ebx))) { - regs->ecx &= 0; - regs->ecx |= PciRead32(regs->edi,Slot); - regs->eax = (regs->eax & 0x00FF) | (SUCCESSFUL << 8); - regs->eflags &= ~((unsigned long)0x01); /* clear carry flag */ - } else { - regs->eax = (regs->eax & 0x00FF) | (BAD_REGISTER_NUMBER << 8); - regs->eflags |= ((unsigned long)0x01); /* set carry flag */ - } - return 1; - case 0xb10b: - if ((Slot = findPci(regs->ebx))) { - PciWrite8(regs->edi,(CARD8)regs->ecx,Slot); - regs->eax = (regs->eax & 0x00FF) | (SUCCESSFUL << 8); - regs->eflags &= ~((unsigned long)0x01); /* clear carry flag */ - } else { - regs->eax = (regs->eax & 0x00FF) | (BAD_REGISTER_NUMBER << 8); - regs->eflags |= ((unsigned long)0x01); /* set carry flag */ - } - return 1; - case 0xb10c: - if ((Slot = findPci(regs->ebx))) { - PciWrite16(regs->edi,(CARD16)regs->ecx,Slot); - regs->eax = (regs->eax & 0x00FF) | (SUCCESSFUL << 8); - regs->eflags &= ~((unsigned long)0x01); /* clear carry flag */ - } else { - regs->eax = (regs->eax & 0x00FF) | (BAD_REGISTER_NUMBER << 8); - regs->eflags |= ((unsigned long)0x01); /* set carry flag */ - } - return 1; - case 0xb10d: - if ((Slot = findPci(regs->ebx))) { - PciWrite32(regs->edi,(CARD32)regs->ecx,Slot); - regs->eax = (regs->eax & 0x00FF) | (SUCCESSFUL << 8); - regs->eflags &= ~((unsigned long)0x01); /* clear carry flag */ - } else { - regs->eax = (regs->eax & 0x00FF) | (BAD_REGISTER_NUMBER << 8); - regs->eflags |= ((unsigned long)0x01); /* set carry flag */ - } - return 1; - default: - return 0; - } -} diff --git a/src/hwinfo/src/int10/i10_io.c b/src/hwinfo/src/int10/i10_io.c deleted file mode 100644 index 717356f476..0000000000 --- a/src/hwinfo/src/int10/i10_io.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 1999 Egbert Eich - * - * 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 name of the authors not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. The authors makes no representations - * about the suitability of this software for any purpose. It is provided - * "as is" without express or implied warranty. - * - * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE AUTHORS 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. - */ - -#include -#if defined(__alpha__) || defined (__ia64__) -#include -#endif -#include "AsmMacros.h" -#include "v86bios.h" -#include "pci.h" - - -int -port_rep_inb(CARD16 port, CARD8 *base, int d_f, CARD32 count) -{ - register int inc = d_f ? -1 : 1; - CARD8 *dst = base; - - while (count--) { - *dst = inb(port); - dst += inc; - } - return (dst-base); -} - -int -port_rep_inw(CARD16 port, CARD16 *base, int d_f, CARD32 count) -{ - register int inc = d_f ? -1 : 1; - CARD16 *dst = base; - - while (count--) { - *dst = inw(port); - dst += inc; - } - return (dst-base); -} - -int -port_rep_inl(CARD16 port, CARD32 *base, int d_f, CARD32 count) -{ - register int inc = d_f ? -1 : 1; - CARD32 *dst = base; - - while (count--) { - *dst = inl(port); - dst += inc; - } - return (dst-base); -} - -int -port_rep_outb(CARD16 port, CARD8 *base, int d_f, CARD32 count) -{ - register int inc = d_f ? -1 : 1; - CARD8 *dst = base; - - while (count--) { - outb(port,*dst); - dst += inc; - } - return (dst-base); -} - -int -port_rep_outw(CARD16 port, CARD16 *base, int d_f, CARD32 count) -{ - register int inc = d_f ? -1 : 1; - CARD16 *dst = base; - - while (count--) { - outw(port,*dst); - dst += inc; - } - return (dst-base); -} - -int -port_rep_outl(CARD16 port, CARD32 *base, int d_f, CARD32 count) -{ - register int inc = d_f ? -1 : 1; - CARD32 *dst = base; - - while (count--) { - outl(port,*dst); - dst += inc; - } - return (dst-base); -} diff --git a/src/hwinfo/src/int10/i10_pci.c b/src/hwinfo/src/int10/i10_pci.c deleted file mode 100644 index 387cebb658..0000000000 --- a/src/hwinfo/src/int10/i10_pci.c +++ /dev/null @@ -1,866 +0,0 @@ -/* - * Copyright 1999 Egbert Eich - * - * 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 name of the authors not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. The authors makes no representations - * about the suitability of this software for any purpose. It is provided - * "as is" without express or implied warranty. - * - * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE AUTHORS 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. - */ -#include -#include -#include -#include -#include -#include -#include -#include -#if defined (__alpha__) || defined (__ia64__) -#include -#endif -#include "AsmMacros.h" - -#include "pci.h" - -#define RESORT 1 -#define FIX_ROM 0 - -/* - * I'm rather simple mindend - therefore I do a poor man's - * pci scan without all the fancy stuff that is done in - * scanpci. However that's all we need. - */ - -PciStructPtr PciStruct = NULL; -PciBusPtr PciBuses = NULL; -PciStructPtr CurrentPci = NULL; -PciStructPtr PciList = NULL; -int pciMaxBus = 0; - -static CARD32 PciCfg1Addr; - -static void readConfigSpaceCfg1(CARD32 bus, CARD32 dev, CARD32 func, - CARD32 *reg); -static int checkSlotCfg1(CARD32 bus, CARD32 dev, CARD32 func); -static int checkSlotCfg2(CARD32 bus, int dev); -static void readConfigSpaceCfg2(CARD32 bus, int dev, CARD32 *reg); -static CARD8 interpretConfigSpace(CARD32 *reg, int busidx, - CARD8 dev, CARD8 func); -static CARD32 findBIOSMap(PciStructPtr pciP, CARD32 *biosSize); -static void restoreMem(PciStructPtr pciP); - - -#ifdef __alpha__ -#define PCI_BUS_FROM_TAG(tag) (((tag) & 0x00ff0000) >> 16) -#define PCI_DFN_FROM_TAG(tag) (((tag) & 0x0000ff00) >> 8) - -#include - -CARD32 -axpPciCfgRead(CARD32 tag) -{ - int bus, dfn; - CARD32 val = 0xffffffff; - - bus = PCI_BUS_FROM_TAG(tag); - dfn = PCI_DFN_FROM_TAG(tag); - - syscall(__NR_pciconfig_read, bus, dfn, tag & 0xff, 4, &val); - return(val); -} - -void -axpPciCfgWrite(CARD32 tag, CARD32 val) -{ - int bus, dfn; - - bus = PCI_BUS_FROM_TAG(tag); - dfn = PCI_DFN_FROM_TAG(tag); - - syscall(__NR_pciconfig_write, bus, dfn, tag & 0xff, 4, &val); -} - -static CARD32 (*readPci)(CARD32 reg) = axpPciCfgRead; -static void (*writePci)(CARD32 reg, CARD32 val) = axpPciCfgWrite; -#else -static CARD32 readPciCfg1(CARD32 reg); -static void writePciCfg1(CARD32 reg, CARD32 val); -#ifndef __ia64__ -static CARD32 readPciCfg2(CARD32 reg); -static void writePciCfg2(CARD32 reg, CARD32 val); -#endif - -static CARD32 (*readPci)(CARD32 reg) = readPciCfg1; -static void (*writePci)(CARD32 reg, CARD32 val) = writePciCfg1; -#endif - -#if defined(__alpha__) || defined(__sparc__) -#define PCI_EN 0x00000000 -#else -#define PCI_EN 0x80000000 -#endif - - -static int numbus; -static int hostbridges = 1; -static unsigned long pciMinMemReg = ~0; - - - -void -scan_pci(int pci_cfg_method) -{ - unsigned short configtype; - - CARD32 reg[64]; - int busidx; - CARD8 cardnum; - CARD8 func; - int idx; - - PciStructPtr pci1; - PciBusPtr pci_b1,pci_b2; - - if(pci_cfg_method) { - configtype = pci_cfg_method; - } - else { -#if defined(__alpha__) || defined(__powerpc__) || defined(__sparc__) || defined(__ia64__) - configtype = 1; -#else - CARD8 tmp1, tmp2; - CARD32 tmp32_1, tmp32_2; - outb(PCI_MODE2_ENABLE_REG, 0x00); - outb(PCI_MODE2_FORWARD_REG, 0x00); - tmp1 = inb(PCI_MODE2_ENABLE_REG); - tmp2 = inb(PCI_MODE2_FORWARD_REG); - if ((tmp1 == 0x00) && (tmp2 == 0x00)) { - configtype = 2; - readPci = readPciCfg2; - writePci = writePciCfg2; - } else { - tmp32_1 = inl(PCI_MODE1_ADDRESS_REG); - outl(PCI_MODE1_ADDRESS_REG, PCI_EN); - tmp32_2 = inl(PCI_MODE1_ADDRESS_REG); - outl(PCI_MODE1_ADDRESS_REG, tmp32_1); - if (tmp32_2 == PCI_EN) { - configtype = 1; - } else { - return; - } - } -#endif - } - - if (configtype == 1) { - busidx = 0; - numbus = 1; - idx = 0; - do { - for (cardnum = 0; cardnum < MAX_DEV_PER_VENDOR_CFG1; cardnum++) { - func = 0; - do { - /* loop over the different functions, if present */ - if (!checkSlotCfg1(busidx,cardnum,func)) { - if (!func) - break; - else { - func++; - continue; - } - } - readConfigSpaceCfg1(busidx,cardnum,func,reg); - - func = interpretConfigSpace(reg,busidx, - cardnum,func); - - if (++idx >= MAX_PCI_DEVICES) - break; - } while (func < 8); - if (idx >= MAX_PCI_DEVICES) - break; - } - if (idx >= MAX_PCI_DEVICES) - break; - } while (++busidx < PCI_MAXBUS); -#if defined(__alpha__) || defined(__powerpc__) || defined(__sparc__) || defined(__ia64__) - /* don't use outl() ;-) */ -#else - outl(PCI_MODE1_ADDRESS_REG, 0); -#endif - } else { - int slot; - - busidx = 0; - numbus = 1; - idx = 0; - do { - for (slot=0xc0; slot<0xd0; slot++) { - if (!checkSlotCfg2(busidx,slot)) - break; - readConfigSpaceCfg2(busidx,slot,reg); - - interpretConfigSpace(reg,busidx, - slot,0); - if (++idx >= MAX_PCI_DEVICES) - break; - } - if (idx >= MAX_PCI_DEVICES) - break; - } while (++busidx < PCI_MAXBUS); - } - - - pciMaxBus = numbus - 1; - - /* link buses */ - pci_b1 = PciBuses; - while (pci_b1) { - pci_b2 = PciBuses; - pci_b1->pBus = NULL; - while (pci_b2) { - if (pci_b1->primary == pci_b2->secondary) - pci_b1->pBus = pci_b2; - pci_b2 = pci_b2->next; - } - pci_b1 = pci_b1->next; - } - pci1 = PciStruct; - while (pci1) { - pci_b2 = PciBuses; - pci1->pBus = NULL; - while (pci_b2) { - if (pci1->bus == pci_b2->secondary) - pci1->pBus = pci_b2; - pci_b2 = pci_b2->next; - } - pci1 = pci1->next; - } - if (RESORT) { - PciStructPtr tmp = PciStruct, tmp1; - PciStruct = NULL; - while (tmp) { - tmp1 = tmp->next; - tmp->next = PciStruct; - PciStruct = tmp; - tmp = tmp1; - } - } - PciList = CurrentPci = PciStruct; -} - -#ifndef __alpha__ -static CARD32 -readPciCfg1(CARD32 reg) -{ - CARD32 val; - - outl(PCI_MODE1_ADDRESS_REG, reg); - val = inl(PCI_MODE1_DATA_REG); - outl(PCI_MODE1_ADDRESS_REG, 0); - return val; -} - -static void -writePciCfg1(CARD32 reg, CARD32 val) -{ - outl(PCI_MODE1_ADDRESS_REG, reg); - outl(PCI_MODE1_DATA_REG,val); - outl(PCI_MODE1_ADDRESS_REG, 0); -} - -#ifndef __ia64__ -static CARD32 -readPciCfg2(CARD32 reg) -{ - CARD32 val; - CARD8 bus = (reg >> 16) & 0xff; - CARD8 dev = (reg >> 11) & 0x1f; - CARD8 num = reg & 0xff; - - outb(PCI_MODE2_ENABLE_REG, 0xF1); - outb(PCI_MODE2_FORWARD_REG, bus); - val = inl((dev << 8) + num); - outb(PCI_MODE2_ENABLE_REG, 0x00); - return val; -} - -static void -writePciCfg2(CARD32 reg, CARD32 val) -{ - CARD8 bus = (reg >> 16) & 0xff; - CARD8 dev = (reg >> 11) & 0x1f; - CARD8 num = reg & 0xff; - - outb(PCI_MODE2_ENABLE_REG, 0xF1); - outb(PCI_MODE2_FORWARD_REG, bus); - outl((dev << 8) + num,val); - outb(PCI_MODE2_ENABLE_REG, 0x00); -} -#endif -#endif - -void -pciVideoDisable(void) -{ - /* disable VGA routing on bridges */ - PciBusPtr pbp = PciBuses; - PciStructPtr pcp = PciStruct; - - while (pbp) { - writePci(pbp->Slot.l | 0x3c, pbp->bctl & ~(CARD32)(8<<16)); - pbp = pbp->next; - } - /* disable display devices */ - while (pcp) { - writePci(pcp->Slot.l | 0x04, pcp->cmd_st & ~(CARD32)3); - writePci(pcp->Slot.l | 0x30, pcp->RomBase & ~(CARD32)1); - pcp = pcp->next; - } -} - -void -pciVideoRestore(void) -{ - /* disable VGA routing on bridges */ - PciBusPtr pbp = PciBuses; - PciStructPtr pcp = PciStruct; - - while (pbp) { - writePci(pbp->Slot.l | 0x3c, pbp->bctl); - pbp = pbp->next; - } - /* disable display devices */ - while (pcp) { - writePci(pcp->Slot.l | 0x04, pcp->cmd_st); - writePci(pcp->Slot.l | 0x30, pcp->RomBase); - pcp = pcp->next; - } -} - -void -EnableCurrent() -{ - PciBusPtr pbp; - PciStructPtr pcp = CurrentPci; - - pciVideoDisable(); - - pbp = pcp->pBus; - while (pbp) { /* enable bridges */ - writePci(pbp->Slot.l | 0x3c, pbp->bctl | (CARD32)(8<<16)); - pbp = pbp->pBus; - } - writePci(pcp->Slot.l | 0x04, pcp->cmd_st | (CARD32)3); - writePci(pcp->Slot.l | 0x30, pcp->RomBase | (CARD32)1); -} - -CARD8 -PciRead8(int offset, CARD32 Slot) -{ - int shift = offset & 0x3; - offset = offset & 0xFC; - return ((readPci(Slot | offset) >> (shift << 3)) & 0xff); -} - -CARD16 -PciRead16(int offset, CARD32 Slot) -{ - int shift = offset & 0x2; - offset = offset & 0xFC; - return ((readPci(Slot | offset) >> (shift << 3)) & 0xffff); -} - -CARD32 -PciRead32(int offset, CARD32 Slot) -{ - offset = offset & 0xFC; - return (readPci(Slot | offset)); -} - -void -PciWrite8(int offset, CARD8 byte, CARD32 Slot) -{ - CARD32 val; - int shift = offset & 0x3; - offset = offset & 0xFC; - val = readPci(Slot | offset); - val &= ~(CARD32)(0xff << (shift << 3)); - val |= byte << (shift << 3); - writePci(Slot | offset, val); -} - -void -PciWrite16(int offset, CARD16 word, CARD32 Slot) -{ - CARD32 val; - int shift = offset & 0x2; - offset = offset & 0xFC; - val = readPci(Slot | offset); - val &= ~(CARD32)(0xffff << (shift << 3)); - val |= word << (shift << 3); - writePci(Slot | offset, val); -} - -void -PciWrite32(int offset, CARD32 lg, CARD32 Slot) -{ - offset = offset & 0xFC; - writePci(Slot | offset, lg); -} - -int -mapPciRom(PciStructPtr pciP) -{ - unsigned long RomBase = 0; - int mem_fd; - unsigned char *mem, *ptr; - unsigned char *scratch = NULL; - int length = 0; - CARD32 biosSize = 0x1000000; - CARD32 enablePci = 0; /* to keep gcc happy */ - - if (!pciP) - pciP = CurrentPci; - - if (FIX_ROM) { - RomBase = findBIOSMap(pciP, &biosSize); - if (!RomBase) { - RomBase = pciP->RomBase & ~(CARD32)0xFF; - } - } else { - RomBase = pciP->RomBase & ~(CARD32)0xFF; - if (~RomBase + 1 < biosSize || !RomBase) - RomBase = findBIOSMap(pciP, &biosSize); - } - - if ((mem_fd = open(MEM_FILE,O_RDONLY))<0) { - perror("opening memory"); - restoreMem(pciP); - return (0); - } - - PciWrite32(0x30,RomBase | 1,pciP->Slot.l); - -#ifdef __alpha__ - mem = ptr = (unsigned char *)mmap(0, biosSize, PROT_READ, - MAP_SHARED, mem_fd, RomBase | _bus_base()); -#else - mem = ptr = (unsigned char *)mmap(0, biosSize, PROT_READ, - MAP_SHARED, mem_fd, RomBase); -#endif - if (pciP != CurrentPci) { - enablePci = PciRead32(0x4,pciP->Slot.l); - PciWrite32(0x4,enablePci | 0x2,pciP->Slot.l); - } - - while ( *ptr == 0x55 && *(ptr+1) == 0xAA) { - unsigned short data_off = *(ptr+0x18) | (*(ptr+0x19)<< 8); - unsigned char *data = ptr + data_off; - unsigned char type; - int i; - - if (*data!='P' || *(data+1)!='C' || *(data+2)!='I' || *(data+3)!='R') { - break; - } - type = *(data + 0x14); - - if (type != 0) { /* not PC-AT image: find next one */ - unsigned int image_length; - unsigned char indicator = *(data + 0x15); - if (indicator & 0x80) /* last image */ - break; - image_length = (*(data + 0x10) - | (*(data + 0x11) << 8)) << 9; - ptr = ptr + image_length; - continue; - } - /* OK, we have a PC Image */ - length = (*(ptr + 2) << 9); - scratch = (unsigned char *)malloc(length); - /* don't use memcpy() here: Reading from bus! */ - for (i=0;iSlot.l); - - /* unmap/close/disable PCI bios mem */ - munmap(mem, biosSize); - close(mem_fd); - /* disable and restore mapping */ - writePci(pciP->Slot.l | 0x30, pciP->RomBase & ~(CARD32)1); - - if (scratch && length) { - memcpy((unsigned char *)V_BIOS, scratch, length); - free(scratch); - } - - restoreMem(pciP); - return length; -} - -CARD32 -findPci(CARD16 slotBX) -{ - CARD32 slot = slotBX << 8; - - if (slot == (CurrentPci->Slot.l & ~PCI_EN)) - return (CurrentPci->Slot.l | PCI_EN); - else { -#if !SHOW_ALL_DEV - PciBusPtr pBus = CurrentPci->pBus; - while (pBus) { - if (slot == (pBus->Slot.l & ~PCI_EN)) - return pBus->Slot.l | PCI_EN; - pBus = pBus->next; - } -#else - PciStructPtr pPci = PciStruct; - while (pPci) { - if (slot == (pPci->Slot.l & ~PCI_EN)) - return pPci->Slot.l | PCI_EN; - pPci = pPci->next; - } -#endif - } - return 0; -} - -CARD16 -pciSlotBX(PciStructPtr pPci) -{ - return (CARD16)((pPci->Slot.l >> 8) & 0xFFFF); -} - -PciStructPtr -findPciDevice(CARD16 vendorID, CARD16 deviceID, char n) -{ - PciStructPtr pPci = CurrentPci; - n++; - - while (pPci) { - if ((pPci->VendorID == vendorID) && (pPci->DeviceID == deviceID)) { - if (!(--n)) break; - } - pPci = pPci->next; - } - return pPci; -} - -PciStructPtr -findPciClass(CARD8 intf, CARD8 subClass, CARD16 class, char n) -{ - PciStructPtr pPci = CurrentPci; - n++; - - while (pPci) { - if ((pPci->Interface == intf) && (pPci->SubClass == subClass) - && (pPci->BaseClass == class)) { - if (!(--n)) break; - } - pPci = pPci->next; - } - return pPci; -} - -static void -readConfigSpaceCfg1(CARD32 bus, CARD32 dev, CARD32 func, CARD32 *reg) -{ - CARD32 config_cmd = PCI_EN | (bus<<16) | - (dev<<11) | (func<<8); - int i; - - for (i = 0; i<64;i+=4) { -#ifdef __alpha__ - reg[i] = axpPciCfgRead(config_cmd | i); -#else - outl(PCI_MODE1_ADDRESS_REG, config_cmd | i); - reg[i] = inl(PCI_MODE1_DATA_REG); -#endif - - } -} - -static int -checkSlotCfg1(CARD32 bus, CARD32 dev, CARD32 func) -{ - CARD32 config_cmd = PCI_EN | (bus<<16) | - (dev<<11) | (func<<8); - CARD32 reg; -#ifdef __alpha__ - reg = axpPciCfgRead(config_cmd); -#else - outl(PCI_MODE1_ADDRESS_REG, config_cmd); - reg = inl(PCI_MODE1_DATA_REG); -#endif - if (reg != 0xFFFFFFFF) - return 1; - else - return 0; -} - -static int -checkSlotCfg2(CARD32 bus, int dev) -{ - CARD32 val; - - outb(PCI_MODE2_ENABLE_REG, 0xF1); - outb(PCI_MODE2_FORWARD_REG, bus); - val = inl(dev << 8); - outb(PCI_MODE2_FORWARD_REG, 0x00); - outb(PCI_MODE2_ENABLE_REG, 0x00); - if (val == 0xFFFFFFFF) - return 0; - if (val == 0xF0F0F0F0) - return 0; - return 1; -} - -static void -readConfigSpaceCfg2(CARD32 bus, int dev, CARD32 *reg) -{ - int i; - - outb(PCI_MODE2_ENABLE_REG, 0xF1); - outb(PCI_MODE2_FORWARD_REG, bus); - for (i = 0; i<64;i+=4) { - reg[i] = inl((dev << 8) + i); - } - outb(PCI_MODE2_ENABLE_REG, 0x00); -} - -static CARD8 -interpretConfigSpace(CARD32 *reg, int busidx, CARD8 dev, CARD8 func) -{ - CARD32 config_cmd; - CARD16 vendor, device; - CARD8 baseclass, subclass; - CARD8 primary, secondary; - CARD8 header, interface; - int i; - - config_cmd = PCI_EN | busidx<<16 | - (dev<<11) | (func<<8); - - for (i = 0x10; i < 0x28; i+=4) { - if (IS_MEM32(reg[i])) - if ((reg[i] & 0xFFFFFFF0) < pciMinMemReg) - pciMinMemReg = (reg[i] & 0xFFFFFFF0); -#ifdef __alpha__ - if (IS_MEM64(reg[i])) { - unsigned long addr = reg[i] | - (unsigned long)(reg[i+4]) << 32; - if ((addr & ~0xfL) < pciMinMemReg) - pciMinMemReg = (addr & ~0xfL); - i+=4; - } -#endif - } - vendor = reg[0] & 0xFFFF; - device = reg[0] >> 16; - baseclass = reg[8] >> 24; - subclass = (reg[8] >> 16) & 0xFF; - interface = (reg[8] >> 8) & 0xFF; - - header = (reg[0x0c] >> 16) & 0xff; - if (BRIDGE_CLASS(baseclass)) { - if (BRIDGE_PCI_CLASS(subclass)) { - PciBusPtr pbp = malloc(sizeof(PciBusRec)); - primary = reg[0x18] & 0xFF; - secondary = (reg[0x18] >> 8) & 0xFF; - pbp->bctl = reg[0x3c]; - pbp->primary = primary; - pbp->secondary = secondary; - pbp->Slot.l = config_cmd; - pbp->next = PciBuses; - PciBuses = pbp; - numbus++; - } else if (BRIDGE_HOST_CLASS(subclass) - && (hostbridges++ > 1)) { - numbus++; - } - } else if (VIDEO_CLASS(baseclass,subclass)) { - PciStructPtr pcp = malloc(sizeof(PciStructRec)); - pcp->RomBase = reg[0x30]; - pcp->cmd_st = reg[4]; - pcp->active = (reg[4] & 0x03) == 3 ? 1 : 0; - pcp->VendorID = vendor; - pcp->DeviceID = device; - pcp->Interface = interface; - pcp->BaseClass = baseclass; - pcp->SubClass = subclass; - pcp->Slot.l = config_cmd; - pcp->bus = busidx; - pcp->dev = dev; - pcp->func = func; - pcp->next = PciStruct; - PciStruct = pcp; - } - if ((func == 0) - && ((header & PCI_MULTIFUNC_DEV) == 0)) - func = 8; - else - func++; - return func; -} - -static CARD32 remapMEM_val; -static int remapMEM_num; - -static int /* map it on some other video device */ -remapMem(PciStructPtr pciP, int num, CARD32 size) -{ - PciStructPtr pciPtr = PciStruct; - int i; - CARD32 org; - CARD32 val; - CARD32 size_n; - - org = PciRead32(num + 0x10,pciP->Slot.l); - - while (pciPtr) { - for (i = 0; i < 20; i=i+4) { - - val = PciRead32(i + 0x10,pciPtr->Slot.l); - /* don't map it on itself */ - if ((org & 0xfffffff0) == (val & 0xfffffff0)) - continue; - if (val && !(val & 1)) - PciWrite32(i + 0x10,0xffffffff,pciPtr->Slot.l); - else - continue; - size_n = PciRead32(i + 0x10,pciPtr->Slot.l); - PciWrite32(i + 0x10,val,pciPtr->Slot.l); - size_n = ~(CARD32)(size_n & 0xfffffff0) + 1; - - if (size_n >= size) { - PciWrite32(num + 0x10,val,pciP->Slot.l); - return 1; - } - } - pciPtr = pciPtr->next; - } - /* last resort: try to go below lowest PCI mem address */ - val = ((pciMinMemReg & ~(CARD32)(size - 1)) - size); - if (val > 0x7fffffff) { - PciWrite32(num + 0x10,val, pciP->Slot.l); - return 1; - } - - return 0; -} - -static void -restoreMem(PciStructPtr pciP) -{ - if (remapMEM_val == 0) return; - PciWrite32(remapMEM_num + 0x10,remapMEM_val,pciP->Slot.l); - return; -} - -static CARD32 -findBIOSMap(PciStructPtr pciP, CARD32 *biosSize) -{ - PciStructPtr pciPtr = PciStruct; - int i; - CARD32 val; - CARD32 size = 4*1024; /* should be fixed: size seems _really_ to be undefined below */ - - PciWrite32(0x30,0xffffffff,pciP->Slot.l); - *biosSize = PciRead32(0x30,pciP->Slot.l); - PciWrite32(0x30,pciP->RomBase,pciP->Slot.l); - *biosSize = ~(*biosSize & 0xFFFFFF00) + 1; - if (*biosSize > (1024 * 1024 * 16)) { - *biosSize = 1024 * 1024 * 16; - } - while (pciPtr) { - if (pciPtr->bus != pciP->bus) { - pciPtr = pciPtr->next; - continue; - } - for (i = 0; i < 20; i=i+4) { - - val = PciRead32(i + 0x10,pciPtr->Slot.l); - if (!(val & 1)) - - PciWrite32(i + 0x10,0xffffffff,pciPtr->Slot.l); - else - continue; - size = PciRead32(i + 0x10,pciPtr->Slot.l); - PciWrite32(i + 0x10,val,pciPtr->Slot.l); - size = ~(CARD32)(size & 0xFFFFFFF0) + 1; - if (size >= *biosSize) { - if (pciP == pciPtr) { /* if same device remap ram*/ - if (!(remapMem(pciP,i,size))) - continue; - remapMEM_val = val; - remapMEM_num = i; - } else { - remapMEM_val = 0; - } - return val & 0xFFFFFF00; - } - } - pciPtr = pciPtr->next; - } - remapMEM_val = 0; - /* very last resort */ - if (pciP->bus == 0 && (pciMinMemReg > *biosSize)) - return (pciMinMemReg - size) & ~(size - 1); - - return 0; -} - -int -cfg1out(CARD16 addr, CARD32 val) -{ - if (addr == 0xCF8) { - PciCfg1Addr = val; - return 1; - } else if (addr == 0xCFC) { - writePci(PciCfg1Addr, val); - return 1; - } - return 0; -} - -int -cfg1in(CARD16 addr, CARD32 *val) -{ - if (addr == 0xCF8) { - *val = PciCfg1Addr; - return 1; - } else if (addr == 0xCFC) { - *val = readPci(PciCfg1Addr); - return 1; - } - return 0; -} - -PciStructPtr -findPciByIDs(int bus, int dev, int func) -{ - PciStructPtr pciP = PciList; - - while (pciP) { - if (pciP->bus == (unsigned) bus && pciP->dev == (unsigned) dev && pciP->func == (unsigned) func) - return pciP; - pciP = pciP->next; - } - return NULL; -} diff --git a/src/hwinfo/src/int10/i10_v86.c b/src/hwinfo/src/int10/i10_v86.c deleted file mode 100644 index 13fe52d8f5..0000000000 --- a/src/hwinfo/src/int10/i10_v86.c +++ /dev/null @@ -1,516 +0,0 @@ -/* - * Copyright 1999 Egbert Eich - * - * 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 name of the authors not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. The authors makes no representations - * about the suitability of this software for any purpose. It is provided - * "as is" without express or implied warranty. - * - * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE AUTHORS 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. - */ - -#include -#include -#include -#include -#include -#ifdef __i386__ -#include -#else -#include "vm86_struct.h" -#endif -#include -#include "v86bios.h" -#include "AsmMacros.h" - -extern int emu_vm86(struct vm86_struct *vm, unsigned debug); - -#define INT2PTR(a) ((a) + (unsigned char *) 0) - -void log_err(char *format, ...) __attribute__ ((format (printf, 1, 2))); - -struct vm86_struct vm86s; - -static int vm86_GP_fault(void); -static int vm86_do_int(int num); -#ifdef __i386__ -static int vm86_rep(struct vm86_struct *ptr); -#endif -void log_registers(void); - -#define CPU_REG(x) (vm86s.regs.x) -#define CPU_REG_LW(reg) (*((CARD16 *)&CPU_REG(reg))) -#define CPU_REG_HW(reg) (*((CARD16 *)&CPU_REG(reg) + 1)) -#define CPU_REG_LB(reg) (*(CARD8 *)&CPU_REG(e##reg)) -#define SEG_ADR(type, seg, reg) type((CPU_REG_LW(seg) << 4) + CPU_REG_LW(e##reg) + (unsigned char *) 0) -#define DF (1 << 10) - -struct pio P; - -void -setup_io(void) -{ - P.inb = (CARD8(*)(CARD16))inb; - P.inw = (CARD16(*)(CARD16))inw; - P.inl = (CARD32(*)(CARD16))inl; - P.outb = (void(*)(CARD16,CARD8))outb; - P.outw = (void(*)(CARD16,CARD16))outw; - P.outl = (void(*)(CARD16,CARD32))outl; -} - - -static void -setup_vm86(unsigned long bios_start, i86biosRegsPtr regs) -{ - CARD32 eip; - CARD16 cs; - - vm86s.flags = VM86_SCREEN_BITMAP; - vm86s.flags = 0; - vm86s.screen_bitmap = 0; - vm86s.cpu_type = CPU_586; - memset(&vm86s.int_revectored, 0xff,sizeof(vm86s.int_revectored)) ; - memset(&vm86s.int21_revectored, 0xff,sizeof(vm86s.int21_revectored)) ; - - eip = bios_start & 0xFFFF; - cs = (bios_start & 0xFF0000) >> 4; - - CPU_REG(eax) = regs->ax; - CPU_REG(ebx) = regs->bx; - CPU_REG(ecx) = regs->cx; - CPU_REG(edx) = regs->dx; - CPU_REG(esi) = 0; - CPU_REG(edi) = regs->di; - CPU_REG(ebp) = 0; - CPU_REG(eip) = eip; - CPU_REG(cs) = cs; - CPU_REG(esp) = 0x100; - CPU_REG(ss) = 0x30; /* This is the standard pc bios stack */ - CPU_REG(es) = regs->es; - CPU_REG(ds) = 0x40; /* standard pc ds */ - CPU_REG(fs) = 0; - CPU_REG(gs) = 0; - CPU_REG(eflags) |= (VIF_MASK | VIP_MASK); -} - -void -collect_bios_regs(i86biosRegsPtr regs) -{ - regs->ax = CPU_REG(eax); - regs->bx = CPU_REG(ebx); - regs->cx = CPU_REG(ecx); - regs->dx = CPU_REG(edx); - regs->es = CPU_REG(es); - regs->ds = CPU_REG(ds); - regs->di = CPU_REG(edi); - regs->si = CPU_REG(esi); -} - -static int do_vm86(int cpuemu) -{ - int retval; - -#ifdef V86BIOS_DEBUG - dump_registers(); -#endif - -#ifdef __i386__ - if(cpuemu) { - retval = emu_vm86(&vm86s, cpuemu & 2); - } - else { - retval = vm86_rep(&vm86s); - } -#else - retval = emu_vm86(&vm86s, cpuemu & 2); -#endif - - switch (VM86_TYPE(retval)) { - case VM86_UNKNOWN: - if (!vm86_GP_fault()) - return 0; - break; - case VM86_STI: - log_err("vm86_sti :-((\n"); - log_registers(); - return 0; - case VM86_INTx: - if (!vm86_do_int(VM86_ARG(retval))) { - log_err("Unknown vm86_int: %X\n",VM86_ARG(retval)); - log_registers(); - return 0; - } - /* I'm not sure yet what to do if we can handle ints */ - break; - case VM86_SIGNAL: - log_err("VBE: received a signal!\n"); - log_registers(); - return 0; - default: - log_err("unknown type(0x%x)=0x%x\n", - VM86_ARG(retval),VM86_TYPE(retval)); - log_registers(); - return 0; - } - - return 1; -} - -void -do_x86(unsigned long bios_start, i86biosRegsPtr regs, int cpuemu) -{ - setup_vm86(bios_start, regs); - while(do_vm86(cpuemu)) {}; - collect_bios_regs(regs); -} - -/* get the linear address */ -#define LIN_PREF_SI ((pref_seg << 4) + CPU_REG_LW(esi)) - -#define LWECX (prefix66 ^ prefix67 ? CPU_REG(ecx) : CPU_REG_LW(ecx)) -#define SET_LWECX_ZERO (prefix66 ^ prefix67 ? (CPU_REG(ecx) = 0) : (CPU_REG_LW(ecx) = 0)) - -static int -vm86_GP_fault(void) -{ - unsigned char *csp, *lina; - CARD32 org_eip; - int pref_seg; - int done,is_rep,prefix66,prefix67; - - - csp = lina = SEG_ADR((unsigned char *), cs, ip); -#ifdef V86BIOS_DEBUG - printf("exception: \n"); - dump_code(); -#endif - - is_rep = 0; - prefix66 = prefix67 = 0; - pref_seg = -1; - - /* eat up prefixes */ - done = 0; - do { - switch (*(csp++)) { - case 0x66: /* operand prefix */ prefix66=1; break; - case 0x67: /* address prefix */ prefix67=1; break; - case 0x2e: /* CS */ pref_seg=CPU_REG(cs); break; - case 0x3e: /* DS */ pref_seg=CPU_REG(ds); break; - case 0x26: /* ES */ pref_seg=CPU_REG(es); break; - case 0x36: /* SS */ pref_seg=CPU_REG(ss); break; - case 0x65: /* GS */ pref_seg=CPU_REG(gs); break; - case 0x64: /* FS */ pref_seg=CPU_REG(fs); break; - case 0xf2: /* repnz */ - case 0xf3: /* rep */ is_rep=1; break; - default: done=1; - } - } while (!done); - csp--; /* oops one too many */ - org_eip = CPU_REG(eip); - CPU_REG_LW(eip) += (csp - lina); - - switch (*csp) { - - case 0x6c: /* insb */ - /* NOTE: ES can't be overwritten; prefixes 66,67 should use esi,edi,ecx - * but is anyone using extended regs in real mode? */ - /* WARNING: no test for DI wrapping! */ - CPU_REG_LW(edi) += port_rep_inb(CPU_REG_LW(edx), - SEG_ADR((CARD8 *),es,di), - CPU_REG_LW(eflags)&DF, - (is_rep? LWECX:1)); - if (is_rep) SET_LWECX_ZERO; - CPU_REG_LW(eip)++; - break; - - case 0x6d: /* (rep) insw / insd */ - /* NOTE: ES can't be overwritten */ - /* WARNING: no test for _DI wrapping! */ - if (prefix66) { - CPU_REG_LW(edi) += port_rep_inl(CPU_REG_LW(edx), - SEG_ADR((CARD32 *),es,di), - CPU_REG_LW(eflags)&DF, - (is_rep? LWECX:1)); - } - else { - CPU_REG_LW(edi) += port_rep_inw(CPU_REG_LW(edx), - SEG_ADR((CARD16 *),es,di), - CPU_REG_LW(eflags)&DF, - (is_rep? LWECX:1)); - } - if (is_rep) SET_LWECX_ZERO; - CPU_REG_LW(eip)++; - break; - - case 0x6e: /* (rep) outsb */ - if (pref_seg < 0) pref_seg = CPU_REG_LW(ds); - /* WARNING: no test for _SI wrapping! */ - CPU_REG_LW(esi) += port_rep_outb(CPU_REG_LW(edx),(CARD8*)INT2PTR(LIN_PREF_SI), - CPU_REG_LW(eflags)&DF, - (is_rep? LWECX:1)); - if (is_rep) SET_LWECX_ZERO; - CPU_REG_LW(eip)++; - break; - - case 0x6f: /* (rep) outsw / outsd */ - if (pref_seg < 0) pref_seg = CPU_REG_LW(ds); - /* WARNING: no test for _SI wrapping! */ - if (prefix66) { - CPU_REG_LW(esi) += port_rep_outl(CPU_REG_LW(edx), - (CARD32 *)INT2PTR(LIN_PREF_SI), - CPU_REG_LW(eflags)&DF, - (is_rep? LWECX:1)); - } - else { - CPU_REG_LW(esi) += port_rep_outw(CPU_REG_LW(edx), - (CARD16 *)INT2PTR(LIN_PREF_SI), - CPU_REG_LW(eflags)&DF, - (is_rep? LWECX:1)); - } - if (is_rep) SET_LWECX_ZERO; - CPU_REG_LW(eip)++; - break; - - case 0xe5: /* inw xx, inl xx */ - if (prefix66) CPU_REG(eax) = P.inl((int) csp[1]); - else CPU_REG_LW(eax) = P.inw((int) csp[1]); - CPU_REG_LW(eip) += 2; - break; - case 0xe4: /* inb xx */ - CPU_REG_LW(eax) &= ~(CARD32)0xff; - CPU_REG_LB(ax) |= P.inb((int) csp[1]); - CPU_REG_LW(eip) += 2; - break; - case 0xed: /* inw dx, inl dx */ - if (prefix66) CPU_REG(eax) = P.inl(CPU_REG_LW(edx)); - else CPU_REG_LW(eax) = P.inw(CPU_REG_LW(edx)); - CPU_REG_LW(eip) += 1; - break; - case 0xec: /* inb dx */ - CPU_REG_LW(eax) &= ~(CARD32)0xff; - CPU_REG_LB(ax) |= P.inb(CPU_REG_LW(edx)); - CPU_REG_LW(eip) += 1; - break; - - case 0xe7: /* outw xx */ - if (prefix66) P.outl((int)csp[1], CPU_REG(eax)); - else P.outw((int)csp[1], CPU_REG_LW(eax)); - CPU_REG_LW(eip) += 2; - break; - case 0xe6: /* outb xx */ - P.outb((int) csp[1], CPU_REG_LB(ax)); - CPU_REG_LW(eip) += 2; - break; - case 0xef: /* outw dx */ - if (prefix66) P.outl(CPU_REG_LW(edx), CPU_REG(eax)); - else P.outw(CPU_REG_LW(edx), CPU_REG_LW(eax)); - CPU_REG_LW(eip) += 1; - break; - case 0xee: /* outb dx */ - P.outb(CPU_REG_LW(edx), CPU_REG_LB(ax)); - CPU_REG_LW(eip) += 1; - break; - - case 0xf4: -#ifdef V86BIOS_DEBUG - printf("hlt at %p\n", lina); -#endif - return 0; - - case 0x0f: - log_err("CPU 0x0f Trap at eip=0x%lx\n",CPU_REG(eip)); - goto op0ferr; - break; - - case 0xf0: /* lock */ - default: - log_err("unknown reason for exception\n"); - log_registers(); - op0ferr: - log_err("cannot continue\n"); - return 0; - } /* end of switch() */ - return 1; -} - -static int -vm86_do_int(int num) -{ - int val; - struct regs86 regs; - - /* try to run bios interrupt */ - - /* if not installed fall back */ -#define COPY(x) regs.x = CPU_REG(x) -#define COPY_R(x) CPU_REG(x) = regs.x - - COPY(eax); - COPY(ebx); - COPY(ecx); - COPY(edx); - COPY(esi); - COPY(edi); - COPY(ebp); - COPY(eip); - COPY(esp); - COPY(cs); - COPY(ss); - COPY(ds); - COPY(es); - COPY(fs); - COPY(gs); - COPY(eflags); - - if (!(val = int_handler(num,®s))) - if (!(val = run_bios_int(num,®s))) - return val; - - COPY_R(eax); - COPY_R(ebx); - COPY_R(ecx); - COPY_R(edx); - COPY_R(esi); - COPY_R(edi); - COPY_R(ebp); - COPY_R(eip); - COPY_R(esp); - COPY_R(cs); - COPY_R(ss); - COPY_R(ds); - COPY_R(es); - COPY_R(fs); - COPY_R(gs); - COPY_R(eflags); - - return val; -#undef COPY -#undef COPY_R -} - -#ifdef __i386__ - -static int -vm86_rep(struct vm86_struct *ptr) -{ - - int __res; - - /* stay away from %ebx */ - __asm__ __volatile__("push %%ebx\n\tmov %%ecx,%%ebx\n\tpush %%gs\n\tint $0x80\n\tpop %%gs\n\tpop %%ebx\n" - :"=a" (__res):"a" ((int)113), - "c" ((struct vm86_struct *)ptr)); - - if ((__res) < 0) { - errno = -__res; - __res=-1; - } - else errno = 0; - return __res; -} - -#endif - -#ifdef __i386__ - -#define pushw(base, ptr, val) \ -__asm__ __volatile__( \ - "decw %w0\n\t" \ - "movb %h2,(%1,%0)\n\t" \ - "decw %w0\n\t" \ - "movb %b2,(%1,%0)" \ - : "=r" (ptr) \ - : "r" (base), "q" (val), "0" (ptr)) - -#else - -#define pushw(base, ptr, val) { \ - ptr = ((ptr) - 1) & 0xffff; \ - *((unsigned char *)(base) + (ptr)) = (val) >> 8; \ - ptr = ((ptr) - 1) & 0xffff; \ - *((unsigned char *)(base) + (ptr)) = (val); \ - } - -#endif - -int -run_bios_int(int num, struct regs86 *regs) -{ - CARD16 *ssp; - CARD32 sp; - CARD32 eflags; - -#ifdef V86BIOS_DEBUG - static int firsttime = 1; -#endif - /* check if bios vector is initialized */ - if (((CARD16*)0)[(num<<1)+1] == 0x0000) { /* SYS_BIOS_SEG ?*/ - return 0; - } - -#ifdef V86BIOS_DEBUG - if (firsttime) { - dprint(0,0x3D0); - firsttime = 0; - } -#endif - - ssp = (CARD16*)INT2PTR(CPU_REG(ss)<<4); - sp = (CARD32) CPU_REG_LW(esp); - - eflags = regs->eflags; - eflags = ((eflags & VIF_MASK) != 0) - ? (eflags | IF_MASK) : (eflags & ~(CARD32) IF_MASK); - pushw(ssp, sp, eflags); - pushw(ssp, sp, regs->cs); - pushw(ssp, sp, (CARD16)regs->eip); - regs->esp -= 6; - regs->cs = ((CARD16 *) 0)[(num << 1) + 1]; - regs->eip = (regs->eip & 0xFFFF0000) | ((CARD16 *) 0)[num << 1]; -#ifdef V86BIOS_DEBUG - dump_code(); -#endif - regs->eflags = regs->eflags - & ~(VIF_MASK | TF_MASK | IF_MASK | NT_MASK); - return 1; -} - -CARD32 -getIntVect(int num) -{ - return ((CARD32*)0)[num]; -} - -CARD32 -getIP(void) -{ - return (CPU_REG(cs) << 4) + CPU_REG(eip); -} - -void log_registers() -{ - log_err( - " eax %08x, ebx %08x, ecx %08x, edx %08x\n" - " esi %08x, edi %08x, ebp %08x, esp %08x\n" - " ds %04x, es %04x, fs %04x, gs %04x, ss %04x\n" - " cs:eip %04x:%08x\n", - (unsigned) CPU_REG(eax), (unsigned) CPU_REG(ebx), (unsigned) CPU_REG(ecx), (unsigned) CPU_REG(edx), - (unsigned) CPU_REG(esi), (unsigned) CPU_REG(edi), (unsigned) CPU_REG(ebp), (unsigned) CPU_REG(esp), - (unsigned) CPU_REG(ds), (unsigned) CPU_REG(es), - (unsigned) CPU_REG(fs), (unsigned) CPU_REG(gs), (unsigned) CPU_REG(ss), - (unsigned) CPU_REG(cs), (unsigned) CPU_REG(eip) - ); -} - diff --git a/src/hwinfo/src/int10/i10_vbios.c b/src/hwinfo/src/int10/i10_vbios.c deleted file mode 100644 index c9521991b8..0000000000 --- a/src/hwinfo/src/int10/i10_vbios.c +++ /dev/null @@ -1,511 +0,0 @@ -/* - * Copyright 1999 Egbert Eich - * - * 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 name of the authors not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. The authors makes no representations - * about the suitability of this software for any purpose. It is provided - * "as is" without express or implied warranty. - * - * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE AUTHORS 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. - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(__alpha__) || defined (__ia64__) -#include -//#elif defined(HAVE_SYS_PERM) -#else -#include -#endif -#include "v86bios.h" -#include "pci.h" -#include "AsmMacros.h" -#include "vbios.h" - -void log_err(char *format, ...) __attribute__ ((format (printf, 1, 2))); - -#define SIZE 0x100000 -#define VRAM_START 0xA0000 -#define VRAM_SIZE 0x1FFFF -#define V_BIOS_SIZE 0x1FFFF -#define BIOS_START 0x7C00 /* default BIOS entry */ - -static CARD8 code[] = { 0xcd, 0x10, 0xf4 }; /* int 0x10, hlt */ -// static CARD8 code13[] = { 0xcd, 0x13, 0xf4 }; /* int 0x13, hlt */ - -static int int10_bios_ok(void); -static int map(void); -static void unmap(void); -static int map_vram(void); -static void unmap_vram(void); -static int copy_vbios(hd_data_t *hd_data); -// static int copy_sbios(void); -#if MAP_SYS_BIOS -static int copy_sys_bios(hd_data_t *hd_data); -#endif -static int copy_bios_ram(hd_data_t *hd_data); -static int setup_system_bios(hd_data_t *hd_data); -static void setup_int_vect(void); -static int chksum(CARD8 *start); - -void loadCodeToMem(unsigned char *ptr, CARD8 *code); - -static int vram_mapped = 0; -static int int10inited = 0; - -static sigjmp_buf longjmp_buf; - -static void sigsegv_handler(int); - -int InitInt10(hd_data_t *hd_data, int pci_cfg_method) -{ - if(geteuid()) return -1; - - if(!map()) return -1; - - if(!setup_system_bios(hd_data)) { - unmap(); - return -1; - } - - setup_io(); - - if(iopl(3) < 0) { - unmap(); - return -1; - } - - scan_pci(pci_cfg_method); - - for(; CurrentPci; CurrentPci = CurrentPci->next) { - if(CurrentPci->active) break; - } - - iopl(0); - - setup_int_vect(); - - if(!copy_vbios(hd_data)) { - unmap(); - return -1; - } - - if(!map_vram() || !copy_bios_ram(hd_data)) { - unmap(); - return -1; - } - - if(!int10_bios_ok()) { - unmap(); - return -1; - } - - int10inited = 1; - - return 0; -} - - -void FreeInt10() -{ - if(!int10inited) return; - - unmap_vram(); - unmap(); - - int10inited = 0; -} - - -/* - * Check whether int 0x10 points to some useful code. - */ -int int10_bios_ok() -{ - unsigned cs, ip; - unsigned char *p; - - ip = ((uint16_t *) 0)[0x10 * 2]; - cs = ((uint16_t *) 0)[0x10 * 2 + 1]; - - p = (unsigned char *) ((cs << 4) + ip); - - log_err( - " vbe: int 10h points to %04x:%04x: %02x %02x %02x %02x %02x %02x %02x %02x\n", - cs, ip, - p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7] - ); - - /* It can't possibly start with all zeros. */ - if(!*(uint32_t *) p) { - log_err(" vbe: oops, int 10h points into nirvana!\n"); - - return 0; - } - - return 1; -} - - -void sigsegv_handler(int num) -{ - siglongjmp(longjmp_buf, num + 1000); -} - - -int CallInt10(int *ax, int *bx, int *cx, unsigned char *buf, int len, int cpuemu) -{ - i86biosRegs bRegs; - void (*old_sigsegv_handler)(int) = SIG_DFL; - void (*old_sigill_handler)(int) = SIG_DFL; - void (*old_sigtrap_handler)(int) = SIG_DFL; - int jmp; - - if(!int10inited) return -1; - memset(&bRegs, 0, sizeof bRegs); - bRegs.ax = *ax; - bRegs.bx = *bx; - bRegs.cx = *cx; - bRegs.dx = 0; - bRegs.es = 0x7e0; - bRegs.di = 0x0; - if(buf) memcpy((unsigned char *) 0x7e00, buf, len); - - iopl(3); - - jmp = sigsetjmp(longjmp_buf, 1); - - if(!jmp) { - old_sigsegv_handler = signal(SIGSEGV, sigsegv_handler); - old_sigill_handler = signal(SIGILL, sigsegv_handler); - old_sigtrap_handler = signal(SIGTRAP, sigsegv_handler); - - loadCodeToMem((unsigned char *) BIOS_START, code); - do_x86(BIOS_START, &bRegs, cpuemu); - } - else { - int10inited = 0; - log_err("oops: got signal %d in vm86() code\n", jmp - 1000); - } - - signal(SIGTRAP, old_sigtrap_handler); - signal(SIGILL, old_sigill_handler); - signal(SIGSEGV, old_sigsegv_handler); - - iopl(0); - - if(buf) memcpy(buf, (unsigned char *) 0x7e00, len); - - *ax = bRegs.ax; - *bx = bRegs.bx; - *cx = bRegs.cx; - - return bRegs.ax; -} - - -#if 0 -int CallInt13(int *ax, int *bx, int *cx, int *dx, unsigned char *buf, int len, int cpuemu) -{ - i86biosRegs bRegs; - - if(!int10inited) return -1; - memset(&bRegs, 0, sizeof bRegs); - bRegs.ax = *ax; - bRegs.bx = *bx; - bRegs.cx = *cx; - bRegs.dx = *dx; - bRegs.es = 0x7e0; - bRegs.ds = 0x7e0; - bRegs.di = 0x0; - bRegs.si = 0x0; - if(buf) memcpy((unsigned char *) 0x7e00, buf, len); - - iopl(3); - - loadCodeToMem((unsigned char *) BIOS_START, code13); - do_x86(BIOS_START, &bRegs, cpuemu); - - iopl(0); - - if(buf) memcpy(buf, (unsigned char *) 0x7e00, len); - - *ax = bRegs.ax; - *bx = bRegs.bx; - *cx = bRegs.cx; - *dx = bRegs.dx; - - return bRegs.ax; -} -#endif - - -int map() -{ - void* mem; - - mem = mmap(0, (size_t) SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_FIXED | MAP_PRIVATE | MAP_ANON, -1, 0); - - if(mem) { - perror("anonymous map"); - return 0; - } - - memset(mem, 0, SIZE); - - loadCodeToMem((unsigned char *) BIOS_START, code); - - return 1; -} - - -void unmap() -{ - munmap(0, SIZE); -} - - -static int -map_vram(void) -{ - int mem_fd; - -#ifdef __ia64__ - if ((mem_fd = open(MEM_FILE,O_RDWR | O_SYNC))<0) -#else - if ((mem_fd = open(MEM_FILE,O_RDWR))<0) -#endif - { - perror("opening memory"); - return 0; - } - -#ifndef __alpha__ - if (mmap((void *) VRAM_START, (size_t) VRAM_SIZE, - PROT_EXEC | PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, - mem_fd, VRAM_START) == (void *) -1) -#else - if (!_bus_base()) sparse_shift = 7; /* Uh, oh, JENSEN... */ - if (!_bus_base_sparse()) sparse_shift = 0; - if ((vram_map = mmap(0,(size_t) (VRAM_SIZE << sparse_shift), - PROT_READ | PROT_WRITE, - MAP_SHARED, - mem_fd, (VRAM_START << sparse_shift) - | _bus_base_sparse())) == (void *) -1) -#endif - { - perror("mmap error in map_hardware_ram"); - close(mem_fd); - return (0); - } - vram_mapped = 1; - close(mem_fd); - return (1); -} - - -void unmap_vram() -{ - if(!vram_mapped) return; - - munmap((void*) VRAM_START, VRAM_SIZE); - - vram_mapped = 0; -} - - -/* - * Read video BIOS from /dev/mem. - * - * Return: - * 0: failed - * 1: ok - */ -int copy_vbios(hd_data_t *hd_data) -{ - unsigned size; - unsigned char tmp[3]; - - if(!hd_read_mmap(hd_data, MEM_FILE, tmp, V_BIOS, sizeof tmp)) { - log_err("vbe: failed to read %u bytes at 0x%x\n", (unsigned) sizeof tmp, V_BIOS); - return 0; - } - - if(tmp[0] != 0x55 || tmp[1] != 0xAA ) { - log_err("vbe: no bios found at: 0x%x\n", V_BIOS); - return 0; - } - - size = tmp[2] * 0x200; - - if(!hd_read_mmap(hd_data, MEM_FILE, (unsigned char *) V_BIOS, V_BIOS, size)) { - log_err("vbe: failed to read %d bytes at 0x%x\n", size, V_BIOS); - return 0; - } - - return chksum((CARD8 *) V_BIOS) ? 1 : 0; -} - - -#if MAP_SYS_BIOS -static int -copy_sys_bios(hd_data_t *hd_data) -{ - return hd_read_mmap(hd_data, MEM_FILE, (unsigned char *) 0xf0000, 0xf0000, 0xffff); -} -#endif - - -static int copy_bios_ram(hd_data_t *hd_data) -{ - return hd_read_mmap(hd_data, MEM_FILE, (unsigned char *) 0, 0, 0x1000); -} - -void loadCodeToMem(unsigned char *ptr, CARD8 *code) -{ - while((*ptr++ = *code++) != 0xf4 /* hlt */); - - return; -} - - -/* - * here we are really paranoid about faking a "real" - * BIOS. Most of this information was pulled from - * dosem. - */ -static void -setup_int_vect(void) -{ - const CARD16 cs = 0x0000; - const CARD16 ip = 0x0; - int i; - - /* let the int vects point to the SYS_BIOS seg */ - for (i=0; i<0x80; i++) { - ((CARD16*)0)[i<<1] = ip; - ((CARD16*)0)[(i<<1)+1] = cs; - } - /* video interrupts default location */ - ((CARD16*)0)[(0x42<<1)+1] = 0xf000; - ((CARD16*)0)[0x42<<1] = 0xf065; - ((CARD16*)0)[(0x10<<1)+1] = 0xf000; - ((CARD16*)0)[0x10<<1] = 0xf065; - /* video param table default location (int 1d) */ - ((CARD16*)0)[(0x1d<<1)+1] = 0xf000; - ((CARD16*)0)[0x1d<<1] = 0xf0A4; - /* font tables default location (int 1F) */ - ((CARD16*)0)[(0x1f<<1)+1] = 0xf000; - ((CARD16*)0)[0x1f<<1] = 0xfa6e; - - /* int 11 default location */ - ((CARD16*)0)[(0x11<1)+1] = 0xf000; - ((CARD16*)0)[0x11<<1] = 0xf84d; - /* int 12 default location */ - ((CARD16*)0)[(0x12<<1)+1] = 0xf000; - ((CARD16*)0)[0x12<<1] = 0xf841; - /* int 15 default location */ - ((CARD16*)0)[(0x15<<1)+1] = 0xf000; - ((CARD16*)0)[0x15<<1] = 0xf859; - /* int 1A default location */ - ((CARD16*)0)[(0x1a<<1)+1] = 0xf000; - ((CARD16*)0)[0x1a<<1] = 0xff6e; - /* int 05 default location */ - ((CARD16*)0)[(0x05<<1)+1] = 0xf000; - ((CARD16*)0)[0x05<<1] = 0xff54; - /* int 08 default location */ - ((CARD16*)0)[(0x8<<1)+1] = 0xf000; - ((CARD16*)0)[0x8<<1] = 0xfea5; - /* int 13 default location (fdd) */ - ((CARD16*)0)[(0x13<<1)+1] = 0xf000; - ((CARD16*)0)[0x13<<1] = 0xec59; - /* int 0E default location */ - ((CARD16*)0)[(0xe<<1)+1] = 0xf000; - ((CARD16*)0)[0xe<<1] = 0xef57; - /* int 17 default location */ - ((CARD16*)0)[(0x17<<1)+1] = 0xf000; - ((CARD16*)0)[0x17<<1] = 0xefd2; - /* fdd table default location (int 1e) */ - ((CARD16*)0)[(0x1e<<1)+1] = 0xf000; - ((CARD16*)0)[0x1e<<1] = 0xefc7; -} - -static int -setup_system_bios(hd_data_t *hd_data) -{ - char *date = "06/01/99"; - char *eisa_ident = "PCI/ISA"; - -#if MAP_SYS_BIOS - if (!copy_sys_bios(hd_data)) return 0; - return 1; -#endif -// memset((void *)0xF0000,0xf4,0xfff7); - - /* - * we trap the "industry standard entry points" to the BIOS - * and all other locations by filling them with "hlt" - * TODO: implement hlt-handler for these - */ - memset((void *)0xF0000,0xf4,0x10000); - - /* - * TODO: we should copy the fdd table (0xfec59-0xfec5b) - * the video parameter table (0xf0ac-0xf0fb) - * and the font tables (0xfa6e-0xfe6d) - * from the original bios here - */ - - /* set bios date */ - strcpy((char *)0xFFFF5,date); - /* set up eisa ident string */ - strcpy((char *)0xFFFD9,eisa_ident); - /* write system model id for IBM-AT */ - ((char *)0)[0xFFFFE] = 0xfc; - - return 1; -} - - -/* - * Check BIOS CRC. - * - * Return: - * 0: failed - * 1: ok - */ -int chksum(CARD8 *start) -{ - CARD16 size; - CARD8 val = 0; - int i; - - size = start[2] * 0x200; - for(i = 0; i < size; i++) val += start[i]; - - if(!val) return 1; - - log_err("vbe: BIOS chksum wrong\n"); - - return 0; -} - diff --git a/src/hwinfo/src/int10/int10.c b/src/hwinfo/src/int10/int10.c deleted file mode 100644 index 04c1507f46..0000000000 --- a/src/hwinfo/src/int10/int10.c +++ /dev/null @@ -1,299 +0,0 @@ -#include -#include -#include -#include -#include - -#include "vbios.h" - -#include "hd.h" -#include "hd_int.h" -#include "bios.h" - -static unsigned segofs2addr(unsigned char *segofs); -static unsigned get_data(unsigned char *buf, unsigned buf_size, unsigned addr); -static void read_vbe_info(hd_data_t *hd_data, vbe_info_t *vbe, unsigned char *vbeinfo, unsigned cpuemu); - -static hd_data_t *log_hd_data; -void log_err(char *format, ...) __attribute__ ((format (printf, 1, 2))); - -void get_vbe_info(hd_data_t *hd_data, vbe_info_t *vbe) -{ - int i; - unsigned char vbeinfo[0x200]; - int ax, bx, cx; - unsigned cpuemu = hd_data->flags.cpuemu; - - log_hd_data = hd_data; - - if(InitInt10(hd_data, hd_data->pci_config_type)) { - ADD2LOG("VBE: Could not init Int10\n"); - return; - } - - memset(vbeinfo, 0, sizeof vbeinfo); - strcpy(vbeinfo, "VBE2"); - - PROGRESS(4, 1, "vbe info"); - - if(hd_probe_feature(hd_data, pr_cpuemu_debug)) cpuemu |= 2; - -#ifdef __i386__ - if(hd_data->flags.cpuemu) -#endif - ADD2LOG("vm86: using CPU emulation\n"); - - ax = 0x4f00; bx = 0; cx = 0; - i = CallInt10(&ax, &bx, &cx, vbeinfo, sizeof vbeinfo, cpuemu) & 0xffff; - - if(i != 0x4f) { - ADD2LOG("VBE: Error (0x4f00): 0x%04x\n", i); - FreeInt10(); - return; - } - - if(hd_probe_feature(hd_data, pr_bios_fb)) { - PROGRESS(4, 2, "mode info"); - - read_vbe_info(hd_data, vbe, vbeinfo, cpuemu); - } - - if(hd_probe_feature(hd_data, pr_bios_ddc)) { - PROGRESS(4, 3, "ddc info"); - - memset(vbeinfo, 0, sizeof vbeinfo); - ax = 0x4f15; bx = 1; cx = 0; - i = CallInt10(&ax, &bx, &cx, vbeinfo, sizeof vbeinfo, cpuemu) & 0xffff; - - if(i != 0x4f) { - ADD2LOG("Error (0x4f15): 0x%04x\n", i); - } else { - vbe->ok = 1; - memcpy(vbe->ddc, vbeinfo, sizeof vbe->ddc); - - ADD2LOG("edid record:\n"); - for(i = 0; (unsigned) i < sizeof vbe->ddc; i += 0x10) { - ADD2LOG(" "); - hexdump(&hd_data->log, 1, 0x10, vbe->ddc + i); - ADD2LOG("\n"); - } - } - } - - if(hd_probe_feature(hd_data, pr_bios_mode)) { - PROGRESS(4, 4, "gfx mode"); - - ax = 0x4f03; bx = 0; cx = 0; - i = CallInt10(&ax, &bx, &cx, vbeinfo, sizeof vbeinfo, cpuemu) & 0xffff; - - if(i != 0x4f) { - ADD2LOG("Error (0x4f03): 0x%04x\n", i); - } else { - vbe->current_mode = bx; - vbe->ok = 1; - } - } - - FreeInt10(); -} - - -unsigned segofs2addr(unsigned char *segofs) -{ - return segofs[0] + (segofs[1] << 8) + (segofs[2] << 4)+ (segofs[3] << 12); -} - - -unsigned get_data(unsigned char *buf, unsigned buf_size, unsigned addr) -{ - unsigned bufferaddr = 0x7e00; - unsigned len; - - *buf = 0; - len = 0; - - if(addr >= bufferaddr && addr < bufferaddr + 0x200) { - len = bufferaddr + 0x200 - addr; - if(len >= buf_size) len = buf_size - 1; - memcpy(buf, addr + (char *) 0, len); - } - else if(addr >= 0x0c0000 && addr < 0x100000) { - len = 0x100000 - addr; - if(len >= buf_size) len = buf_size - 1; - memcpy(buf, addr + (char *) 0, len); - } - - buf[len] = 0; - - return len; -} - - -void read_vbe_info(hd_data_t *hd_data, vbe_info_t *vbe, unsigned char *v, unsigned cpuemu) -{ - unsigned char tmp[1024], s[64]; - unsigned i, l, u; - unsigned modelist[0x100]; - unsigned bpp, res_bpp, fb, clock; - vbe_mode_info_t *mi; - int ax, bx, cx; - - vbe->ok = 1; - - vbe->version = v[0x04] + (v[0x05] << 8); - vbe->oem_version = v[0x14] + (v[0x15] << 8); - vbe->memory = (v[0x12] + (v[0x13] << 8)) << 16; - - ADD2LOG( - "version = %u.%u, oem version = %u.%u\n", - vbe->version >> 8, vbe->version & 0xff, vbe->oem_version >> 8, vbe->oem_version & 0xff - ); - - ADD2LOG("memory = %uk\n", vbe->memory >> 10); - - l = get_data(tmp, sizeof tmp, u = segofs2addr(v + 0x06)); - vbe->oem_name = canon_str(tmp, l); - ADD2LOG("oem name [0x%05x] = \"%s\"\n", u, vbe->oem_name); - - l = get_data(tmp, sizeof tmp, u = segofs2addr(v + 0x16)); - vbe->vendor_name = canon_str(tmp, l); - ADD2LOG("vendor name [0x%05x] = \"%s\"\n", u, vbe->vendor_name); - - l = get_data(tmp, sizeof tmp, u = segofs2addr(v + 0x1a)); - vbe->product_name = canon_str(tmp, l); - ADD2LOG("product name [0x%05x] = \"%s\"\n", u, vbe->product_name); - - l = get_data(tmp, sizeof tmp, u = segofs2addr(v + 0x1e)); - vbe->product_revision = canon_str(tmp, l); - ADD2LOG("product revision [0x%05x] = \"%s\"\n", u, vbe->product_revision); - - l = get_data(tmp, sizeof tmp, u = segofs2addr(v + 0x0e)) >> 1; - - for(i = vbe->modes = 0; i < l && i < sizeof modelist / sizeof *modelist; i++) { - u = tmp[2 * i] + (tmp[2 * i + 1] << 8); - if(u != 0xffff) - modelist[vbe->modes++] = u; - else - break; - } - - ADD2LOG("%u video modes:\n", vbe->modes); - - vbe->mode = new_mem(vbe->modes * sizeof *vbe->mode); - - if(!vbe->mode) return; - - for(i = 0; i < vbe->modes; i++) { - - mi = vbe->mode + i; - - mi->number = modelist[i]; - - ax = 0x4f01; bx = 0; cx = modelist[i]; - l = CallInt10(&ax, &bx, &cx, tmp, sizeof tmp, cpuemu) & 0xffff; - - if(l != 0x4f) { - ADD2LOG("0x%04x: no mode info\n", modelist[i]); - continue; - } - - mi->attributes = tmp[0x00] + (tmp[0x01] << 8); - - mi->width = tmp[0x12] + (tmp[0x13] << 8); - mi->height = tmp[0x14] + (tmp[0x15] << 8); - mi->bytes_p_line = tmp[0x10] + (tmp[0x11] << 8); - - mi->win_A_start = (tmp[0x08] + (tmp[0x09] << 8)) << 4; - mi->win_B_start = (tmp[0x0a] + (tmp[0x0b] << 8)) << 4; - - mi->win_A_attr = tmp[0x02]; - mi->win_B_attr = tmp[0x03]; - - mi->win_gran = (tmp[0x04] + (tmp[0x05] << 8)) << 10; - mi->win_size = (tmp[0x06] + (tmp[0x07] << 8)) << 10; - - bpp = res_bpp = 0; - switch(tmp[0x1b]) { - case 0: - bpp = -1; - break; - - case 1: - bpp = 2; - break; - - case 2: - bpp = 1; - break; - - case 3: - bpp = 4; - break; - - case 4: - bpp = 8; - break; - - case 6: - bpp = tmp[0x19] - tmp[0x25]; - res_bpp = tmp[0x25]; - } - - fb = 0; - if(vbe->version >= 0x0200) { - mi->fb_start = tmp[0x28] + (tmp[0x29] << 8) + (tmp[0x2a] << 16) + (tmp[0x2b] << 24); - } - - clock = 0; - if(vbe->version >= 0x0300) { - mi->pixel_clock = tmp[0x3e] + (tmp[0x3f] << 8) + (tmp[0x40] << 16) + (tmp[0x41] << 24); - } - - mi->pixel_size = bpp; - - if(bpp == -1u) { - ADD2LOG(" 0x%04x[%02x]: %ux%u, text\n", mi->number, mi->attributes, mi->width, mi->height); - } - else { - if( - (mi->attributes & 1) && /* mode is supported */ - mi->fb_start - ) { - if(!vbe->fb_start) vbe->fb_start = mi->fb_start; - } - *s = 0; - if(res_bpp) sprintf(s, "+%u", res_bpp); - ADD2LOG( - " 0x%04x[%02x]: %ux%u+%u, %u%s bpp", - mi->number, mi->attributes, mi->width, mi->height, mi->bytes_p_line, mi->pixel_size, s - ); - - if(mi->pixel_clock) ADD2LOG(", max. %u MHz", mi->pixel_clock/1000000); - - if(mi->fb_start) ADD2LOG(", fb: 0x%08x", mi->fb_start); - - ADD2LOG(", %04x.%x", mi->win_A_start, mi->win_A_attr); - - if(mi->win_B_start || mi->win_B_attr) ADD2LOG("/%04x.%x", mi->win_B_start, mi->win_B_attr); - - ADD2LOG(": %uk", mi->win_size >> 10); - - if(mi->win_gran != mi->win_size) ADD2LOG("/%uk", mi->win_gran >> 10); - - ADD2LOG("\n"); - } - } - -} - -void log_err(char *format, ...) -{ - va_list args; - char buf[1024]; - - va_start(args, format); - vsnprintf(buf, sizeof buf, format, args); - str_printf(&log_hd_data->log, -2, "%s", buf); - va_end(args); -} - diff --git a/src/hwinfo/src/int10/pci.h b/src/hwinfo/src/int10/pci.h deleted file mode 100644 index 840f9d4aea..0000000000 --- a/src/hwinfo/src/int10/pci.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 1999 Egbert Eich - * - * 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 name of the authors not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. The authors makes no representations - * about the suitability of this software for any purpose. It is provided - * "as is" without express or implied warranty. - * - * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE AUTHORS 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. - */ -#include "v86bios.h" - -#ifndef V86_PCI_H -#define V86_PCI_H - -typedef union { - struct { - unsigned int zero:2; - unsigned int reg:6; - unsigned int func:3; - unsigned int dev:5; - unsigned int bus:8; - unsigned int reserved:7; - unsigned int enable:1; - } pci; - CARD32 l; -} PciSlot; - -typedef struct pciBusRec { - CARD8 primary; - CARD8 secondary; - CARD32 bctl; - PciSlot Slot; - struct pciBusRec *next; - struct pciBusRec *pBus; -} PciBusRec, *PciBusPtr; - -typedef struct pciStructRec { - CARD16 VendorID; - CARD16 DeviceID; - CARD8 Interface; - CARD8 BaseClass; - CARD8 SubClass; - CARD32 RomBase; - CARD32 bus; - CARD8 dev; - CARD8 func; - CARD32 cmd_st; - int active; - PciSlot Slot; - struct pciStructRec *next; - PciBusPtr pBus; -} PciStructRec , *PciStructPtr; - - -extern PciStructPtr CurrentPci; -extern PciStructPtr PciList; -extern PciStructPtr BootBios; -extern int pciMaxBus; - -extern CARD32 findPci(CARD16 slotBX); -extern CARD16 pciSlotBX(PciStructPtr); -PciStructPtr findPciDevice(CARD16 vendorID, CARD16 deviceID, char n); -PciStructPtr findPciClass(CARD8 intf, CARD8 subClass, CARD16 class, char n); - -extern CARD8 PciRead8(int offset, CARD32 slot); -extern CARD16 PciRead16(int offset, CARD32 slot); -extern CARD32 PciRead32(int offset, CARD32 slot); - -extern void PciWrite8(int offset,CARD8 byte, CARD32 slot); -extern void PciWrite16(int offset,CARD16 word, CARD32 slot); -extern void PciWrite32(int offset,CARD32 lg, CARD32 slot); - -extern void scan_pci(int); -extern void pciVideoDisable(void); -extern void pciVideoRestore(void); -extern void EnableCurrent(void); -extern int mapPciRom(PciStructPtr pciP); -extern int cfg1out(CARD16 addr, CARD32 val); -extern int cfg1in(CARD16 addr, CARD32 *val); -extern void list_pci(void); -extern PciStructPtr findPciByIDs(int bus, int dev, int func); - -#define PCI_MODE2_ENABLE_REG 0xCF8 -#define PCI_MODE2_FORWARD_REG 0xCFA -#define PCI_MODE1_ADDRESS_REG 0xCF8 -#define PCI_MODE1_DATA_REG 0xCFC -#if defined(__alpha__) || defined(__sparc__) -#define PCI_EN 0x00000000 -#else -#define PCI_EN 0x80000000 -#endif -#define MAX_DEV_PER_VENDOR_CFG1 32 -#define BRIDGE_CLASS(x) (x == 0x06) -#define BRIDGE_PCI_CLASS(x) (x == 0x04) -#define BRIDGE_HOST_CLASS(x) (x == 0x00) -#define PCI_CLASS_PREHISTORIC 0x00 -#define PCI_SUBCLASS_PREHISTORIC_VGA 0x01 -#define PCI_CLASS_DISPLAY 0x03 -#define PCI_SUBCLASS_DISPLAY_VGA 0x00 -#define PCI_SUBCLASS_DISPLAY_XGA 0x01 -#define PCI_SUBCLASS_DISPLAY_MISC 0x80 -#define VIDEO_CLASS(b,s) \ - (((b) == PCI_CLASS_PREHISTORIC && (s) == PCI_SUBCLASS_PREHISTORIC_VGA) || \ - ((b) == PCI_CLASS_DISPLAY && (s) == PCI_SUBCLASS_DISPLAY_VGA) ||\ - ((b) == PCI_CLASS_DISPLAY && (s) == PCI_SUBCLASS_DISPLAY_XGA) ||\ - ((b) == PCI_CLASS_DISPLAY && (s) == PCI_SUBCLASS_DISPLAY_MISC)) -#define PCI_MULTIFUNC_DEV 0x80 -#define MAX_PCI_DEVICES 64 -#define PCI_MAXBUS 16 -#define PCI_IS_MEM 0x00000001 -#define MAX_PCI_ROM_SIZE (1024 * 1024 * 16) - -#define IS_MEM32(x) ((x & 0x7) == 0 && x != 0) -#define IS_MEM64(x) ((x & 0x7) == 0x4) -#endif diff --git a/src/hwinfo/src/int10/v86bios.h b/src/hwinfo/src/int10/v86bios.h deleted file mode 100644 index c0c8acca6a..0000000000 --- a/src/hwinfo/src/int10/v86bios.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright 1999 Egbert Eich - * - * 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 name of the authors not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. The authors makes no representations - * about the suitability of this software for any purpose. It is provided - * "as is" without express or implied warranty. - * - * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE AUTHORS 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. - */ -#ifndef V86_BIOS_H -#define V86_BIOS_H - -#if defined (__i386__) || defined (__i486__) || defined (__i586__) || defined (__i686__) || defined (__k6__) -# ifndef __ia32__ -# define __ia32__ -# endif -#endif - -#include - -#define p_printf(f,a...) do {if (Config.PrintPort) lprintf(f,##a);} \ - while(0) -#define i_printf(f,a...) do {if (Config.PrintIrq) lprintf(f,##a);} \ - while(0) -#define P_printf(f,a...) do {if (Config.PrintPci) lprintf(f,##a);} \ - while(0) - -typedef unsigned char CARD8; -typedef unsigned short CARD16; -typedef unsigned int CARD32; -#if defined (__alpha__) || defined (__ia64__) -typedef unsigned long memType; -#else -typedef unsigned int memType; -#endif - -typedef int Bool; - -#define FALSE 0 -#define TRUE 1 - -struct config { - Bool PrintPort; - Bool IoStatistics; - Bool PrintIrq; - Bool PrintPci; - Bool ShowAllDev; - Bool PrintIp; - Bool SaveBios; - Bool Trace; - Bool ConfigActiveOnly; - Bool ConfigActiveDevice; - Bool MapSysBios; - Bool Resort; - Bool FixRom; - Bool NoConsole; - Bool BootOnly; - int Verbose; -}; - -struct pio { - CARD8 (*inb)(CARD16); - CARD16 (*inw)(CARD16); - CARD32 (*inl)(CARD16); - void (*outb)(CARD16,CARD8); - void (*outw)(CARD16,CARD16); - void (*outl)(CARD16,CARD32); -}; - -struct regs86 { - long ebx; - long ecx; - long edx; - long esi; - long edi; - long ebp; - long eax; - long eip; - long esp; - unsigned short cs; - unsigned short ss; - unsigned short es; - unsigned short ds; - unsigned short fs; - unsigned short gs; - long eflags; -}; - -typedef struct { - CARD32 ax; - CARD32 bx; - CARD32 cx; - CARD32 dx; - CARD32 cs; - CARD32 es; - CARD32 ds; - CARD32 si; - CARD32 di; -} i86biosRegs, *i86biosRegsPtr; - -typedef struct { - int fd; - int vt; -} console; - -typedef struct { - void* address; - CARD8 orgval; -} haltpoints; - -enum dev_type { NONE, ISA, PCI }; -struct device { - Bool booted; - enum dev_type type; - union { - int none; - struct pci { - int bus; - int dev; - int func; - } pci; - } loc; -}; - -extern struct device Device; - -#ifdef __alpha__ -unsigned long _bus_base(void); -extern void* vram_map; -extern int sparse_shift; -#endif - -extern struct pio P; -extern struct config Config; -#define IOPERM_BITS 1024 -extern int ioperm_list[IOPERM_BITS]; - -extern void setup_io(void); -extern void do_x86(unsigned long bios_start,i86biosRegsPtr regs, int cpuemu); -extern int run_bios_int(int num, struct regs86 *regs); -extern CARD32 getIntVect(int num); -CARD32 getIP(void); - -extern void call_boot(struct device *dev); -extern void runINT(int num,i86biosRegsPtr Regs); -extern void add_hlt(unsigned long addr); -extern void del_hlt(int addr); -extern void list_hlt(); - -extern int port_rep_inb(CARD16 port, CARD8 *base, int d_f, CARD32 count); -extern int port_rep_inw(CARD16 port, CARD16 *base, int d_f, CARD32 count); -extern int port_rep_inl(CARD16 port, CARD32 *base, int d_f, CARD32 count); -extern int port_rep_outb(CARD16 port, CARD8 *base, int d_f, CARD32 count); -extern int port_rep_outw(CARD16 port, CARD16 *base, int d_f, CARD32 count); -extern int port_rep_outl(CARD16 port, CARD32 *base, int d_f, CARD32 count); -extern CARD8 p_inb(CARD16 port); -extern CARD16 p_inw(CARD16 port); -extern CARD32 p_inl(CARD16 port); -extern void p_outb(CARD16 port, CARD8 val); -extern void p_outw(CARD16 port, CARD16 val); -extern void p_outl(CARD16 port, CARD32 val); -#ifdef __alpha__ -extern CARD8 a_inb(CARD16 port); -extern CARD16 a_inw(CARD16 port); -extern void a_outb(CARD16 port, CARD8 val); -extern void a_outw(CARD16 port, CARD16 val); -#endif -#ifdef __alpha__ -CARD8 mem_rb(CARD32 addr); -CARD16 mem_rw(CARD32 addr); -CARD32 mem_rl(CARD32 addr); -void mem_wb(CARD32 addr, CARD8 val); -void mem_ww(CARD32 addr, CARD16 val); -void mem_wl(CARD32 addr, CARD32 val); -#endif -extern void io_statistics(void); -extern void clear_stat(void); -extern int int_handler(int num, struct regs86 *regs); - -extern console open_console(void); -extern void close_console(console); - -extern void dprint(unsigned long start, unsigned long size); - -extern Bool logging; -extern Bool nostdout; -extern char* logfile; -extern void logon(void* ptr); -extern void logoff(); -extern void lprintf(const char *f, ...); - -#define MEM_FILE "/dev/mem" -#define DEFAULT_V_BIOS 0xc0000 -#ifndef V_BIOS -#define V_BIOS DEFAULT_V_BIOS -#endif - -#ifdef __alpha__ -#define NEED_PCI_IO -#endif - -#endif - diff --git a/src/hwinfo/src/int10/vbios.h b/src/hwinfo/src/int10/vbios.h deleted file mode 100644 index edcb715f91..0000000000 --- a/src/hwinfo/src/int10/vbios.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "hd.h" - -int InitInt10(hd_data_t *, int); -int CallInt10(int *ax, int *bx, int *cx, unsigned char *buf, int len, int cpuemu); -int CallInt13(int *ax, int *bx, int *cx, int *dx, unsigned char *buf, int len, int cpuemu); -void FreeInt10(void); diff --git a/src/hwinfo/src/int10/vm86_struct.h b/src/hwinfo/src/int10/vm86_struct.h deleted file mode 100644 index 772e6cab23..0000000000 --- a/src/hwinfo/src/int10/vm86_struct.h +++ /dev/null @@ -1,135 +0,0 @@ -#ifndef _LINUX_VM86_H -#define _LINUX_VM86_H - -/* - * I'm guessing at the VIF/VIP flag usage, but hope that this is how - * the Pentium uses them. Linux will return from vm86 mode when both - * VIF and VIP is set. - * - * On a Pentium, we could probably optimize the virtual flags directly - * in the eflags register instead of doing it "by hand" in vflags... - * - * Linus - */ - -#define TF_MASK 0x00000100 -#define IF_MASK 0x00000200 -#define IOPL_MASK 0x00003000 -#define NT_MASK 0x00004000 -#define VM_MASK 0x00020000 -#define AC_MASK 0x00040000 -#define VIF_MASK 0x00080000 /* virtual interrupt flag */ -#define VIP_MASK 0x00100000 /* virtual interrupt pending */ -#define ID_MASK 0x00200000 - -#define BIOSSEG 0x0f000 - -#define CPU_086 0 -#define CPU_186 1 -#define CPU_286 2 -#define CPU_386 3 -#define CPU_486 4 -#define CPU_586 5 - -/* - * Return values for the 'vm86()' system call - */ -#define VM86_TYPE(retval) ((retval) & 0xff) -#define VM86_ARG(retval) ((retval) >> 8) - -#define VM86_SIGNAL 0 /* return due to signal */ -#define VM86_UNKNOWN 1 /* unhandled GP fault - IO-instruction or similar */ -#define VM86_INTx 2 /* int3/int x instruction (ARG = x) */ -#define VM86_STI 3 /* sti/popf/iret instruction enabled virtual interrupts */ - -/* - * Additional return values when invoking new vm86() - */ -#define VM86_PICRETURN 4 /* return due to pending PIC request */ -#define VM86_TRAP 6 /* return due to DOS-debugger request */ - -/* - * function codes when invoking new vm86() - */ -#define VM86_PLUS_INSTALL_CHECK 0 -#define VM86_ENTER 1 -#define VM86_ENTER_NO_BYPASS 2 -#define VM86_REQUEST_IRQ 3 -#define VM86_FREE_IRQ 4 -#define VM86_GET_IRQ_BITS 5 -#define VM86_GET_AND_RESET_IRQ 6 - -/* - * This is the stack-layout seen by the user space program when we have - * done a translation of "SAVE_ALL" from vm86 mode. The real kernel layout - * is 'kernel_vm86_regs' (see below). - */ - -struct vm86_regs { -/* - * normal regs, with special meaning for the segment descriptors.. - */ - long ebx; - long ecx; - long edx; - long esi; - long edi; - long ebp; - long eax; - long __null_ds; - long __null_es; - long __null_fs; - long __null_gs; - long orig_eax; - long eip; - unsigned short cs, __csh; - long eflags; - long esp; - unsigned short ss, __ssh; -/* - * these are specific to v86 mode: - */ - unsigned short es, __esh; - unsigned short ds, __dsh; - unsigned short fs, __fsh; - unsigned short gs, __gsh; -}; - -struct revectored_struct { - unsigned long __map[8]; /* 256 bits */ -}; - -struct vm86_struct { - struct vm86_regs regs; - unsigned long flags; - unsigned long screen_bitmap; - unsigned long cpu_type; - struct revectored_struct int_revectored; - struct revectored_struct int21_revectored; -}; - -/* - * flags masks - */ -#define VM86_SCREEN_BITMAP 0x0001 - -struct vm86plus_info_struct { - unsigned long force_return_for_pic:1; - unsigned long vm86dbg_active:1; /* for debugger */ - unsigned long vm86dbg_TFpendig:1; /* for debugger */ - unsigned long unused:28; - unsigned long is_vm86pus:1; /* for vm86 internal use */ - unsigned char vm86dbg_intxxtab[32]; /* for debugger */ -}; - -struct vm86plus_struct { - struct vm86_regs regs; - unsigned long flags; - unsigned long screen_bitmap; - unsigned long cpu_type; - struct revectored_struct int_revectored; - struct revectored_struct int21_revectored; - struct vm86plus_info_struct vm86plus; -}; - -#endif diff --git a/src/hwinfo/src/isdn/Makefile b/src/hwinfo/src/isdn/Makefile deleted file mode 100644 index 5e52e6b505..0000000000 --- a/src/hwinfo/src/isdn/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -TOPDIR = ../.. -TARGETS = $(LIBHD_D) -SUBDIRS = cdb - -include $(TOPDIR)/Makefile.common - -$(LIBHD_D): $(OBJS) - ar r $(LIBHD) $? - diff --git a/src/hwinfo/src/isdn/cdb/ISDN.axp.txt b/src/hwinfo/src/isdn/cdb/ISDN.axp.txt deleted file mode 100644 index 4a66c7f03e..0000000000 --- a/src/hwinfo/src/isdn/cdb/ISDN.axp.txt +++ /dev/null @@ -1,150 +0,0 @@ -# -# CDB data export for subclass: ISDN Single Basic Rate -# Generated at : Sat Aug 30 17:22:29 2003 -# -# Exported combinations: -# arch=axp dist=Stable lang=de_DE vario=HiSax driver -# arch=axp dist=Stable lang=de_DE vario=I4L driver -# arch=axp dist=Stable lang=de_DE vario=CAPI 2.0 driver -# -# Author: dhess@suse.de (13.02.2003) -# Author: didge@suse.de (04.08.2003) -# -# -# Export format: |Vendorname|Productname|Subclass|Bus|Variation|topic=value|topic=value|...|Variation|topic=value|topic=value|...| -# - - -|vendor=Billion|device=B009|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb009|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x50023|drv_subtyp=5|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=ITH|device=ith mic|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x200|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=7|SMP=Yes|drv_id=0x11|drv_subtyp=0|drv_typ=17|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=High Soft Tech|device=Saphir|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x250|IO=0x270|IO=0x290|IO=0x2b0|IO=0x2d0|IO=0x350|IO=0x370|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=5|SMP=Yes|drv_id=0x1f|drv_subtyp=0|drv_typ=31|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=B00C|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb00c|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x80023|drv_subtyp=8|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Cologne Chip AG|device=HFCS+ based card|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x0000|device_id=0x0000|vario=HiSax driver|SMP=Yes|drv_id=0x10025|drv_subtyp=1|drv_typ=37|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Telekom AG|device=A1T|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x0871|device_id=0xffa1|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xd0023|drv_subtyp=13|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sagem|device=Niccy PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1267|device_id=0x1016|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x20018|drv_subtyp=2|drv_typ=24|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Cologne Chip AG|device=HFC 2BDS0|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0x2bd0|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x110023|drv_subtyp=17|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Formula-n|device=enter:now|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0x0055|subdevice_id=0x0002|vario=HiSax driver|SMP=Yes|drv_id=0x10029|drv_subtyp=1|drv_typ=41|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|short_description=under development|supported=full| -|vendor=ICN|device=2B|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=I4L driver|IO=0x300|IO=0x308|IO=0x310|IO=0x318|IO=0x320|IO=0x328|IO=0x330|IO=0x338|IO=0x340|IO=0x348|IO=0x350|IO=0x358|IO=0x360|IO=0x368|MEMBASE=0xc0000|MEMBASE=0xc2000|MEMBASE=0xc4000|MEMBASE=0xc6000|MEMBASE=0xc8000|MEMBASE=0xca000|MEMBASE=0xcc000|MEMBASE=0xce000|MEMBASE=0xd0000|MEMBASE=0xd2000|MEMBASE=0xd4000|MEMBASE=0xd6000|MEMBASE=0xd8000|MEMBASE=0xda000|MEMBASE=0xdc000|MEMBASE=0xde000|SMP=Yes|drv_id=0x1f5e|drv_subtyp=0|drv_typ=8030|firmware=pc-%{PROTO}.bin|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=icn|need_packages=i4l-base|supported=full| -|vendor=TigerJet|device=NetJet PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0x00ff|subdevice_id=0x000f|vario=HiSax driver|SMP=Yes|drv_id=0x10014|drv_subtyp=1|drv_typ=20|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Scitel|device=Quadro|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x10b5|device_id=0x9050|subvendor_id=0x0871|subdevice_id=0xffa8|vario=HiSax driver|SMP=Yes|drv_id=0x21|drv_subtyp=0|drv_typ=33|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=ML PCC-16|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x160|IO=0x170|IO=0x260|IO=0x360|IRQ=10|IRQ=11|IRQ=15|IRQ=3|IRQ=5|IRQ=9|SMP=Yes|drv_id=0x30006|drv_subtyp=3|drv_typ=6|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=16.3c v.2.1|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x2750|device_id=0x2026|vario=HiSax driver|SMP=Yes|drv_id=0x25|drv_subtyp=0|drv_typ=37|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sedlbauer AG|device=Speed Win|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x274c|device_id=0x0100|vario=HiSax driver|SMP=Yes|drv_id=0x1000f|drv_subtyp=1|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=S0Box|device_class=ISDN Single Basic Rate|bus_type=Parallel|vario=HiSax driver|IO=0x278|IO=0x378|IO=0x3bc|IRQ=5|IRQ=7|SMP=Yes|drv_id=0x19|drv_subtyp=0|drv_typ=25|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Eicon Networks|device=Diva 2.0U PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe004|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xc000b|drv_subtyp=12|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=CREATIX Creative Information eXchange|device=16.3 PNP|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x980e|device_id=0x0000|vario=HiSax driver|SMP=Yes|drv_id=0x10004|drv_subtyp=1|drv_typ=4|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=iSTAR PnP|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x2750|device_id=0x1074|vario=HiSax driver|SMP=Yes|drv_id=0x1000e|drv_subtyp=1|drv_typ=14|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Siemens|device=ISURF|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x254d|device_id=0x1000|vario=HiSax driver|SMP=Yes|drv_id=0x1d|drv_subtyp=0|drv_typ=29|feature=Fax|firmware=ISAR.BIN|interface=FCLASS1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Auerswald|device=Comfort 1200 System Telephone|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x09bf|device_id=0x00f2|vario=HiSax driver|SMP=Yes|drv_id=0x3002a|drv_subtyp=3|drv_typ=42|interface=I4L|line_cnt=1|line_protocol=DSS1|module=auerswald|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AsKey|device=PCI (CCD HFC)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0x2bd0|subvendor_id=0x144f|subdevice_id=0x1704|vario=HiSax driver|SMP=Yes|drv_id=0xc0023|drv_subtyp=12|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=B1 PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x21f41|drv_subtyp=2|drv_typ=8001|feature=Fax|firmware=b1-%{PROTO}.t4|interface=CAPI20|interface=CAPI20 Fax|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=b1pcmcia|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Billion|device=BIPAC-D1|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x2c09|device_id=0x0100|vario=HiSax driver|SMP=Yes|drv_id=0x2001e|drv_subtyp=2|drv_typ=30|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Auerswald|device=COMpact 2104 USB|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x09bf|device_id=0x00c0|vario=HiSax driver|SMP=Yes|drv_id=0x2002a|drv_subtyp=2|drv_typ=42|interface=I4L|line_cnt=1|line_protocol=DSS1|module=auerswald|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Gazel|device=R685|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x10b5|device_id=0x1030|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x22|drv_subtyp=0|drv_typ=34|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=ASUSCOM|device=PCI (CCD HFC)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1043|device_id=0x0675|subvendor_id=0x0675|subdevice_id=0x1704|vario=HiSax driver|SMP=Yes|drv_id=0xa0023|drv_subtyp=10|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=ASUSCOM|device=PCI (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x1043|subdevice_id=0x1702|vario=HiSax driver|SMP=Yes|drv_id=0x24|drv_subtyp=0|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=16.3 PNP|device_class=ISDN Single Basic Rate|bus_type=ISA PnP|vendor_id=0x2750|device_id=0x1021|vario=HiSax driver|SMP=Yes|drv_id=0x4|drv_subtyp=0|drv_typ=4|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sedlbauer AG|device=Speed Star|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x20016|drv_subtyp=2|drv_typ=22|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!X seriell|device_class=ISDN Single Basic Rate|bus_type=Serial|vario=HiSax driver|line_cnt=1|supported=not| -|vendor=Elsa AG|device=ML PCF-Pro|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x160|IO=0x170|IO=0x260|IO=0x360|IRQ=10|IRQ=11|IRQ=15|IRQ=3|IRQ=5|IRQ=9|SMP=Yes|drv_id=0x50006|drv_subtyp=5|drv_typ=6|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Digi|device=DataFire Micro V IOM2 (Europe)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x114f|device_id=0x0070|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x120023|drv_subtyp=18|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Quickstep 3000|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x9315|device_id=0x3401|vario=HiSax driver|SMP=Yes|drv_id=0x80007|drv_subtyp=8|drv_typ=7|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Genius|device=Speed Surfer|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x252f|device_id=0x0100|vario=HiSax driver|SMP=Yes|drv_id=0x3001e|drv_subtyp=3|drv_typ=30|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Digi|device=DataFire Micro V (North America)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x114f|device_id=0x0073|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x150023|drv_subtyp=21|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Berkom|device=A4T|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x11de|device_id=0x6120|subvendor_id=0x0871|subdevice_id=0xffa4|vario=HiSax driver|SMP=Yes|drv_id=0x20|drv_subtyp=0|drv_typ=32|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Siemens|device=ISurf 2|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x254d|device_id=0x2000|vario=HiSax driver|SMP=Yes|drv_id=0x3000c|drv_subtyp=3|drv_typ=12|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Digi|device=DataFire Micro V (Europe)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x114f|device_id=0x0071|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x130023|drv_subtyp=19|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=U.S.Robotics|device=Sportster|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x268|IRQ=10|IRQ=11|IRQ=12|IRQ=14|IRQ=15|IRQ=5|IRQ=7|SMP=Yes|drv_id=0x10|drv_subtyp=0|drv_typ=16|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Zolltrix|device=2BDS0|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x15b0|device_id=0x2bd0|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x100023|drv_subtyp=16|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Eicon Networks|device=Diva Piccola|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x891c|device_id=0x5100|vario=HiSax driver|SMP=Yes|drv_id=0xb000b|drv_subtyp=11|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Motorola|device=MC145575|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1051|device_id=0x0100|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xf0023|drv_subtyp=15|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card PnP|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0xcd06|device_id=0x0009|vario=HiSax driver|SMP=Yes|drv_id=0x2001b|drv_subtyp=2|drv_typ=27|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|short_description=OpenSource without Fax G3|supported=full| -|vendor=Teles AG|device=16.0 AB|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0xd80|IO=0xe80|IO=0xf80|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=9|MEMBASE=0xc0000|MEMBASE=0xc2000|MEMBASE=0xc4000|MEMBASE=0xc6000|MEMBASE=0xc8000|MEMBASE=0xca000|MEMBASE=0xcc000|MEMBASE=0xce000|MEMBASE=0xd0000|MEMBASE=0xd2000|MEMBASE=0xd4000|MEMBASE=0xd6000|MEMBASE=0xd8000|MEMBASE=0xda000|MEMBASE=0xdc000|MEMBASE=0xde000|SMP=Yes|drv_id=0x10001|drv_subtyp=1|drv_typ=1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=PCMCIA IPAC|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0xb000a|drv_subtyp=11|drv_typ=10|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=B006|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb006|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x20023|drv_subtyp=2|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x1a|drv_subtyp=0|drv_typ=26|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|short_description=OpenSource without Fax G3|supported=full| -|vendor=Winbond|device=W6692 card|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x60024|drv_subtyp=6|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=ASUSCOM|device=ISA IPAC|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x7506|device_id=0x9016|vario=HiSax driver|SMP=Yes|drv_id=0x2000c|drv_subtyp=2|drv_typ=12|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=A1 PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x1001a|drv_subtyp=1|drv_typ=26|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|short_description=OpenSource without Fax G3|supported=full| -|vendor=AsKey|device=PCI + Voice (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x144f|subdevice_id=0x1703|vario=HiSax driver|SMP=Yes|drv_id=0x30024|drv_subtyp=3|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Eicon Networks|device=Diva 2.0 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe002|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x2000b|drv_subtyp=2|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sedlbauer AG|device=Speed PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0053|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x6000f|drv_subtyp=6|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=ITK|device=ISDN PnP|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x8b26|device_id=0x2900|vario=HiSax driver|SMP=Yes|drv_id=0x20009|drv_subtyp=2|drv_typ=9|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Dynalink|device=PCI (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1043|device_id=0x0675|subvendor_id=0x0675|subdevice_id=0x1702|vario=HiSax driver|SMP=Yes|drv_id=0x40024|drv_subtyp=4|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=ML PC|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x160|IO=0x170|IO=0x260|IO=0x360|IRQ=3|IRQ=5|IRQ=7|IRQ=9|SMP=Yes|drv_id=0x10006|drv_subtyp=1|drv_typ=6|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Eicon Networks|device=Diva 2.01 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe005|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x4000b|drv_subtyp=4|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=U.S.Robotics|device=ISDN PCI Card TA|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x16ec|subdevice_id=0x3409|vario=HiSax driver|SMP=Yes|drv_id=0x70024|drv_subtyp=7|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sagem|device=Niccy ISA|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x814c|device_id=0x5001|vario=HiSax driver|SMP=Yes|drv_id=0x10018|drv_subtyp=1|drv_typ=24|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=ML PCF|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x160|IO=0x170|IO=0x260|IO=0x360|IRQ=10|IRQ=11|IRQ=15|IRQ=3|IRQ=5|IRQ=9|SMP=Yes|drv_id=0x40006|drv_subtyp=4|drv_typ=6|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=16.3 AB|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x180|IO=0x280|IO=0x380|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=5|IRQ=9|SMP=Yes|drv_id=0x10003|drv_subtyp=1|drv_typ=3|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Dynalink|device=6692 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x0675|device_id=0x1702|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x50024|drv_subtyp=5|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=ITK|device=ISDN 3.0|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x8b26|device_id=0x2500|vario=HiSax driver|SMP=Yes|drv_id=0x10009|drv_subtyp=1|drv_typ=9|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x11de|device_id=0x6120|subvendor_id=0x0000|subdevice_id=0x0000|vario=HiSax driver|SMP=Yes|drv_id=0x15|drv_subtyp=0|drv_typ=21|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sedlbauer AG|device=Speed Win2 PC104|device_class=ISDN Single Basic Rate|bus_type=PC104|vendor_id=0x0000|device_id=0x0000|subvendor_id=0x0000|subdevice_id=0x0000|vario=HiSax driver|SMP=Yes|drv_id=0x4000f|drv_subtyp=4|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=B1 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x0700|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x11f41|drv_subtyp=1|drv_typ=8001|feature=Fax|firmware=b1-%{PROTO}.t4|interface=CAPI20|interface=CAPI20 Fax|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=b1pci|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Sedlbauer AG|device=Speed Star2|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x50016|drv_subtyp=5|drv_typ=22|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Telekom AG|device=Teledat USB 2a/b|device_class=ISDN Single Basic Rate|bus_type=USB|vario=HiSax driver|line_cnt=1|supported=not| -|vendor=AsKey|device=PCI (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x144f|subdevice_id=0x1702|vario=HiSax driver|SMP=Yes|drv_id=0x10024|drv_subtyp=1|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=High Soft Tech|device=saphir III|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0052|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x9000f|drv_subtyp=9|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Digi|device=DataFire Micro V IOM2 (North America)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x114f|device_id=0x0072|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x140023|drv_subtyp=20|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Dynalink|device=PCI (CCD HFC)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0x2bd0|subvendor_id=0x1043|subdevice_id=0x1704|vario=HiSax driver|SMP=Yes|drv_id=0xb0023|drv_subtyp=11|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Quickstep 1000|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x9315|device_id=0x3301|vario=HiSax driver|SMP=Yes|drv_id=0x70007|drv_subtyp=7|drv_typ=7|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=ITK|device=ix1-micro Rev.2|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x390|IO=0x398|IO=0x3a0|IO=0x3a8|IRQ=10|IRQ=11|IRQ=5|IRQ=9|SMP=Yes|drv_id=0x9|drv_subtyp=0|drv_typ=9|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=16.3c|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x2750|device_id=0x1026|vario=HiSax driver|SMP=Yes|drv_id=0xe|drv_subtyp=0|drv_typ=14|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=SGS Thomson Microelectronics|device=ST5481 USB Adapter|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x0483|device_id=0x4810|vario=HiSax driver|SMP=Yes|drv_id=0x103e9|drv_subtyp=1|drv_typ=1001|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax_st5481|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x0a00|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|alternative_name=Telekom AG,Teledat 150|drv_id=0x1001b|drv_subtyp=1|drv_typ=27|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|short_description=OpenSource without Fax G3|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=A1|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x200|IO=0x240|IO=0x300|IO=0x340|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=7|IRQ=9|SMP=Yes|drv_id=0x10005|drv_subtyp=1|drv_typ=5|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|short_description=OpenSource without Fax G3|supported=full| -|vendor=Elsa AG|device=PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x6000a|drv_subtyp=6|drv_typ=10|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Iscas|device=TE320|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x8615|device_id=0x0000|vario=HiSax driver|SMP=Yes|drv_id=0x4000c|drv_subtyp=4|drv_typ=12|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Eicon Networks|device=Diva 2.02 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe00b|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xd000b|drv_subtyp=13|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=ASUSCOM|device=ISA ISAC|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x7506|device_id=0x8816|vario=HiSax driver|SMP=Yes|drv_id=0x1000c|drv_subtyp=1|drv_typ=12|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sedlbauer AG|device=Speed Fax+|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x274c|device_id=0x0200|vario=HiSax driver|SMP=Yes|drv_id=0x3001c|drv_subtyp=3|drv_typ=28|feature=Fax|firmware=ISAR.BIN|interface=FCLASS1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=B008|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb008|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x40023|drv_subtyp=4|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=B00B|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb00b|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x70023|drv_subtyp=7|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=TigerJet|device=300 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x14|drv_subtyp=0|drv_typ=20|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Seyon|device=B100|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb100|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x90023|drv_subtyp=9|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=TigerJet|device=NetSpider-U PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x26|drv_subtyp=0|drv_typ=38|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sedlbauer AG|device=Speed Fax+ PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0054|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x8001c|drv_subtyp=8|drv_typ=28|feature=Fax|firmware=ISAR.BIN|interface=FCLASS1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Acer|device=P10|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0xd805|device_id=0x1411|vario=HiSax driver|SMP=Yes|drv_id=0x1e|drv_subtyp=0|drv_typ=30|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Quickstep 3000 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1048|device_id=0x3000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xa0012|drv_subtyp=10|drv_typ=18|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=TeleInt|device=SA1|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x300|IRQ=10|IRQ=11|IRQ=3|IRQ=4|IRQ=5|IRQ=7|SMP=Yes|drv_id=0xd|drv_subtyp=0|drv_typ=13|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=B000|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x10023|drv_subtyp=1|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=8.0|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IRQ=3|IRQ=4|IRQ=5|IRQ=6|IRQ=7|IRQ=9|MEMBASE=0xc0000|MEMBASE=0xc2000|MEMBASE=0xc4000|MEMBASE=0xc6000|MEMBASE=0xc8000|MEMBASE=0xca000|MEMBASE=0xcc000|MEMBASE=0xce000|MEMBASE=0xd0000|MEMBASE=0xd2000|MEMBASE=0xd4000|MEMBASE=0xd6000|MEMBASE=0xd8000|MEMBASE=0xda000|MEMBASE=0xdc000|MEMBASE=0xde000|SMP=Yes|drv_id=0x2|drv_subtyp=0|drv_typ=2|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Microlink ISDN USB|device_class=ISDN Single Basic Rate|bus_type=USB|vario=HiSax driver|line_cnt=1|supported=not| -|vendor=Teles AG|device=16.0|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0xd80|IO=0xe80|IO=0xf80|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=9|MEMBASE=0xc0000|MEMBASE=0xc2000|MEMBASE=0xc4000|MEMBASE=0xc6000|MEMBASE=0xc8000|MEMBASE=0xca000|MEMBASE=0xcc000|MEMBASE=0xce000|MEMBASE=0xd0000|MEMBASE=0xd2000|MEMBASE=0xd4000|MEMBASE=0xd6000|MEMBASE=0xd8000|MEMBASE=0xda000|MEMBASE=0xdc000|MEMBASE=0xde000|SMP=Yes|drv_id=0x1|drv_subtyp=0|drv_typ=1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Auerswald|device=Comfort 2000 System Telephone|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x09bf|device_id=0x00f1|vario=HiSax driver|SMP=Yes|drv_id=0x4002a|drv_subtyp=4|drv_typ=42|interface=I4L|line_cnt=1|line_protocol=DSS1|module=auerswald|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Sedlbauer AG|device=Speed Card|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x270|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=7|SMP=Yes|alternative_name=Telekom AG,Teledat 100 ISA|drv_id=0xf|drv_subtyp=0|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=B007|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb007|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x30023|drv_subtyp=3|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Quickstep 1000 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1048|device_id=0x1000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x90012|drv_subtyp=9|drv_typ=18|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=16.3|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x180|IO=0x280|IO=0x380|IRQ=10|IRQ=12|IRQ=15|IRQ=5|IRQ=9|SMP=Yes|drv_id=0x3|drv_subtyp=0|drv_typ=3|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Microlink PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1048|device_id=0x1000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xc0012|drv_subtyp=12|drv_typ=18|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Gazel|device=Djinn Itoo|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x10b5|device_id=0x1151|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x20022|drv_subtyp=2|drv_typ=34|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Pyramid|device=Speed Fax+ PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0051|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x7001c|drv_subtyp=7|drv_typ=28|feature=Fax|firmware=ISAR.BIN|interface=FCLASS1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card PCI v2.0|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x0e00|subvendor_id=0x1244|subdevice_id=0x0e00|vario=HiSax driver|SMP=Yes|alternative_name=Telekom AG,Teledat 150 v2.0|drv_id=0x3e8|drv_subtyp=0|drv_typ=1000|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax_fcpcipnp|need_packages=i4l-base|short_description=OpenSource without Fax G3|supported=full| -|vendor=Compaq Computer Corporation|device=ISDN S0 ISA|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x110e|device_id=0x0210|vario=HiSax driver|SMP=Yes|drv_id=0x13|drv_subtyp=0|drv_typ=19|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=BIPAC-D|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x2c09|device_id=0x0200|vario=HiSax driver|SMP=Yes|drv_id=0x1001e|drv_subtyp=1|drv_typ=30|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Auerswald|device=COMpact 2206 USB|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x09bf|device_id=0x00db|vario=HiSax driver|SMP=Yes|drv_id=0x1002a|drv_subtyp=1|drv_typ=42|interface=I4L|line_cnt=1|line_protocol=DSS1|module=auerswald|supported=full| -|vendor=ASUSCOM|device=PCI + Voice (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x1043|subdevice_id=0x1703|vario=HiSax driver|SMP=Yes|drv_id=0x20024|drv_subtyp=2|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x8|drv_subtyp=0|drv_typ=8|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Gazel|device=R753|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x10b5|device_id=0x1152|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x10022|drv_subtyp=1|drv_typ=34|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=ML PCC-8|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x160|IO=0x170|IO=0x260|IO=0x360|IRQ=3|IRQ=5|IRQ=7|IRQ=9|SMP=Yes|drv_id=0x20006|drv_subtyp=2|drv_typ=6|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=Tornado Tipac|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0xcd4c|device_id=0x0100|vario=HiSax driver|SMP=Yes|drv_id=0x4001e|drv_subtyp=4|drv_typ=30|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Abocom/Magitek|device=2BD1|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x13d1|device_id=0x2bd1|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x160023|drv_subtyp=22|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=B00A|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb00a|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x60023|drv_subtyp=6|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Eicon Networks|device=Diva 2.01 ISA|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x891c|device_id=0xa100|vario=HiSax driver|SMP=Yes|drv_id=0x3000b|drv_subtyp=3|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=PCI v2|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0x00a7|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x20014|drv_subtyp=2|drv_typ=20|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Telekom AG|device=Concept|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x0871|device_id=0xffa2|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xe0023|drv_subtyp=14|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card Classic|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x200|IO=0x240|IO=0x300|IO=0x340|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=7|IRQ=9|SMP=Yes|drv_id=0x5|drv_subtyp=0|drv_typ=5|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|short_description=OpenSource without Fax G3|supported=full| -|vendor=Eicon Networks|device=Diva 2.0 ISA|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x891c|device_id=0x7100|vario=HiSax driver|SMP=Yes|drv_id=0x1000b|drv_subtyp=1|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=C4|device_class=ISDN Multiple Basic Rate|bus_type=PCI|vendor_id=0x1011|device_id=0x1065|subvendor_id=0x1244|subdevice_id=0x0800|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x31f41|drv_subtyp=3|drv_typ=8001|feature=Fax|firmware=c4.bin|interface=CAPI20|interface=CAPI20 Fax|interface=I4L|line_cnt=4|line_protocol=DSS1|line_protocol=LEASED|module=c4|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=ICN|device=4B|device_class=ISDN Multiple Basic Rate|bus_type=ISA|vario=I4L driver|IO=0x300|IO=0x308|IO=0x310|IO=0x318|IO=0x320|IO=0x328|IO=0x330|IO=0x338|IO=0x340|IO=0x348|IO=0x350|IO=0x358|IO=0x360|IO=0x368|MEMBASE=0xc0000|MEMBASE=0xc2000|MEMBASE=0xc4000|MEMBASE=0xc6000|MEMBASE=0xc8000|MEMBASE=0xca000|MEMBASE=0xcc000|MEMBASE=0xce000|MEMBASE=0xd0000|MEMBASE=0xd2000|MEMBASE=0xd4000|MEMBASE=0xd6000|MEMBASE=0xd8000|MEMBASE=0xda000|MEMBASE=0xdc000|MEMBASE=0xde000|SMP=Yes|drv_id=0x11f5e|drv_subtyp=1|drv_typ=8030|firmware=pc-%{PROTO}.bin|interface=I4L|line_cnt=2|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=icn|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=C2|device_class=ISDN Multiple Basic Rate|bus_type=PCI|vendor_id=0x1011|device_id=0x1065|subvendor_id=0x1244|subdevice_id=0x1100|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x61f41|drv_subtyp=6|drv_typ=8001|firmware=c2.bin|interface=CAPI20|interface=CAPI20 Fax|interface=I4L|line_cnt=2|line_protocol=DSS1|line_protocol=LEASED|module=c4|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=T1 PCI|device_class=ISDN Primary Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x1200|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x21f45|drv_subtyp=2|drv_typ=8005|firmware=t1-{PROF}.t4|interface=CAPI20|interface=CAPI20 Fax|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|module=t1pci|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|special=B version|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=BlueFRITZ!USB|device_class=Others|bus_type=USB|vendor_id=0x057c|device_id=0x2200|vario=CAPI 2.0 driver|Interface=CAPI20|SMP=Yes|drv_id=0x11f46|drv_subtyp=1|drv_typ=8006|feature=BLUETOOTH|feature=Basic Rate|firmware=bfubase.frm|line_cnt=1|line_protocol=DSS1|module=bfusb|need_packages=bluez-firmware|need_packages=bluez-libs|need_packages=bluez-utils|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box SL|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3701|vario=other|SMP=yes|drv_id=0xffff0001|drv_subtyp=1|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3702|vario=other|SMP=yes|drv_id=0xffff0002|drv_subtyp=2|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box SL WLAN|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3c00|vario=other|SMP=yes|drv_id=0xffff0003|drv_subtyp=3|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box Fon WLAN|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x4001|vario=other|SMP=yes|drv_id=0xffff0004|drv_subtyp=4|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box Fon (Annex A)|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3c00|vario=other|SMP=yes|drv_id=0xffff0005|drv_subtyp=5|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box (Annex A)|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3e01|vario=other|SMP=yes|drv_id=0xffff0006|drv_subtyp=6|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=AVM FRITZ!Box Fon|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3a00|vario=other|SMP=yes|drv_id=0xffff0007|drv_subtyp=7|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| diff --git a/src/hwinfo/src/isdn/cdb/ISDN.i386.txt b/src/hwinfo/src/isdn/cdb/ISDN.i386.txt deleted file mode 100644 index bae7d097c5..0000000000 --- a/src/hwinfo/src/isdn/cdb/ISDN.i386.txt +++ /dev/null @@ -1,181 +0,0 @@ -# -# CDB data export for subclass: ISDN Single Basic Rate -# Generated at : Sat Sep 13 01:19:56 2003 -# -# Exported combinations: -# arch=i386 dist=Stable lang=de_DE vario=HiSax driver -# arch=i386 dist=Stable lang=de_DE vario=I4L driver -# arch=i386 dist=Stable lang=de_DE vario=CAPI 2.0 driver -# -# Author: dhess@suse.de (13.02.2003) -# Author: didge@suse.de (04.08.2003) -# -# -# Export format: |Vendorname|Productname|Subclass|Bus|Variation|topic=value|topic=value|...|Variation|topic=value|topic=value|...| -# - - -|vendor=Billion|device=B009|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb009|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x50023|drv_subtyp=5|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=B1|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=CAPI 2.0 driver|IO=0x150|IO=0x250|IO=0x300|IO=0x340|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=6|IRQ=7|IRQ=9|SMP=Yes|drv_id=0x1f41|drv_subtyp=0|drv_typ=8001|feature=Fax|firmware=b1-%{PROTO}.t4|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=b1isa|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=ITH|device=ith mic|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x200|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=7|SMP=Yes|drv_id=0x11|drv_subtyp=0|drv_typ=17|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=High Soft Tech|device=Saphir|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x250|IO=0x270|IO=0x290|IO=0x2b0|IO=0x2d0|IO=0x350|IO=0x370|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=5|SMP=Yes|drv_id=0x1f|drv_subtyp=0|drv_typ=31|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Billion|device=B00C|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb00c|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x80023|drv_subtyp=8|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Cologne Chip AG|device=HFCS+ based card|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x0000|device_id=0x0000|vario=HiSax driver|SMP=Yes|drv_id=0x10025|drv_subtyp=1|drv_typ=37|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card USB v2.0|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x057c|device_id=0x1000|vario=CAPI 2.0 driver|SMP=No|drv_id=0x21f43|drv_subtyp=2|drv_typ=8003|feature=Fax|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcusb2|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=Telekom AG|device=A1T|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x0871|device_id=0xffa1|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xd0023|drv_subtyp=13|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Sagem|device=Niccy PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1267|device_id=0x1016|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x20018|drv_subtyp=2|drv_typ=24|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Cologne Chip AG|device=HFC 2BDS0|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0x2bd0|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x110023|drv_subtyp=17|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Formula-n|device=enter:now|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0x0055|subdevice_id=0x0002|vario=HiSax driver|SMP=Yes|drv_id=0x10029|drv_subtyp=1|drv_typ=41|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=under development|supported=full| -|vendor=ICN|device=2B|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=I4L driver|IO=0x300|IO=0x308|IO=0x310|IO=0x318|IO=0x320|IO=0x328|IO=0x330|IO=0x338|IO=0x340|IO=0x348|IO=0x350|IO=0x358|IO=0x360|IO=0x368|MEMBASE=0xc0000|MEMBASE=0xc2000|MEMBASE=0xc4000|MEMBASE=0xc6000|MEMBASE=0xc8000|MEMBASE=0xca000|MEMBASE=0xcc000|MEMBASE=0xce000|MEMBASE=0xd0000|MEMBASE=0xd2000|MEMBASE=0xd4000|MEMBASE=0xd6000|MEMBASE=0xd8000|MEMBASE=0xda000|MEMBASE=0xdc000|MEMBASE=0xde000|SMP=Yes|drv_id=0x1f5e|drv_subtyp=0|drv_typ=8030|firmware=pc-%{PROTO}.bin|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=icn|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=TigerJet|device=NetJet PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0x00ff|subdevice_id=0x000f|vario=HiSax driver|SMP=Yes|drv_id=0x10014|drv_subtyp=1|drv_typ=20|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Scitel|device=Quadro|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x10b5|device_id=0x9050|subvendor_id=0x0871|subdevice_id=0xffa8|vario=HiSax driver|SMP=Yes|drv_id=0x21|drv_subtyp=0|drv_typ=33|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Elsa AG|device=ML PCC-16|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x160|IO=0x170|IO=0x260|IO=0x360|IRQ=10|IRQ=11|IRQ=15|IRQ=3|IRQ=5|IRQ=9|SMP=Yes|drv_id=0x30006|drv_subtyp=3|drv_typ=6|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Teles AG|device=16.3c v.2.1|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x2750|device_id=0x2026|vario=HiSax driver|SMP=Yes|drv_id=0x25|drv_subtyp=0|drv_typ=37|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Sedlbauer AG|device=Speed Win|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x274c|device_id=0x0100|vario=HiSax driver|SMP=Yes|drv_id=0x1000f|drv_subtyp=1|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Teles AG|device=S0Box|device_class=ISDN Single Basic Rate|bus_type=Parallel|vario=HiSax driver|IO=0x278|IO=0x378|IO=0x3bc|IRQ=5|IRQ=7|SMP=Yes|drv_id=0x19|drv_subtyp=0|drv_typ=25|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Eicon Networks|device=Diva 2.0U PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe004|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xc000b|drv_subtyp=12|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=CREATIX Creative Information eXchange|device=16.3 PNP|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x980e|device_id=0x0000|vario=HiSax driver|SMP=Yes|drv_id=0x10004|drv_subtyp=1|drv_typ=4|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Teles AG|device=iSTAR PnP|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x2750|device_id=0x1074|vario=HiSax driver|SMP=Yes|drv_id=0x1000e|drv_subtyp=1|drv_typ=14|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Siemens|device=ISURF|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x254d|device_id=0x1000|vario=HiSax driver|SMP=Yes|drv_id=0x1d|drv_subtyp=0|drv_typ=29|feature=Fax|firmware=ISAR.BIN|interface=FCLASS1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Auerswald|device=Comfort 1200 System Telephone|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x09bf|device_id=0x00f2|vario=HiSax driver|SMP=Yes|drv_id=0x3002a|drv_subtyp=3|drv_typ=42|interface=I4L|line_cnt=1|line_protocol=DSS1|module=auerswald|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AsKey|device=PCI (CCD HFC)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0x2bd0|subvendor_id=0x144f|subdevice_id=0x1704|vario=HiSax driver|SMP=Yes|drv_id=0xc0023|drv_subtyp=12|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=B1 PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x21f41|drv_subtyp=2|drv_typ=8001|feature=Fax|firmware=b1-%{PROTO}.t4|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=b1pcmcia|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Billion|device=BIPAC-D1|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x2c09|device_id=0x0100|vario=HiSax driver|SMP=Yes|drv_id=0x2001e|drv_subtyp=2|drv_typ=30|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Auerswald|device=COMpact 2104 USB|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x09bf|device_id=0x00c0|vario=HiSax driver|SMP=Yes|alternative_name=COMpact 2104 DSL|drv_id=0x2002a|drv_subtyp=2|drv_typ=42|interface=I4L|line_cnt=1|line_protocol=DSS1|module=auerswald|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Gazel|device=R685|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x10b5|device_id=0x1030|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x22|drv_subtyp=0|drv_typ=34|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=ASUSCOM|device=PCI (CCD HFC)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1043|device_id=0x0675|subvendor_id=0x0675|subdevice_id=0x1704|vario=HiSax driver|SMP=Yes|drv_id=0xa0023|drv_subtyp=10|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=ASUSCOM|device=PCI (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x1043|subdevice_id=0x1702|vario=HiSax driver|SMP=Yes|drv_id=0x24|drv_subtyp=0|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Teles AG|device=16.3 PNP|device_class=ISDN Single Basic Rate|bus_type=ISA PnP|vendor_id=0x2750|device_id=0x1021|vario=HiSax driver|SMP=Yes|drv_id=0x4|drv_subtyp=0|drv_typ=4|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Sedlbauer AG|device=Speed Star|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x20016|drv_subtyp=2|drv_typ=22|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!X seriell|device_class=ISDN Single Basic Rate|bus_type=Serial|vario=HiSax driver|line_cnt=1|supported=not| -|vendor=Elsa AG|device=ML PCF-Pro|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x160|IO=0x170|IO=0x260|IO=0x360|IRQ=10|IRQ=11|IRQ=15|IRQ=3|IRQ=5|IRQ=9|SMP=Yes|drv_id=0x50006|drv_subtyp=5|drv_typ=6|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Digi|device=DataFire Micro V IOM2 (Europe)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x114f|device_id=0x0070|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x120023|drv_subtyp=18|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Elsa AG|device=Quickstep 3000|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x9315|device_id=0x3401|vario=HiSax driver|SMP=Yes|drv_id=0x80007|drv_subtyp=8|drv_typ=7|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Genius|device=Speed Surfer|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x252f|device_id=0x0100|vario=HiSax driver|SMP=Yes|drv_id=0x3001e|drv_subtyp=3|drv_typ=30|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Digi|device=DataFire Micro V (North America)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x114f|device_id=0x0073|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x150023|drv_subtyp=21|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Berkom|device=A4T|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x11de|device_id=0x6120|subvendor_id=0x0871|subdevice_id=0xffa4|vario=HiSax driver|SMP=Yes|drv_id=0x20|drv_subtyp=0|drv_typ=32|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Siemens|device=ISurf 2|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x254d|device_id=0x2000|vario=HiSax driver|SMP=Yes|drv_id=0x3000c|drv_subtyp=3|drv_typ=12|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Digi|device=DataFire Micro V (Europe)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x114f|device_id=0x0071|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x130023|drv_subtyp=19|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=U.S.Robotics|device=Sportster|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x268|IRQ=10|IRQ=11|IRQ=12|IRQ=14|IRQ=15|IRQ=5|IRQ=7|SMP=Yes|drv_id=0x10|drv_subtyp=0|drv_typ=16|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Zolltrix|device=2BDS0|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x15b0|device_id=0x2bd0|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x100023|drv_subtyp=16|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Eicon Networks|device=Diva Piccola|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x891c|device_id=0x5100|vario=HiSax driver|SMP=Yes|drv_id=0xb000b|drv_subtyp=11|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Motorola|device=MC145575|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1051|device_id=0x0100|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xf0023|drv_subtyp=15|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Telekom AG|device=Teledat X120|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x057c|device_id=0x2800|vario=CAPI 2.0 driver|SMP=No|alternative_name=Teledat USB 2a/b|drv_id=0x61f43|drv_subtyp=6|drv_typ=8003|feature=Fax|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fxusb_CZ|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card PnP|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0xcd06|device_id=0x0009|vario=CAPI 2.0 driver|SMP=No|drv_id=0x71f42|drv_subtyp=7|drv_typ=8002|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcpnp|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full|vario=HiSax driver|SMP=Yes|drv_id=0x2001b|drv_subtyp=2|drv_typ=27|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=OpenSource without Fax G3|supported=full| -|vendor=Teles AG|device=16.0 AB|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0xd80|IO=0xe80|IO=0xf80|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=9|MEMBASE=0xc0000|MEMBASE=0xc2000|MEMBASE=0xc4000|MEMBASE=0xc6000|MEMBASE=0xc8000|MEMBASE=0xca000|MEMBASE=0xcc000|MEMBASE=0xce000|MEMBASE=0xd0000|MEMBASE=0xd2000|MEMBASE=0xd4000|MEMBASE=0xd6000|MEMBASE=0xd8000|MEMBASE=0xda000|MEMBASE=0xdc000|MEMBASE=0xde000|SMP=Yes|drv_id=0x10001|drv_subtyp=1|drv_typ=1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Elsa AG|device=PCMCIA IPAC|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0xb000a|drv_subtyp=11|drv_typ=10|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Billion|device=B006|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb006|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x20023|drv_subtyp=2|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=CAPI 2.0 driver|SMP=No|drv_id=0x51f42|drv_subtyp=5|drv_typ=8002|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcpcmcia|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full|vario=HiSax driver|SMP=Yes|drv_id=0x1a|drv_subtyp=0|drv_typ=26|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=OpenSource without Fax G3|supported=full| -|vendor=Winbond|device=W6692 card|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x60024|drv_subtyp=6|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Eicon Networks|device=Diehl ISDN-SX|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=I4L driver|IRQ=10|IRQ=11|IRQ=12|IRQ=3|IRQ=4|IRQ=9|MEMBASE=0xd0000|SMP=Yes|drv_id=0x11f4a|drv_subtyp=1|drv_typ=8010|feature=Fax|firmware=%{PROTO}|interface=FCLASS2|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=eicon|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=ASUSCOM|device=ISA IPAC|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x7506|device_id=0x9016|vario=HiSax driver|SMP=Yes|drv_id=0x2000c|drv_subtyp=2|drv_typ=12|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=A1 PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=CAPI 2.0 driver|SMP=No|drv_id=0x61f42|drv_subtyp=6|drv_typ=8002|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcpcmcia|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full|vario=HiSax driver|SMP=Yes|drv_id=0x1001a|drv_subtyp=1|drv_typ=26|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=OpenSource without Fax G3|supported=full| -|vendor=AsKey|device=PCI + Voice (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x144f|subdevice_id=0x1703|vario=HiSax driver|SMP=Yes|drv_id=0x30024|drv_subtyp=3|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Eicon Networks|device=Diva 2.0 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe002|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x2000b|drv_subtyp=2|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Sedlbauer AG|device=Speed PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0053|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x6000f|drv_subtyp=6|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=ITK|device=ISDN PnP|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x8b26|device_id=0x2900|vario=HiSax driver|SMP=Yes|drv_id=0x20009|drv_subtyp=2|drv_typ=9|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!X ISDN|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x057c|device_id=0x2000|vario=CAPI 2.0 driver|SMP=No|drv_id=0x71f43|drv_subtyp=7|drv_typ=8003|feature=Fax|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fxusb|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|revision=0x0301|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=Dynalink|device=PCI (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1043|device_id=0x0675|subvendor_id=0x0675|subdevice_id=0x1702|vario=HiSax driver|SMP=Yes|drv_id=0x40024|drv_subtyp=4|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Elsa AG|device=ML PC|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x160|IO=0x170|IO=0x260|IO=0x360|IRQ=3|IRQ=5|IRQ=7|IRQ=9|SMP=Yes|drv_id=0x10006|drv_subtyp=1|drv_typ=6|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=M2 PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x51f41|drv_subtyp=5|drv_typ=8001|feature=Fax|firmware=b1-%{PROTO}.t4|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|module=b1pcmcia|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Eicon Networks|device=Diva 2.01 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe005|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x4000b|drv_subtyp=4|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=U.S.Robotics|device=ISDN PCI Card TA|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x16ec|subdevice_id=0x3409|vario=HiSax driver|SMP=Yes|drv_id=0x70024|drv_subtyp=7|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Sagem|device=Niccy ISA|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x814c|device_id=0x5001|vario=HiSax driver|SMP=Yes|drv_id=0x10018|drv_subtyp=1|drv_typ=24|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Elsa AG|device=ML PCF|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x160|IO=0x170|IO=0x260|IO=0x360|IRQ=10|IRQ=11|IRQ=15|IRQ=3|IRQ=5|IRQ=9|SMP=Yes|drv_id=0x40006|drv_subtyp=4|drv_typ=6|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Teles AG|device=16.3 AB|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x180|IO=0x280|IO=0x380|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=5|IRQ=9|SMP=Yes|drv_id=0x10003|drv_subtyp=1|drv_typ=3|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Dynalink|device=6692 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x0675|device_id=0x1702|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x50024|drv_subtyp=5|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=ITK|device=ISDN 3.0|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x8b26|device_id=0x2500|vario=HiSax driver|SMP=Yes|drv_id=0x10009|drv_subtyp=1|drv_typ=9|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Teles AG|device=PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x11de|device_id=0x6120|subvendor_id=0x0000|subdevice_id=0x0000|vario=HiSax driver|SMP=Yes|drv_id=0x15|drv_subtyp=0|drv_typ=21|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Sedlbauer AG|device=Speed Win2 PC104|device_class=ISDN Single Basic Rate|bus_type=PC104|vendor_id=0x0000|device_id=0x0000|subvendor_id=0x0000|subdevice_id=0x0000|vario=HiSax driver|SMP=Yes|drv_id=0x4000f|drv_subtyp=4|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=B1 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x0700|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x11f41|drv_subtyp=1|drv_typ=8001|feature=Fax|firmware=b1-%{PROTO}.t4|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=b1pci|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Sedlbauer AG|device=Speed Star2|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x50016|drv_subtyp=5|drv_typ=22|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AsKey|device=PCI (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x144f|subdevice_id=0x1702|vario=HiSax driver|SMP=Yes|drv_id=0x10024|drv_subtyp=1|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=High Soft Tech|device=saphir III|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0052|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x9000f|drv_subtyp=9|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Digi|device=DataFire Micro V IOM2 (North America)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x114f|device_id=0x0072|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x140023|drv_subtyp=20|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Dynalink|device=PCI (CCD HFC)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0x2bd0|subvendor_id=0x1043|subdevice_id=0x1704|vario=HiSax driver|SMP=Yes|drv_id=0xb0023|drv_subtyp=11|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Elsa AG|device=Quickstep 1000|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x9315|device_id=0x3301|vario=HiSax driver|SMP=Yes|drv_id=0x70007|drv_subtyp=7|drv_typ=7|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=ITK|device=ix1-micro Rev.2|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x390|IO=0x398|IO=0x3a0|IO=0x3a8|IRQ=10|IRQ=11|IRQ=5|IRQ=9|SMP=Yes|drv_id=0x9|drv_subtyp=0|drv_typ=9|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Teles AG|device=16.3c|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x2750|device_id=0x1026|vario=HiSax driver|SMP=Yes|drv_id=0xe|drv_subtyp=0|drv_typ=14|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=SGS Thomson Microelectronics|device=ST5481 USB Adapter|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x0483|device_id=0x4810|vario=HiSax driver|SMP=Yes|drv_id=0x103e9|drv_subtyp=1|drv_typ=1001|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax_st5481|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x0a00|subvendor_id=0xffff|subdevice_id=0xffff|vario=CAPI 2.0 driver|SMP=No|alternative_name=Telekom AG,Teledat 150|drv_id=0x11f42|drv_subtyp=1|drv_typ=8002|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcpci|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full|vario=HiSax driver|SMP=Yes|alternative_name=Telekom AG,Teledat 150|drv_id=0x1001b|drv_subtyp=1|drv_typ=27|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=OpenSource without Fax G3|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=A1|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=CAPI 2.0 driver|IO=0x200|IO=0x240|IO=0x300|IO=0x340|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=7|IRQ=9|SMP=No|drv_id=0x41f42|drv_subtyp=4|drv_typ=8002|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcclassic|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full|vario=HiSax driver|IO=0x200|IO=0x240|IO=0x300|IO=0x340|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=7|IRQ=9|SMP=Yes|drv_id=0x10005|drv_subtyp=1|drv_typ=5|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=OpenSource without Fax G3|supported=full| -|vendor=Elsa AG|device=PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x6000a|drv_subtyp=6|drv_typ=10|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Iscas|device=TE320|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x8615|device_id=0x0000|vario=HiSax driver|SMP=Yes|drv_id=0x4000c|drv_subtyp=4|drv_typ=12|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Eicon Networks|device=Diva 2.02 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe00b|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xd000b|drv_subtyp=13|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=ASUSCOM|device=ISA ISAC|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x7506|device_id=0x8816|vario=HiSax driver|SMP=Yes|drv_id=0x1000c|drv_subtyp=1|drv_typ=12|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card USB v2.1|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x057c|device_id=0x1900|vario=CAPI 2.0 driver|SMP=No|drv_id=0x31f43|drv_subtyp=3|drv_typ=8003|feature=Fax|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcusb2|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=Eicon Networks|device=Diehl ISDN-S|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=I4L driver|IRQ=10|IRQ=11|IRQ=12|IRQ=3|IRQ=4|IRQ=9|MEMBASE=0xd0000|SMP=Yes|drv_id=0x1f4a|drv_subtyp=0|drv_typ=8010|feature=Fax|firmware=%{PROTO}|interface=FCLASS2|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=eicon|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Sedlbauer AG|device=Speed Fax+|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x274c|device_id=0x0200|vario=HiSax driver|SMP=Yes|drv_id=0x3001c|drv_subtyp=3|drv_typ=28|feature=Fax|firmware=ISAR.BIN|interface=FCLASS1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Billion|device=B008|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb008|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x40023|drv_subtyp=4|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Billion|device=B00B|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb00b|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x70023|drv_subtyp=7|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=TigerJet|device=300 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x14|drv_subtyp=0|drv_typ=20|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Seyon|device=B100|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb100|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x90023|drv_subtyp=9|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=TigerJet|device=NetSpider-U PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x26|drv_subtyp=0|drv_typ=38|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Sedlbauer AG|device=Speed Fax+ PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0054|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x8001c|drv_subtyp=8|drv_typ=28|feature=Fax|firmware=ISAR.BIN|interface=FCLASS1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!X USB v1.0 / v2.0|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x057c|device_id=0x2000|vario=CAPI 2.0 driver|SMP=No|drv_id=0x51f43|drv_subtyp=5|drv_typ=8003|feature=Fax|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fxusb|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|revision=0x0100|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=Acer|device=P10|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0xd805|device_id=0x1411|vario=HiSax driver|SMP=Yes|drv_id=0x1e|drv_subtyp=0|drv_typ=30|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Elsa AG|device=Quickstep 3000 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1048|device_id=0x3000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xa0012|drv_subtyp=10|drv_typ=18|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=TeleInt|device=SA1|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x300|IRQ=10|IRQ=11|IRQ=3|IRQ=4|IRQ=5|IRQ=7|SMP=Yes|drv_id=0xd|drv_subtyp=0|drv_typ=13|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Billion|device=B000|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x10023|drv_subtyp=1|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Teles AG|device=8.0|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IRQ=3|IRQ=4|IRQ=5|IRQ=6|IRQ=7|IRQ=9|MEMBASE=0xc0000|MEMBASE=0xc2000|MEMBASE=0xc4000|MEMBASE=0xc6000|MEMBASE=0xc8000|MEMBASE=0xca000|MEMBASE=0xcc000|MEMBASE=0xce000|MEMBASE=0xd0000|MEMBASE=0xd2000|MEMBASE=0xd4000|MEMBASE=0xd6000|MEMBASE=0xd8000|MEMBASE=0xda000|MEMBASE=0xdc000|MEMBASE=0xde000|SMP=Yes|drv_id=0x2|drv_subtyp=0|drv_typ=2|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Elsa AG|device=Microlink ISDN USB|device_class=ISDN Single Basic Rate|bus_type=USB|vario=HiSax driver|line_cnt=1|supported=not| -|vendor=Teles AG|device=16.0|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0xd80|IO=0xe80|IO=0xf80|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=9|MEMBASE=0xc0000|MEMBASE=0xc2000|MEMBASE=0xc4000|MEMBASE=0xc6000|MEMBASE=0xc8000|MEMBASE=0xca000|MEMBASE=0xcc000|MEMBASE=0xce000|MEMBASE=0xd0000|MEMBASE=0xd2000|MEMBASE=0xd4000|MEMBASE=0xd6000|MEMBASE=0xd8000|MEMBASE=0xda000|MEMBASE=0xdc000|MEMBASE=0xde000|SMP=Yes|drv_id=0x1|drv_subtyp=0|drv_typ=1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Auerswald|device=Comfort 2000 System Telephone|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x09bf|device_id=0x00f1|vario=HiSax driver|SMP=Yes|drv_id=0x4002a|drv_subtyp=4|drv_typ=42|interface=I4L|line_cnt=1|line_protocol=DSS1|module=auerswald|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Eicon Networks|device=Diva Server BRI PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe010|subvendor_id=0xffff|subdevice_id=0xffff|vario=I4L driver|SMP=Yes|drv_id=0x51f4a|drv_subtyp=5|drv_typ=8010|feature=Fax|firmware=%{PROTO}|interface=FCLASS2|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=eicon|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Sedlbauer AG|device=Speed Card|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x270|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=7|SMP=Yes|alternative_name=Telekom AG,Teledat 100 ISA|drv_id=0xf|drv_subtyp=0|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Billion|device=B007|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb007|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x30023|drv_subtyp=3|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Elsa AG|device=Quickstep 1000 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1048|device_id=0x1000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x90012|drv_subtyp=9|drv_typ=18|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Teles AG|device=16.3|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x180|IO=0x280|IO=0x380|IRQ=10|IRQ=12|IRQ=15|IRQ=5|IRQ=9|SMP=Yes|drv_id=0x3|drv_subtyp=0|drv_typ=3|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Elsa AG|device=Microlink PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1048|device_id=0x1000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xc0012|drv_subtyp=12|drv_typ=18|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Gazel|device=Djinn Itoo|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x10b5|device_id=0x1151|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x20022|drv_subtyp=2|drv_typ=34|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Pyramid|device=Speed Fax+ PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0051|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x7001c|drv_subtyp=7|drv_typ=28|feature=Fax|firmware=ISAR.BIN|interface=FCLASS1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card PCI v2.0|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x0e00|subvendor_id=0x1244|subdevice_id=0x0e00|vario=CAPI 2.0 driver|SMP=No|alternative_name=Telekom AG,Teledat 150 v2.0|drv_id=0x21f42|drv_subtyp=2|drv_typ=8002|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcpci|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full|vario=HiSax driver|SMP=Yes|alternative_name=Telekom AG,Teledat 150 v2.0|drv_id=0x3e8|drv_subtyp=0|drv_typ=1000|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax_fcpcipnp|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=OpenSource without Fax G3|supported=full| -|vendor=Compaq Computer Corporation|device=ISDN S0 ISA|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x110e|device_id=0x0210|vario=HiSax driver|SMP=Yes|drv_id=0x13|drv_subtyp=0|drv_typ=19|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Billion|device=BIPAC-D|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x2c09|device_id=0x0200|vario=HiSax driver|SMP=Yes|drv_id=0x1001e|drv_subtyp=1|drv_typ=30|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Auerswald|device=COMpact 2206 USB|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x09bf|device_id=0x00db|vario=HiSax driver|SMP=Yes|alternative_name=COMpact 4410 USB|drv_id=0x1002a|drv_subtyp=1|drv_typ=42|interface=I4L|line_cnt=1|line_protocol=DSS1|module=auerswald|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=ASUSCOM|device=PCI + Voice (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x1043|subdevice_id=0x1703|vario=HiSax driver|SMP=Yes|drv_id=0x20024|drv_subtyp=2|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Eicon Networks|device=Diehl ISDN-SCOM|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=I4L driver|IRQ=10|IRQ=11|IRQ=12|IRQ=3|IRQ=4|IRQ=5|IRQ=7|IRQ=9|MEMBASE=0xd0000|SMP=Yes|drv_id=0x21f4a|drv_subtyp=2|drv_typ=8010|feature=Fax|firmware=%{PROTO}|interface=FCLASS2|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=eicon|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Teles AG|device=PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x8|drv_subtyp=0|drv_typ=8|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Gazel|device=R753|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x10b5|device_id=0x1152|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x10022|drv_subtyp=1|drv_typ=34|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card USB|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x057c|device_id=0x0c00|vario=CAPI 2.0 driver|SMP=No|drv_id=0x11f43|drv_subtyp=1|drv_typ=8003|feature=Fax|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcusb|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=Elsa AG|device=ML PCC-8|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=HiSax driver|IO=0x160|IO=0x170|IO=0x260|IO=0x360|IRQ=3|IRQ=5|IRQ=7|IRQ=9|SMP=Yes|drv_id=0x20006|drv_subtyp=2|drv_typ=6|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Billion|device=Tornado Tipac|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0xcd4c|device_id=0x0100|vario=HiSax driver|SMP=Yes|drv_id=0x4001e|drv_subtyp=4|drv_typ=30|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Abocom/Magitek|device=2BD1|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x13d1|device_id=0x2bd1|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x160023|drv_subtyp=22|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Billion|device=B00A|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb00a|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x60023|drv_subtyp=6|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Eicon Networks|device=Diva 2.01 ISA|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x891c|device_id=0xa100|vario=HiSax driver|SMP=Yes|drv_id=0x3000b|drv_subtyp=3|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Teles AG|device=PCI v2|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0x00a7|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x20014|drv_subtyp=2|drv_typ=20|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!X USB v3.0|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x057c|device_id=0x2000|vario=CAPI 2.0 driver|SMP=No|drv_id=0x81f43|drv_subtyp=8|drv_typ=8003|feature=Fax|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fxusb|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|revision=0x0302|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=Telekom AG|device=Concept|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x0871|device_id=0xffa2|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xe0023|drv_subtyp=14|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card Classic|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=CAPI 2.0 driver|IO=0x200|IO=0x240|IO=0x300|IO=0x340|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=7|IRQ=9|SMP=No|drv_id=0x31f42|drv_subtyp=3|drv_typ=8002|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcclassic|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full|vario=HiSax driver|IO=0x200|IO=0x240|IO=0x300|IO=0x340|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=4|IRQ=5|IRQ=7|IRQ=9|SMP=Yes|drv_id=0x5|drv_subtyp=0|drv_typ=5|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=OpenSource without Fax G3|supported=full| -|vendor=Eicon Networks|device=Diva 2.0 ISA|device_class=ISDN Single Basic Rate|bus_type=ISA|vendor_id=0x891c|device_id=0x7100|vario=HiSax driver|SMP=Yes|drv_id=0x1000b|drv_subtyp=1|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Eicon Networks|device=Diva Server 4BRI/PCI|device_class=ISDN Multiple Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe012|subvendor_id=0xffff|subdevice_id=0xffff|vario=I4L driver|SMP=Yes|drv_id=0x61f4a|drv_subtyp=6|drv_typ=8010|feature=Fax|firmware=%{PROTO}|interface=FCLASS2|interface=I4L|line_cnt=4|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=eicon|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=ICN|device=4B|device_class=ISDN Multiple Basic Rate|bus_type=ISA|vario=I4L driver|IO=0x300|IO=0x308|IO=0x310|IO=0x318|IO=0x320|IO=0x328|IO=0x330|IO=0x338|IO=0x340|IO=0x348|IO=0x350|IO=0x358|IO=0x360|IO=0x368|MEMBASE=0xc0000|MEMBASE=0xc2000|MEMBASE=0xc4000|MEMBASE=0xc6000|MEMBASE=0xc8000|MEMBASE=0xca000|MEMBASE=0xcc000|MEMBASE=0xce000|MEMBASE=0xd0000|MEMBASE=0xd2000|MEMBASE=0xd4000|MEMBASE=0xd6000|MEMBASE=0xd8000|MEMBASE=0xda000|MEMBASE=0xdc000|MEMBASE=0xde000|SMP=Yes|drv_id=0x11f5e|drv_subtyp=1|drv_typ=8030|firmware=pc-%{PROTO}.bin|interface=I4L|line_cnt=2|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=icn|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=C4|device_class=ISDN Multiple Basic Rate|bus_type=PCI|vendor_id=0x1011|device_id=0x1065|subvendor_id=0x1244|subdevice_id=0x0800|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x31f41|drv_subtyp=3|drv_typ=8001|feature=Fax|firmware=c4.bin|interface=CAPI20|interface=CAPI20 Fax|line_cnt=4|line_protocol=DSS1|line_protocol=LEASED|module=c4|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Eicon Networks|device=Diehl ISDN-QUADRO|device_class=ISDN Multiple Basic Rate|bus_type=ISA|vario=I4L driver|IRQ=10|IRQ=11|IRQ=12|IRQ=3|IRQ=4|IRQ=5|IRQ=6|IRQ=9|MEMBASE=0xd0000|SMP=Yes|drv_id=0x31f4a|drv_subtyp=3|drv_typ=8010|feature=Fax|firmware=%{PROTO}|interface=FCLASS2|interface=I4L|line_cnt=4|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=eicon|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Eicon Networks|device=Diva Server 4BRI/PCI U|device_class=ISDN Multiple Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe013|subvendor_id=0xffff|subdevice_id=0xffff|vario=I4L driver|SMP=Yes|drv_id=0x71f4a|drv_subtyp=7|drv_typ=8010|feature=Fax|firmware=%{PROTO}|interface=FCLASS2|interface=I4L|line_cnt=4|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=eicon|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=C2|device_class=ISDN Multiple Basic Rate|bus_type=PCI|vendor_id=0x1011|device_id=0x1065|subvendor_id=0x1244|subdevice_id=0x1100|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x61f41|drv_subtyp=6|drv_typ=8001|feature=Fax|firmware=c2.bin|interface=CAPI20|interface=CAPI20 Fax|line_cnt=2|line_protocol=DSS1|line_protocol=LEASED|module=c4|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=T1 PCI|device_class=ISDN Primary Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x1200|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x21f45|drv_subtyp=2|drv_typ=8005|feature=Fax|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|module=t1pci|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|special=B version|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=T1 ISA|device_class=ISDN Primary Rate|bus_type=ISA|vario=CAPI 2.0 driver|IO=0x340|IRQ=10|IRQ=11|IRQ=12|IRQ=15|IRQ=3|IRQ=5|IRQ=7|IRQ=9|SMP=Yes|drv_id=0x1f45|drv_subtyp=0|drv_typ=8005|feature=Fax|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|module=t1isa|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|special=B version|supported=full| -|vendor=Eicon Networks|device=Diehl ISDN-S2M|device_class=ISDN Primary Rate|bus_type=ISA|vario=I4L driver|IRQ=10|IRQ=11|IRQ=12|IRQ=3|IRQ=4|IRQ=5|IRQ=7|IRQ=9|MEMBASE=0xd0000|SMP=Yes|drv_id=0x41f4a|drv_subtyp=4|drv_typ=8010|feature=Fax|firmware=%{PROTO}|interface=FCLASS2|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=eicon|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Eicon Networks|device=Diva Server PRI/PCI|device_class=ISDN Primary Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe014|subvendor_id=0xffff|subdevice_id=0xffff|vario=I4L driver|SMP=Yes|drv_id=0x81f4a|drv_subtyp=8|drv_typ=8010|feature=Fax|firmware=%{PROTO}|interface=FCLASS2|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=eicon|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card DSL|device_class=ISDN Basic Rate and DSL|bus_type=PCI|vendor_id=0x1131|device_id=0x5402|subvendor_id=0x1244|subdevice_id=0x0f00|vario=CAPI 2.0 driver|SMP=No|drv_id=0x11f44|drv_subtyp=1|drv_typ=8004|feature=DSL|feature=Fax|firmware=fdslbase.bin|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcdsl|need_packages=avm_fcdsl|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3 and DSL|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card DSL v2.0|device_class=ISDN Basic Rate and DSL|bus_type=PCI|vendor_id=0x1244|device_id=0x2900|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x31f44|drv_subtyp=3|drv_typ=8004|feature=DSL|feature=Fax|firmware=fds2base.bin|info=card is supported with binary only drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcdsl2|need_packages=avm_fcdsl|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3 and DSL|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card DSL USB|device_class=ISDN Basic Rate and DSL|bus_type=USB|vendor_id=0x057c|device_id=0x2300|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x21f44|drv_subtyp=2|drv_typ=8004|feature=DSL|feature=Fax|firmware=fdsubase.frm|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcdslusb|need_packages=avm_fcdsl|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card DSL SL USB|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3500|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x51f44|drv_subtyp=5|drv_typ=8004|feature=DSLONLY|firmware=fdlubase.frm|info=DSL only card with binonly drivers from the manufacturer|interface=CAPI20|line_protocol=???|module=fcdslslusb|need_packages=avm_fcdsl|need_packages=capi4linux|need_packages=i4l-base|short_description=binary only CAPI|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card DSL SL|device_class=DSL|bus_type=PCI|vendor_id=0x1244|device_id=0x2700|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x41f44|drv_subtyp=4|drv_typ=8004|feature=DSLONLY|firmware=fdssbase.bin|info=DSL only card with binonly driver from the manufacturer|interface=CAPI20|line_protocol=???|module=fcdslsl|need_packages=avm_fcdsl|need_packages=capi4linux|need_packages=i4l-base|short_description=DSL only card with CAPI2.0|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card DSL USB v2.0|device_class=ISDN Basic Rate and DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3600|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x61f44|drv_subtyp=6|drv_typ=8004|feature=DSL|feature=Fax|firmware=fdsubase2.frm|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=fcdslusb2|need_packages=avm_fcdsl|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=Telekom AG|device=Eumex 2220PC|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x057c|device_id=0x2805|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0xa1f43|drv_subtyp=10|drv_typ=8003|feature=Fax|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=e2220pc|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=Telekom AG|device=Eumex 2220pc|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x057c|device_id=0x4401|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0xb1f43|drv_subtyp=11|drv_typ=8003|feature=Fax|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=e2220pc|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=Telekom AG|device=Eumex 5520PC|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x057c|device_id=0x2806|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0xc1f43|drv_subtyp=12|drv_typ=8003|feature=Fax|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=e5520pc|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=Telekom AG|device=Eumex 5520pc|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x057c|device_id=0x4601|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0xd1f43|drv_subtyp=13|drv_typ=8003|feature=Fax|info=This card is supported with binonly drivers from the manufacturer|interface=CAPI20|interface=CAPI20 Fax|line_cnt=1|line_protocol=DSS1|module=e5520pc|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=binary only CAPI with FAX G3|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=BlueFRITZ!USB|device_class=Others|bus_type=USB|vendor_id=0x057c|device_id=0x2200|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x11f46|drv_subtyp=1|drv_typ=8006|feature=BLUETOOTH|feature=Basic Rate|firmware=bfubase.frm|interface=CAPI20|line_cnt=1|line_protocol=DSS1|module=bfusb|need_packages=bluez-firmware|need_packages=bluez-libs|need_packages=bluez-utils|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|short_description=Bluetooth Dongle,need ISDN Accesspoint|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box SL|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3701|vario=other|SMP=yes|drv_id=0xffff0001|drv_subtyp=1|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3702|vario=other|SMP=yes|drv_id=0xffff0002|drv_subtyp=2|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box SL WLAN|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3c00|vario=other|SMP=yes|drv_id=0xffff0003|drv_subtyp=3|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box Fon WLAN|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x4001|vario=other|SMP=yes|drv_id=0xffff0004|drv_subtyp=4|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box Fon (Annex A)|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3c00|vario=other|SMP=yes|drv_id=0xffff0005|drv_subtyp=5|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box (Annex A)|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3e01|vario=other|SMP=yes|drv_id=0xffff0006|drv_subtyp=6|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box Fon|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3a00|vario=other|SMP=yes|drv_id=0xffff0007|drv_subtyp=7|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=Sitecom|device=DC-104 USB ISDN Modem Rev 1|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x0483|device_id=0x4810|subvendor_id=|subdevice_id=|vario=HiSax driver|SMP=Yes|drv_id=0x03e9|drv_subtyp=0|drv_typ=1001|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax_st5481|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Sitecom|device=DC 104 USB ISDN Modem Rev 2|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x0959|device_id=0x2bd0|subvendor_id=|subdevice_id=|vario=HiSax driver|SMP=Yes|drv_id=0x103ea|drv_subtyp=1|drv_typ=1002|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hfc_usb|supported=full| -|vendor=Sitecom|device=DC 105 ISDN TA|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x182d|device_id=0x3069|subvendor_id=0x182d|subdevice_id=0x3069|vario=HiSax driver|SMP=Yes|drv_id=0x170023|drv_subtyp=23|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|supported=full| diff --git a/src/hwinfo/src/isdn/cdb/ISDN.ppc.txt b/src/hwinfo/src/isdn/cdb/ISDN.ppc.txt deleted file mode 100644 index d4acd85b12..0000000000 --- a/src/hwinfo/src/isdn/cdb/ISDN.ppc.txt +++ /dev/null @@ -1,37 +0,0 @@ -# -# CDB data export for subclass: ISDN Single Basic Rate -# Generated at : Tue Aug 26 16:15:17 2003 -# -# Exported combinations: -# arch=ppc dist=Stable lang=de_DE vario=HiSax driver -# -# Author: dhess@suse.de (13.02.2003) -# Author: didge@suse.de (04.08.2003) -# -# -# Export format: |Vendorname|Productname|Subclass|Bus|Variation|topic=value|topic=value|...|Variation|topic=value|topic=value|...| -# - - -|vendor=Sagem|device=Niccy PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1267|device_id=0x1016|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x20018|drv_subtyp=2|drv_typ=24|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!X seriell|device_class=ISDN Single Basic Rate|bus_type=Serial|vario=HiSax driver|line_cnt=1|supported=not| -|vendor=Eicon Networks|device=Diva 2.0 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe002|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x2000b|drv_subtyp=2|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sedlbauer AG|device=Speed PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0053|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x6000f|drv_subtyp=6|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Eicon Networks|device=Diva 2.01 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe005|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x4000b|drv_subtyp=4|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Telekom AG|device=Teledat USB 2a/b|device_class=ISDN Single Basic Rate|bus_type=USB|vario=HiSax driver|line_cnt=1|supported=not| -|vendor=High Soft Tech|device=saphir III|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0052|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x9000f|drv_subtyp=9|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x0a00|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|alternative_name=Telekom AG,Teledat 150|drv_id=0x1001b|drv_subtyp=1|drv_typ=27|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|short_description=OpenSource without Fax G3|supported=full| -|vendor=Eicon Networks|device=Diva 2.02 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe00b|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xd000b|drv_subtyp=13|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sedlbauer AG|device=Speed Fax+ PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0054|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x8001c|drv_subtyp=8|drv_typ=28|feature=Fax|firmware=ISAR.BIN|interface=FCLASS1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Quickstep 3000 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1048|device_id=0x3000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xa0012|drv_subtyp=10|drv_typ=18|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Microlink ISDN USB|device_class=ISDN Single Basic Rate|bus_type=USB|vario=HiSax driver|line_cnt=1|supported=not| -|vendor=Elsa AG|device=Quickstep 1000 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1048|device_id=0x1000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x90012|drv_subtyp=9|drv_typ=18|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Microlink PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1048|device_id=0x1000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xc0012|drv_subtyp=12|drv_typ=18|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Pyramid|device=Speed Fax+ PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0051|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x7001c|drv_subtyp=7|drv_typ=28|feature=Fax|firmware=ISAR.BIN|interface=FCLASS1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box SL|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3701|vario=other|SMP=yes|drv_id=0xffff0001|drv_subtyp=1|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3702|vario=other|SMP=yes|drv_id=0xffff0002|drv_subtyp=2|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box SL WLAN|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3c00|vario=other|SMP=yes|drv_id=0xffff0003|drv_subtyp=3|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box Fon WLAN|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x4001|vario=other|SMP=yes|drv_id=0xffff0004|drv_subtyp=4|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box Fon (Annex A)|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3c00|vario=other|SMP=yes|drv_id=0xffff0005|drv_subtyp=5|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box (Annex A)|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3e01|vario=other|SMP=yes|drv_id=0xffff0006|drv_subtyp=6|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=AVM FRITZ!Box Fon|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3a00|vario=other|SMP=yes|drv_id=0xffff0007|drv_subtyp=7|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| diff --git a/src/hwinfo/src/isdn/cdb/ISDN.x86_64.txt b/src/hwinfo/src/isdn/cdb/ISDN.x86_64.txt deleted file mode 100644 index 71dab3db08..0000000000 --- a/src/hwinfo/src/isdn/cdb/ISDN.x86_64.txt +++ /dev/null @@ -1,106 +0,0 @@ -# -# CDB data export for subclass: ISDN Single Basic Rate -# Generated at : Sat Aug 30 17:23:03 2003 -# -# Exported combinations: -# arch=x86_64 dist=Stable lang=de_DE vario=HiSax driver -# arch=x86_64 dist=Stable lang=de_DE vario=I4L driver -# arch=x86_64 dist=Stable lang=de_DE vario=CAPI 2.0 driver -# -# Author: dhess@suse.de (13.02.2003) -# Author: didge@suse.de (04.08.2003) -# -# -# Export format: |Vendorname|Productname|Subclass|Bus|Variation|topic=value|topic=value|...|Variation|topic=value|topic=value|...| -# - - -|vendor=Billion|device=B009|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb009|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x50023|drv_subtyp=5|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=B1|device_class=ISDN Single Basic Rate|bus_type=ISA|vario=CAPI 2.0 driver|supported=unknown| -|vendor=Billion|device=B00C|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb00c|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x80023|drv_subtyp=8|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Telekom AG|device=A1T|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x0871|device_id=0xffa1|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xd0023|drv_subtyp=13|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sagem|device=Niccy PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1267|device_id=0x1016|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x20018|drv_subtyp=2|drv_typ=24|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Cologne Chip AG|device=HFC 2BDS0|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0x2bd0|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x110023|drv_subtyp=17|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Formula-n|device=enter:now|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0x0055|subdevice_id=0x0002|vario=HiSax driver|SMP=Yes|drv_id=0x10029|drv_subtyp=1|drv_typ=41|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|short_description=under development|supported=full| -|vendor=TigerJet|device=NetJet PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0x00ff|subdevice_id=0x000f|vario=HiSax driver|SMP=Yes|drv_id=0x10014|drv_subtyp=1|drv_typ=20|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Scitel|device=Quadro|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x10b5|device_id=0x9050|subvendor_id=0x0871|subdevice_id=0xffa8|vario=HiSax driver|SMP=Yes|drv_id=0x21|drv_subtyp=0|drv_typ=33|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=S0Box|device_class=ISDN Single Basic Rate|bus_type=Parallel|vario=HiSax driver|IO=0x278|IO=0x378|IO=0x3bc|IRQ=5|IRQ=7|SMP=Yes|drv_id=0x19|drv_subtyp=0|drv_typ=25|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Eicon Networks|device=Diva 2.0U PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe004|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xc000b|drv_subtyp=12|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Auerswald|device=Comfort 1200 System Telephone|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x09bf|device_id=0x00f2|vario=HiSax driver|SMP=Yes|drv_id=0x3002a|drv_subtyp=3|drv_typ=42|interface=I4L|line_cnt=1|line_protocol=DSS1|module=auerswald|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AsKey|device=PCI (CCD HFC)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0x2bd0|subvendor_id=0x144f|subdevice_id=0x1704|vario=HiSax driver|SMP=Yes|drv_id=0xc0023|drv_subtyp=12|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=B1 PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x21f41|drv_subtyp=2|drv_typ=8001|feature=Fax|firmware=b1-%{PROTO}.t4|interface=CAPI20|interface=CAPI20 Fax|interface=I4L|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=b1pcmcia|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Auerswald|device=COMpact 2104 USB|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x09bf|device_id=0x00c0|vario=HiSax driver|SMP=Yes|drv_id=0x2002a|drv_subtyp=2|drv_typ=42|interface=I4L|line_cnt=1|line_protocol=DSS1|module=auerswald|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Gazel|device=R685|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x10b5|device_id=0x1030|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x22|drv_subtyp=0|drv_typ=34|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=ASUSCOM|device=PCI (CCD HFC)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1043|device_id=0x0675|subvendor_id=0x0675|subdevice_id=0x1704|vario=HiSax driver|SMP=Yes|drv_id=0xa0023|drv_subtyp=10|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=ASUSCOM|device=PCI (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x1043|subdevice_id=0x1702|vario=HiSax driver|SMP=Yes|drv_id=0x24|drv_subtyp=0|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sedlbauer AG|device=Speed Star|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x20016|drv_subtyp=2|drv_typ=22|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!X seriell|device_class=ISDN Single Basic Rate|bus_type=Serial|vario=HiSax driver|line_cnt=1|supported=not| -|vendor=Digi|device=DataFire Micro V IOM2 (Europe)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x114f|device_id=0x0070|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x120023|drv_subtyp=18|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Digi|device=DataFire Micro V (North America)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x114f|device_id=0x0073|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x150023|drv_subtyp=21|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Berkom|device=A4T|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x11de|device_id=0x6120|subvendor_id=0x0871|subdevice_id=0xffa4|vario=HiSax driver|SMP=Yes|drv_id=0x20|drv_subtyp=0|drv_typ=32|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Digi|device=DataFire Micro V (Europe)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x114f|device_id=0x0071|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x130023|drv_subtyp=19|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Zolltrix|device=2BDS0|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x15b0|device_id=0x2bd0|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x100023|drv_subtyp=16|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Motorola|device=MC145575|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1051|device_id=0x0100|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xf0023|drv_subtyp=15|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=PCMCIA IPAC|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0xb000a|drv_subtyp=11|drv_typ=10|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=B006|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb006|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x20023|drv_subtyp=2|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x1a|drv_subtyp=0|drv_typ=26|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|short_description=OpenSource without Fax G3|supported=full| -|vendor=Winbond|device=W6692 card|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x60024|drv_subtyp=6|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=A1 PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x1001a|drv_subtyp=1|drv_typ=26|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|short_description=OpenSource without Fax G3|supported=full| -|vendor=AsKey|device=PCI + Voice (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x144f|subdevice_id=0x1703|vario=HiSax driver|SMP=Yes|drv_id=0x30024|drv_subtyp=3|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Eicon Networks|device=Diva 2.0 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe002|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x2000b|drv_subtyp=2|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sedlbauer AG|device=Speed PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0053|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x6000f|drv_subtyp=6|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Dynalink|device=PCI (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1043|device_id=0x0675|subvendor_id=0x0675|subdevice_id=0x1702|vario=HiSax driver|SMP=Yes|drv_id=0x40024|drv_subtyp=4|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Eicon Networks|device=Diva 2.01 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe005|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x4000b|drv_subtyp=4|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=U.S.Robotics|device=ISDN PCI Card TA|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x16ec|subdevice_id=0x3409|vario=HiSax driver|SMP=Yes|drv_id=0x70024|drv_subtyp=7|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Dynalink|device=6692 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x0675|device_id=0x1702|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x50024|drv_subtyp=5|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x11de|device_id=0x6120|subvendor_id=0x0000|subdevice_id=0x0000|vario=HiSax driver|SMP=Yes|drv_id=0x15|drv_subtyp=0|drv_typ=21|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sedlbauer AG|device=Speed Win2 PC104|device_class=ISDN Single Basic Rate|bus_type=PC104|vendor_id=0x0000|device_id=0x0000|subvendor_id=0x0000|subdevice_id=0x0000|vario=HiSax driver|SMP=Yes|drv_id=0x4000f|drv_subtyp=4|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=B1 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x0700|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x11f41|drv_subtyp=1|drv_typ=8001|feature=Fax|firmware=b1-%{PROTO}.t4|interface=CAPI20|interface=CAPI20 Fax|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=b1pci|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=Sedlbauer AG|device=Speed Star2|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x50016|drv_subtyp=5|drv_typ=22|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Telekom AG|device=Teledat USB 2a/b|device_class=ISDN Single Basic Rate|bus_type=USB|vario=HiSax driver|line_cnt=1|supported=not| -|vendor=AsKey|device=PCI (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x144f|subdevice_id=0x1702|vario=HiSax driver|SMP=Yes|drv_id=0x10024|drv_subtyp=1|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=High Soft Tech|device=saphir III|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0052|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x9000f|drv_subtyp=9|drv_typ=15|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Digi|device=DataFire Micro V IOM2 (North America)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x114f|device_id=0x0072|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x140023|drv_subtyp=20|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Dynalink|device=PCI (CCD HFC)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0x2bd0|subvendor_id=0x1043|subdevice_id=0x1704|vario=HiSax driver|SMP=Yes|drv_id=0xb0023|drv_subtyp=11|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=SGS Thomson Microelectronics|device=ST5481 USB Adapter|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x0483|device_id=0x4810|vario=HiSax driver|SMP=Yes|drv_id=0x103e9|drv_subtyp=1|drv_typ=1001|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax_st5481|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x0a00|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|alternative_name=Telekom AG,Teledat 150|drv_id=0x1001b|drv_subtyp=1|drv_typ=27|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|short_description=OpenSource without Fax G3|supported=full| -|vendor=Elsa AG|device=PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x6000a|drv_subtyp=6|drv_typ=10|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Eicon Networks|device=Diva 2.02 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1133|device_id=0xe00b|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xd000b|drv_subtyp=13|drv_typ=11|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=B008|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb008|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x40023|drv_subtyp=4|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=B00B|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb00b|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x70023|drv_subtyp=7|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=TigerJet|device=300 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x14|drv_subtyp=0|drv_typ=20|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Seyon|device=B100|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb100|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x90023|drv_subtyp=9|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=TigerJet|device=NetSpider-U PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x26|drv_subtyp=0|drv_typ=38|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Sedlbauer AG|device=Speed Fax+ PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0054|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x8001c|drv_subtyp=8|drv_typ=28|feature=Fax|firmware=ISAR.BIN|interface=FCLASS1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Quickstep 3000 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1048|device_id=0x3000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xa0012|drv_subtyp=10|drv_typ=18|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=B000|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x10023|drv_subtyp=1|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Microlink ISDN USB|device_class=ISDN Single Basic Rate|bus_type=USB|vario=HiSax driver|line_cnt=1|supported=not| -|vendor=Auerswald|device=Comfort 2000 System Telephone|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x09bf|device_id=0x00f1|vario=HiSax driver|SMP=Yes|drv_id=0x4002a|drv_subtyp=4|drv_typ=42|interface=I4L|line_cnt=1|module=auerswald|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Billion|device=B007|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb007|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x30023|drv_subtyp=3|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Quickstep 1000 PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1048|device_id=0x1000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x90012|drv_subtyp=9|drv_typ=18|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Elsa AG|device=Microlink PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1048|device_id=0x1000|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xc0012|drv_subtyp=12|drv_typ=18|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Gazel|device=Djinn Itoo|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x10b5|device_id=0x1151|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x20022|drv_subtyp=2|drv_typ=34|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Pyramid|device=Speed Fax+ PCI|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0002|subvendor_id=0x0051|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x7001c|drv_subtyp=7|drv_typ=28|feature=Fax|firmware=ISAR.BIN|interface=FCLASS1|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Card PCI v2.0|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x0e00|subvendor_id=0x1244|subdevice_id=0x0e00|vario=HiSax driver|SMP=Yes|alternative_name=Telekom AG,Teledat 150 v2.0|drv_id=0x3e8|drv_subtyp=0|drv_typ=1000|feature=Fax|info=This card has multiple drivers, some functions are only available on the binonly driver|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax_fcpcipnp|need_packages=i4l-base|short_description=OpenSource without Fax G3|supported=full| -|vendor=Auerswald|device=COMpact 2206 USB|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x09bf|device_id=0x00db|vario=HiSax driver|SMP=Yes|drv_id=0x1002a|drv_subtyp=1|drv_typ=42|interface=I4L|line_cnt=1|line_protocol=DSS1|module=auerswald|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=ASUSCOM|device=PCI + Voice (W6692)|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1050|device_id=0x6692|subvendor_id=0x1043|subdevice_id=0x1703|vario=HiSax driver|SMP=Yes|drv_id=0x20024|drv_subtyp=2|drv_typ=36|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=PCMCIA|device_class=ISDN Single Basic Rate|bus_type=PCMCIA|vario=HiSax driver|SMP=Yes|drv_id=0x8|drv_subtyp=0|drv_typ=8|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Gazel|device=R753|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x10b5|device_id=0x1152|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x10022|drv_subtyp=1|drv_typ=34|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Abocom/Magitek|device=2BD1|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x13d1|device_id=0x2bd1|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x160023|drv_subtyp=22|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Billion|device=B00A|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x1397|device_id=0xb00a|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0x60023|drv_subtyp=6|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Teles AG|device=PCI v2|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0xe159|device_id=0x0001|subvendor_id=0x00a7|subdevice_id=0x0001|vario=HiSax driver|SMP=Yes|drv_id=0x20014|drv_subtyp=2|drv_typ=20|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=Telekom AG|device=Concept|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x0871|device_id=0xffa2|subvendor_id=0xffff|subdevice_id=0xffff|vario=HiSax driver|SMP=Yes|drv_id=0xe0023|drv_subtyp=14|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|need_packages=i4l-base|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=C4|device_class=ISDN Multiple Basic Rate|bus_type=PCI|vendor_id=0x1011|device_id=0x1065|subvendor_id=0x1244|subdevice_id=0x0800|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x31f41|drv_subtyp=3|drv_typ=8001|feature=Fax|firmware=c4.bin|interface=CAPI20|interface=CAPI20 Fax|interface=I4L|line_cnt=4|line_protocol=DSS1|line_protocol=LEASED|module=c4|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=C2|device_class=ISDN Multiple Basic Rate|bus_type=PCI|vendor_id=0x1011|device_id=0x1065|subvendor_id=0x1244|subdevice_id=0x1100|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x61f41|drv_subtyp=6|drv_typ=8001|feature=Fax|firmware=c2.bin|interface=CAPI20|interface=CAPI20 Fax|interface=I4L|line_cnt=2|line_protocol=DSS1|line_protocol=LEASED|module=c4|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=T1 PCI|device_class=ISDN Primary Rate|bus_type=PCI|vendor_id=0x1244|device_id=0x1200|vario=CAPI 2.0 driver|SMP=Yes|drv_id=0x21f45|drv_subtyp=2|drv_typ=8005|feature=Fax|firmware=t1-{PROF}.t4|interface=CAPI20|interface=CAPI20 Fax|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|module=t1pci|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|need_packages=i4lfirm|special=B version|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=BlueFRITZ!USB|device_class=Others|bus_type=USB|vendor_id=0x057c|device_id=0x2200|vario=CAPI 2.0 driver|Interface=CAPI20|SMP=Yes|drv_id=0x11f46|drv_subtyp=1|drv_typ=8006|feature=BLUETOOTH|feature=Basic Rate|firmware=bfubase.frm|line_cnt=1|line_protocol=DSS1|module=bfusb|need_packages=bluez-firmware|need_packages=bluez-libs|need_packages=bluez-utils|need_packages=capi4linux|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box SL|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3701|vario=other|SMP=yes|drv_id=0xffff0001|drv_subtyp=1|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3702|vario=other|SMP=yes|drv_id=0xffff0002|drv_subtyp=2|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box SL WLAN|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3c00|vario=other|SMP=yes|drv_id=0xffff0003|drv_subtyp=3|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box Fon WLAN|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x4001|vario=other|SMP=yes|drv_id=0xffff0004|drv_subtyp=4|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box Fon (Annex A)|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3c00|vario=other|SMP=yes|drv_id=0xffff0005|drv_subtyp=5|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=FRITZ!Box (Annex A)|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3e01|vario=other|SMP=yes|drv_id=0xffff0006|drv_subtyp=6|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=AVM Computersysteme Vertriebs GmbH|device=AVM FRITZ!Box Fon|device_class=DSL|bus_type=USB|vendor_id=0x057c|device_id=0x3a00|vario=other|SMP=yes|drv_id=0xffff0007|drv_subtyp=7|drv_typ=9999|feature=DSLONLY|feature=PPPOE|interface=pppoe|line_cnt=0|line_protocol=none|need_packages=ppp|need_packages=smpppd|module=usbnet|supported=full| -|vendor=Sitecom|device=DC-104 USB ISDN Modem Rev 1|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x0483|device_id=0x4810|subvendor_id=|subdevice_id=|vario=HiSax driver|SMP=Yes|drv_id=0x03e9|drv_subtyp=0|drv_typ=1001|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax_st5481|need_packages=i4l-base|need_packages=i4l-isdnlog|supported=full| -|vendor=Sitecom|device=DC 104 USB ISDN Modem Rev 2|device_class=ISDN Single Basic Rate|bus_type=USB|vendor_id=0x0959|device_id=0x2bd0|subvendor_id=|subdevice_id=|vario=HiSax driver|SMP=Yes|drv_id=0x103ea|drv_subtyp=1|drv_typ=1002|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hfc_usb|supported=full| -|vendor=Sitecom|device=DC 105 ISDN TA|device_class=ISDN Single Basic Rate|bus_type=PCI|vendor_id=0x182d|device_id=0x3069|subvendor_id=0x182d|subdevice_id=0x3069|vario=HiSax driver|SMP=Yes|drv_id=0x170023|drv_subtyp=23|drv_typ=35|interface=I4L|line_cnt=1|line_protocol=1TR6|line_protocol=DSS1|line_protocol=LEASED|line_protocol=NI1|module=hisax|supported=full| diff --git a/src/hwinfo/src/isdn/cdb/Makefile b/src/hwinfo/src/isdn/cdb/Makefile deleted file mode 100644 index 43cba1fa66..0000000000 --- a/src/hwinfo/src/isdn/cdb/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -TOPDIR = ../../.. -TARGETS = mk_isdnhwdb isdn_cdb.h ISDN.CDB.hwdb -CLEANFILES = isdn_cdb isdn_cdb.h lex.yy.c ISDN.CDB.txt mk_isdnhwdb ISDN.CDB.hwdb - -include $(TOPDIR)/Makefile.common - -ISDN.CDB.txt: - if [ -f ISDN.$(ARCH).txt ]; then \ - ln -s ISDN.$(ARCH).txt ISDN.CDB.txt; \ - else \ - ln -s ISDN.ppc.txt ISDN.CDB.txt; \ - fi - -isdn_cdb.h: isdn_cdb ISDN.CDB.txt - rm -f isdn_cdb.h - ./isdn_cdb ISDN.CDB.txt isdn_cdb.h - -lex.yy.c: isdn_cdb.lex - lex isdn_cdb.lex - -isdn_cdb: isdn_cdb.o cdb_read.o - -mk_isdnhwdb: mk_isdnhwdb.o cdb_read.o - -cdb_read.o: cdb_read.c cdb_read.h - -isdn_cdb.o: isdn_cdb.c cdb_read.h lex.yy.c - -mk_isdnhwdb.o: mk_isdnhwdb.c cdb_read.h lex.yy.c - -ISDN.CDB.hwdb: mk_isdnhwdb ISDN.CDB.txt - rm -f ISDN.CDB.hwdb - ./mk_isdnhwdb ISDN.CDB.txt ISDN.CDB.hwdb diff --git a/src/hwinfo/src/isdn/cdb/cdb_hwdb.h b/src/hwinfo/src/isdn/cdb/cdb_hwdb.h deleted file mode 100644 index 935e243a3f..0000000000 --- a/src/hwinfo/src/isdn/cdb/cdb_hwdb.h +++ /dev/null @@ -1,16 +0,0 @@ -#define CDBISDN_CDB_FILE "/usr/share/hwinfo/ISDN.CDB.txt" -#define CDBISDN_HWDB_FILE "/usr/share/hwinfo/ISDN.CDB.hwdb" - -#define IWHREC_TYPE_VERSION 1 -#define IWHREC_TYPE_DATE 2 -#define IWHREC_TYPE_NAME_SIZE 3 -#define IWHREC_TYPE_NAME_COUNT 4 -#define IWHREC_TYPE_NAME_DATA 5 -#define IWHREC_TYPE_VENDOR_COUNT 11 -#define IWHREC_TYPE_VENDOR_RECORD 12 -#define IWHREC_TYPE_CARD_COUNT 21 -#define IWHREC_TYPE_CARD_RECORD 22 -#define IWHREC_TYPE_CARD_IDSORTED 23 -#define IWHREC_TYPE_VARIO_COUNT 31 -#define IWHREC_TYPE_VARIO_RECORD 32 - diff --git a/src/hwinfo/src/isdn/cdb/cdb_read.c b/src/hwinfo/src/isdn/cdb/cdb_read.c deleted file mode 100644 index 92147e182a..0000000000 --- a/src/hwinfo/src/isdn/cdb/cdb_read.c +++ /dev/null @@ -1,517 +0,0 @@ -#include "cdb_read.h" - -int max_ce = MAXCARDS; -int ce_idx = 0; -int max_vario = MAXVARIO; -int vario_idx; -int name_str_cnt = 0; -int max_name_str_cnt = MAXNAMECNT; -int max_ivendor = MAXCARDS; -int ivendor_idx = 0; - -char *name_str; -cdb_isdn_card *cards; -cdb_isdn_vario *varios; -cdb_isdn_vendor *vendors; - -int *isdncard_id; - -int drvid_cnt; -int drv_subtyp_cnt; -int drv_typ_cnt; -int supported_cnt; - -int not_supported = 0; - -static struct _vendorshortnames_t _vendorshortnames[] = { - {"AVM Computersysteme Vertriebs GmbH","AVM"}, - {"High Soft Tech","HST"}, - {"Cologne Chip AG","CC"}, - {"Telekom AG","DTAG"}, - {"TigerJet","TJET"}, - {"ASUSCOM","Asus"}, - {"U.S.Robotics","USR"}, - {"SGS Thomson Microelectronics","SGST"}, - {"Abocom/Magitek","Abocom"}, - {NULL,NULL}, -}; - -static int compare_vendor(cdb_isdn_vendor *v1, cdb_isdn_vendor *v2) { - return(strcasecmp(v1->name, v2->name)); -} - -static int compare_card(cdb_isdn_card *c1, cdb_isdn_card *c2) { - return(strcasecmp(c1->name, c2->name)); -} - -int compare_name(const int *c1, const int *c2) { - return(strcasecmp(cards[*c1].name, - cards[*c2].name)); -} - -static int compare_type(cdb_isdn_vario *v1, cdb_isdn_vario *v2) { - int x= v1->typ - v2->typ; - - if (!x) - x=v1->subtyp - v2->subtyp; - return(x); -} - -static int compare_id(const int *c1, const int *c2) { - int x = cards[*c1].vendor - cards[*c2].vendor; - - if (!x) - x = cards[*c1].device - - cards[*c2].device; - if (!x) - x = cards[*c1].subvendor - - cards[*c2].subvendor; - if (!x) - x = cards[*c1].subdevice - - cards[*c2].subdevice; - return(x); -} - -static char *add_name(const char *str, int merge) { - char *p; - int l; - - if (!str) - return(NULL); - if (merge) { - p = name_str; - while (*p) { - if (!strcmp(p, str)) - break; - p += strlen(p) +1; - if (p >= (name_str + max_name_str_cnt)) - return(NULL); - } - if (*p) - return(p); - } else { - p = name_str + name_str_cnt; - } - l = strlen(str) +1; - if ((p + l) >= (name_str + max_name_str_cnt)) - return(NULL); - strcpy(p, str); - name_str_cnt += l; - return(p); -} - -static char stmp[4096],sstmp[4096]; - -static char *add_lname(int v, const char *str) { - sprintf(stmp, "%s %s", vendors[v].shortname, str); - return(add_name(stmp, 1)); -} - -static char *add_name_list(const char *str, const char *list) { - if (!list || !list[0]) - return(add_name(str, 1)); - sprintf(stmp, "%s,%s", list, str); - return(add_name(stmp, 1)); -} - -static char *add_sortedname_list(const char *str, const char *list, const char *fmt) { - u_int v,i,flg=0; - char *t,*p; - if (!list || !list[0]) - return(add_name(str, 1)); - strncpy(stmp, list, 4096); - sscanf(str, fmt, &v); - p = sstmp; - t = strtok(stmp, ","); - while (t) { - sscanf(t, fmt, &i); - if (!flg && i>v) { - flg++; - p += sprintf(p, fmt, v); - *p++ = ','; - } - p += sprintf(p, fmt, i); - *p++ = ','; - t = strtok(NULL, ","); - } - if (!flg) - p += sprintf(p, fmt, v); - else - p--; - *p = 0; - return(add_name(sstmp, 1)); -} - -static int add_vendor(char *v, int card) { - int i,found = 0; - - for(i=0;i < ivendor_idx; i++) { - if (!strcmp(v, vendors[i].name)) { - vendors[i].refcnt++; - return(i); - } - } - if (ivendor_idx < max_ivendor) { - i=0; - while (_vendorshortnames[i].lname) { - if (!strcmp(v, _vendorshortnames[i].lname)) { - found++; - break; - } else if (!strcmp(v, _vendorshortnames[i].sname)) { - found++; - break; - } - i++; - } - if (found) { - if (!(vendors[ivendor_idx].name = add_name(_vendorshortnames[i].lname, 1))) - return(-1); - if (!(vendors[ivendor_idx].shortname = add_name(_vendorshortnames[i].sname, 1))) - return(-1); - } else { - char *p; - if (!(vendors[ivendor_idx].name = add_name(v, 1))) - return(-1); - p = strtok(v, " "); - if (p) { - if (!(vendors[ivendor_idx].shortname = add_name(p, 1))) - return(-1); - } else - vendors[ivendor_idx].shortname = vendors[ivendor_idx].name; - } - vendors[ivendor_idx].vnr = ivendor_idx; - vendors[ivendor_idx].refcnt++; - ivendor_idx++; - return(ivendor_idx-1); - } else - return(-1); -} - -static int new_vario(char *v, int c) { - - vario_idx++; - if (vario_idx>=max_vario) - return(-1); - drvid_cnt = 0; - drv_subtyp_cnt = 0; - drv_typ_cnt = 0; - not_supported = 0; - supported_cnt = 0; - if (!(varios[vario_idx].name = add_name(v, 1))) - return(-1); - if (cards[c].vario>0) { - varios[vario_idx-1].next_vario = vario_idx; - } else - cards[c].vario = vario_idx; - varios[vario_idx].handle = vario_idx; - varios[vario_idx].card_ref = c; - cards[c].vario_cnt++; - return(0); -} - -void del_vario(void) { - fprintf(stderr, "del_vario: %d %s\n", vario_idx, cards[varios[vario_idx].card_ref].name); - cards[varios[vario_idx].card_ref].vario_cnt--; - if (vario_idx>0) { - if (varios[vario_idx-1].next_vario == vario_idx) { - if (cards[varios[vario_idx].card_ref].vario_cnt == 1) - cards[varios[vario_idx].card_ref].vario = vario_idx-1; - varios[vario_idx-1].next_vario = 0; - } else if (cards[varios[vario_idx].card_ref].vario == vario_idx) { - cards[varios[vario_idx].card_ref].vario = 0; - } else { - fprintf(stderr, "del_vario:internal error\n"); - exit(98); - } - } - memset(&varios[vario_idx], 0, sizeof(cdb_isdn_vario)); - vario_idx--; -} - -int new_entry(void) { - if (not_supported) { - not_supported = 0; - fprintf(stderr, "new_entry:not_supported %s\n", cards[ce_idx].name); - if (cards[ce_idx].vario_cnt < 1) { - vendors[cards[ce_idx].vhandle].refcnt--; - memset(&cards[ce_idx], 0, sizeof(cdb_isdn_card)); - ce_idx--; - } - } - ce_idx++; - if (ce_idx >= max_ce) - return(1); - cards[ce_idx].handle = ce_idx; - cards[ce_idx].vendor = PCI_ANY_ID; - cards[ce_idx].device = PCI_ANY_ID; - cards[ce_idx].subvendor = PCI_ANY_ID; - cards[ce_idx].subdevice = PCI_ANY_ID; - return(0); -} - -void add_current_item(int item, char *val) { - int i; - char *old; - - if ((item != vario) && not_supported) - return; - switch (item) { - case vendor: - i = add_vendor(val, ce_idx); - if (i<0) { - fprintf(stderr, "error in add_vendor %s\n", val); - exit(100); - } - cards[ce_idx].vhandle = i; - break; - case device: - cards[ce_idx].name = add_name(val, 1); - if (!cards[ce_idx].name) { - fprintf(stderr, "error in add_name %s\n", val); - exit(101); - } - cards[ce_idx].lname = add_lname(cards[ce_idx].vhandle, val); - if (!cards[ce_idx].lname) { - fprintf(stderr, "error in add_lname %s\n", val); - exit(101); - } - break; - case vendor_id: - i = sscanf(val,"%x", &cards[ce_idx].vendor); - if (i!=1) { - fprintf(stderr, "error to hex %s\n", val); - exit(102); - } - break; - case device_id: - i = sscanf(val,"%x", &cards[ce_idx].device); - if (i!=1) { - fprintf(stderr, "error to hex %s\n", val); - exit(102); - } - break; - case subvendor_id: - i = sscanf(val,"%x", &cards[ce_idx].subvendor); - if (i!=1) { - fprintf(stderr, "error to hex %s\n", val); - exit(102); - } - break; - case subdevice_id: - i = sscanf(val,"%x", &cards[ce_idx].subdevice); - if (i!=1) { - fprintf(stderr, "error to hex %s\n", val); - exit(102); - } - break; - case device_class: - cards[ce_idx].Class = add_name(val, 1); - if (!cards[ce_idx].name) { - fprintf(stderr, "error in add_name %s\n", val); - exit(101); - } - break; - case bus_type: - cards[ce_idx].bus = add_name(val, 1); - if (!cards[ce_idx].name) { - fprintf(stderr, "error in add_name %s\n", val); - exit(101); - } - break; - case vario: - if (new_vario(val, ce_idx)) { - fprintf(stderr, "error in new_vario(%s, %d)\n", val, ce_idx); - exit(103); - } - break; - case SMP: - if (!strcasecmp(val, "no")) - varios[vario_idx].smp = 0; - else if (!strcasecmp(val, "yes")) - varios[vario_idx].smp = 1; - break; - case drv_id: - if (drvid_cnt) { - fprintf(stderr, "more as one drvid_cnt (%s) card (%s)\n", val, cards[ce_idx].name); - } else { - i = sscanf(val,"%x", &varios[vario_idx].drvid); - if (i!=1) { - fprintf(stderr, "error to hex %s\n", val); - exit(102); - } - } - drvid_cnt++; - break; - case drv_subtyp: - if (drv_subtyp_cnt) { - fprintf(stderr, "more as one drv_subtyp (%s) card (%s)\n", val, cards[ce_idx].name); - } else { - i = sscanf(val,"%d", &varios[vario_idx].subtyp); - if (i!=1) { - fprintf(stderr, "error to decimal %s\n", val); - exit(104); - } - } - drv_subtyp_cnt++; - break; - case drv_typ: - if (drv_typ_cnt) { - fprintf(stderr, "more as one drv_typ (%s) card (%s)\n", val, cards[ce_idx].name); - } else { - i = sscanf(val,"%d", &varios[vario_idx].typ); - if (i!=1) { - fprintf(stderr, "error to decimal %s\n", val); - exit(104); - } - } - drv_typ_cnt++; - break; - case interface: - varios[vario_idx].interface = add_name_list(val, varios[vario_idx].interface); - break; - case line_cnt: - i = sscanf(val,"%d", &cards[ce_idx].line_cnt); - if (i!=1) { - fprintf(stderr, "error to hex %s\n", val); - exit(102); - } - break; - case line_protocol: - varios[vario_idx].protocol = add_name_list(val, varios[vario_idx].protocol); - break; - case module: - varios[vario_idx].mod_name = add_name(val, 1); - break; - case need_packages: - varios[vario_idx].need_pkg = add_name_list(val, varios[vario_idx].need_pkg); - break; - case supported: - if (supported_cnt) - fprintf(stderr, "more as one supported entry (%s) vendor(%s) card(%s)\n", val, - vendors[cards[ce_idx].vhandle].name, cards[ce_idx].name); - if (!strcasecmp(val, "not")) { - not_supported = 1; - del_vario(); - } - supported_cnt++; - break; - case feature: - varios[vario_idx].features = add_name_list(val, varios[vario_idx].features); - break; - case info: - old = name_str + name_str_cnt; - varios[vario_idx].info = add_name(val, 1); - if (old == varios[vario_idx].info) - fprintf(stderr, "info(%s): %s\n", cards[ce_idx].name, varios[vario_idx].info); - break; - case special: - break; - case firmware: - varios[vario_idx].firmware = add_name(val, 1); - break; - case short_description: - old = name_str + name_str_cnt; - varios[vario_idx].description = add_name(val, 1); - if (old == varios[vario_idx].description) - fprintf(stderr, "description(%s): %s\n", cards[ce_idx].name, varios[vario_idx].description); - break; - case IRQ: - varios[vario_idx].irq = add_sortedname_list(val, varios[vario_idx].irq, "%d"); - break; - case IO: - varios[vario_idx].io = add_sortedname_list(val, varios[vario_idx].io, "0x%x"); - break; - case MEMBASE: - varios[vario_idx].membase = add_sortedname_list(val, varios[vario_idx].membase, "0x%x"); - break; - case alternative_name: - break; - case revision: - i = sscanf(val,"%x", &cards[ce_idx].revision); - if (i!=1) { - fprintf(stderr, "error to hex %s\n", val); - exit(102); - } - if ((cards[ce_idx].subvendor == PCI_ANY_ID) && - (cards[ce_idx].subdevice == PCI_ANY_ID)) - cards[ce_idx].subvendor = cards[ce_idx].revision; - break; - } -} - -void SortVendors(void) { - int v,c; - - qsort(vendors, ivendor_idx, sizeof(cdb_isdn_vendor), (fcmp)compare_vendor); - /* readjust card data */ - for (c = 1; c <= ce_idx; c++) { - for (v = 0; v < ivendor_idx; v++) { - if (cards[c].vhandle == vendors[v].vnr) { - cards[c].vhandle = v; - break; - } - } - } - /* now adjust own handle */ - for (v = 0; v < ivendor_idx; v++) { - vendors[v].vnr = v; - } -} - -void SortCards(void) { - int v,c; - - qsort(&cards[1], ce_idx, sizeof(cdb_isdn_card), (fcmp)compare_card); - /* readjust vario data */ - for (v = 1; v <= vario_idx; v++) { - for (c = 1; c <= ce_idx; c++) { - if (cards[c].handle == varios[v].card_ref) { - varios[v].card_ref = c; - break; - } - } - } - /* now adjust own handle */ - for (c = 0; c <= ce_idx; c++) { - cards[c].handle = c; - } - isdncard_id = malloc(ce_idx*sizeof(int)); - if (!isdncard_id) { - fprintf(stderr, "no mem for isdncard_id (%d entries)\n", ce_idx); - exit(97); - } - for (c = 0; c < ce_idx; c++) - isdncard_id[c] = c + 1; - qsort(isdncard_id, ce_idx, sizeof(int), (fcmp)compare_id); -} - -void SortVarios(void) { - int v,c,i; - - qsort(&varios[1], vario_idx, sizeof(cdb_isdn_vario), (fcmp)compare_type); - /* readjust vario data */ - for (v = 1; v <= vario_idx; v++) { - if (varios[v].next_vario) { - for (i = 1; i <= vario_idx; i++) { - if (varios[i].handle == varios[v].next_vario) { - varios[v].next_vario = i; - break; - } - } - } - } - /* readjust card data */ - for (c = 1; c <= ce_idx; c++) { - for (v = 1; v <= vario_idx; v++) { - if (varios[v].handle == cards[c].vario) { - cards[c].vario = v; - break; - } - } - } - /* now adjust own handle */ - for (v = 1; v <= vario_idx; v++) { - varios[v].handle = v; - } -} - diff --git a/src/hwinfo/src/isdn/cdb/cdb_read.h b/src/hwinfo/src/isdn/cdb/cdb_read.h deleted file mode 100644 index 3eb01e6e6b..0000000000 --- a/src/hwinfo/src/isdn/cdb/cdb_read.h +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include -#include -#include -#include -#include "isdn_cdb_def.h" -#include "hd.h" - -#define CDB_DATAVERSION 0x101 -#define MAXCARDS 300 -#define MAXVARIO (MAXCARDS*4) -#define MAXNAMECNT (MAXCARDS*256) - -extern int max_ce; -extern int ce_idx; -extern int max_vario; -extern int vario_idx; -extern int name_str_cnt; -extern int max_name_str_cnt; -extern int max_ivendor; -extern int ivendor_idx; - -extern char *name_str; -extern cdb_isdn_card *cards; -extern cdb_isdn_vario *varios; -extern cdb_isdn_vendor *vendors; - -extern int *isdncard_id; - -extern int drvid_cnt; -extern int drv_subtyp_cnt; -extern int drv_typ_cnt; -extern int supported_cnt; - -extern int not_supported; - -struct _vendorshortnames_t { - char *lname; - char *sname; -}; - -typedef int (*fcmp) (const void *, const void *); - - -extern void del_vario(void); -extern int new_entry(void); -extern void add_current_item(int item, char *val); -extern void SortVendors(void); -extern void SortCards(void); -extern void SortVarios(void); diff --git a/src/hwinfo/src/isdn/cdb/isdn_cdb.c b/src/hwinfo/src/isdn/cdb/isdn_cdb.c deleted file mode 100644 index 3404075f9f..0000000000 --- a/src/hwinfo/src/isdn/cdb/isdn_cdb.c +++ /dev/null @@ -1,244 +0,0 @@ -#include -#include -#include -#include -#include -#include "lex.yy.c" -#include "hd.h" -#include "cdb_read.h" - -int yywrap(void) { - return(1); -} - -static int WriteVendors(FILE *f) { - int i; - - fprintf(f, "/* vendor database */\n"); - fprintf(f,"static cdb_isdn_vendor cdb_isdnvendor_info_init[] = {\n"); - for (i=0; i < ivendor_idx; i++) { - fprintf(f," {"); - if (vendors[i].name) - fprintf(f,"\"%s\",", vendors[i].name); - else - fprintf(f,"\"\","); - if (vendors[i].shortname) - fprintf(f,"\"%s\",", vendors[i].shortname); - else - fprintf(f,"\"\","); - fprintf(f,"%d,",vendors[i].vnr); - fprintf(f,"%d",vendors[i].refcnt); - fprintf(f,"},\n"); - } - fprintf(f,"};\n"); - return(0); -} - -static int WriteCards(FILE *f) { - int i; - - fprintf(f, "/* card database */\n"); - fprintf(f,"static cdb_isdn_card cdb_isdncard_info_init[] = {\n"); - for (i=0; i <= ce_idx; i++) { - fprintf(f," {"); - fprintf(f,"%d,",cards[i].handle); - fprintf(f,"%d,",cards[i].vhandle); - if (cards[i].name) - fprintf(f,"\"%s\",", cards[i].name); - else - fprintf(f,"\"\","); - if (cards[i].lname) - fprintf(f,"\"%s\",", cards[i].lname); - else - fprintf(f,"\"\","); - if (cards[i].Class) - fprintf(f,"\"%s\",",cards[i].Class); - else - fprintf(f,"NULL,"); - if (cards[i].bus) - fprintf(f,"\"%s\",",cards[i].bus); - else - fprintf(f,"NULL,"); - fprintf(f,"%d,",cards[i].revision); - fprintf(f,"%d,",cards[i].vendor); - fprintf(f,"%d,",cards[i].device); - fprintf(f,"%d,",cards[i].subvendor); - fprintf(f,"%d,",cards[i].subdevice); - fprintf(f,"%d,",cards[i].features); - fprintf(f,"%d,",cards[i].line_cnt); - fprintf(f,"%d,",cards[i].vario_cnt); - fprintf(f,"%d",cards[i].vario); - fprintf(f,"},\n"); - } - fprintf(f,"};\n"); - fprintf(f,"static int cdb_isdncard_idsorted_init[] = {"); - for (i=0; i < ce_idx; i++) { - if (!(i%8)) - fprintf(f,"\n "); - fprintf(f,"%d,",isdncard_id[i]); - } - fprintf(f,"\n};\n"); - return(0); -} - -static int WriteVarios(FILE *f) { - int i; - - fprintf(f, "/* driver database */\n"); - fprintf(f,"static cdb_isdn_vario cdb_isdnvario_info_init[] = {\n"); - for (i=0; i <= vario_idx; i++) { - fprintf(f," {"); - fprintf(f,"%d,",varios[i].handle); - fprintf(f,"%d,",varios[i].next_vario); - fprintf(f,"%d,",varios[i].drvid); - fprintf(f,"%d,",varios[i].typ); - fprintf(f,"%d,",varios[i].subtyp); - fprintf(f,"%d,",varios[i].smp); - if (varios[i].mod_name) - fprintf(f,"\"%s\",", varios[i].mod_name); - else - fprintf(f,"\"\","); - if (varios[i].para_str) - fprintf(f,"\"%s\",", varios[i].para_str); - else - fprintf(f,"\"\","); - if (varios[i].mod_preload) - fprintf(f,"\"%s\",", varios[i].mod_preload); - else - fprintf(f,"\"\","); - if (varios[i].cfg_prog) - fprintf(f,"\"%s\",", varios[i].cfg_prog); - else - fprintf(f,"\"\","); - if (varios[i].firmware) - fprintf(f,"\"%s\",", varios[i].firmware); - else - fprintf(f,"\"\","); - if (varios[i].description) - fprintf(f,"\"%s\",", varios[i].description); - else - fprintf(f,"\"\","); - if (varios[i].need_pkg) - fprintf(f,"\"%s\",", varios[i].need_pkg); - else - fprintf(f,"\"\","); - if (varios[i].info) - fprintf(f,"\"%s\",", varios[i].info); - else - fprintf(f,"\"\","); - if (varios[i].protocol) - fprintf(f,"\"%s\",", varios[i].protocol); - else - fprintf(f,"\"\","); - if (varios[i].interface) - fprintf(f,"\"%s\",", varios[i].interface); - else - fprintf(f,"\"\","); - if (varios[i].io) - fprintf(f,"\"%s\",", varios[i].io); - else - fprintf(f,"\"\","); - if (varios[i].irq) - fprintf(f,"\"%s\",", varios[i].irq); - else - fprintf(f,"\"\","); - if (varios[i].membase) - fprintf(f,"\"%s\",", varios[i].membase); - else - fprintf(f,"\"\","); - if (varios[i].features) - fprintf(f,"\"%s\",", varios[i].features); - else - fprintf(f,"\"\","); - fprintf(f,"%d,",varios[i].card_ref); - if (varios[i].name) - fprintf(f,"\"%s\"", varios[i].name); - else - fprintf(f,"\"\""); - fprintf(f,"},\n"); - } - fprintf(f,"};\n"); - return(0); -} - -int main(argc,argv) -int argc; -char **argv; -{ - char line[256]; - int l; - time_t tim; - if (argc<2) { - fprintf(stderr, "Error no filename\n"); - exit(1); - } - if (!(stdin=freopen(argv[1],"rb", stdin))) { - fprintf(stderr, "Cannot open %s as stdin\n", argv[1]); - exit(2); - } - if (argc >2) { - if (!(stdout=freopen(argv[2],"w", stdout))) { - fprintf(stderr, "Cannot open %s as stdout\n", argv[2]); - exit(3); - } - } - cards = calloc(max_ce, sizeof(cdb_isdn_card)); - if (!cards) { - fprintf(stderr, "cannot alloc card\n"); - fclose(stdin); - exit(4); - } - varios = calloc(max_vario, sizeof(cdb_isdn_vario)); - if (!varios) { - fprintf(stderr, "cannot alloc vario\n"); - fclose(stdin); - free(cards); - exit(5); - } - name_str = calloc(max_name_str_cnt, 1); - if (!name_str) { - fprintf(stderr, "cannot alloc name_str\n"); - fclose(stdin); - free(cards); - free(varios); - exit(6); - } - vendors = calloc(max_ivendor, sizeof(cdb_isdn_vendor)); - if (!vendors) { - fprintf(stderr, "cannot alloc vendors\n"); - fclose(stdin); - free(cards); - free(varios); - free(name_str); - exit(7); - } - BEGIN Main; - yylex(); - - SortVendors(); - SortCards(); - SortVarios(); - - fprintf(stdout, "/* CDBISDN database */\n"); - fprintf(stdout,"const int CDBISDN_DBVERSION = 0x%x;\n", CDB_DATAVERSION); - time(&tim); - strcpy(line,ctime(&tim)); - l = strlen(line); - if (l) - line[l-1] = 0; - fprintf(stdout,"const char CDBISDN_DATE[] = \"%s\";\n", line); - WriteVendors(stdout); - WriteCards(stdout); - WriteVarios(stdout); - - fclose(stdin); - free(cards); - free(name_str); - free(vendors); - free(varios); - fprintf(stderr, "used cards(%d/%d)\n", ce_idx, max_ce); - fprintf(stderr, "used varios(%d/%d)\n", vario_idx, max_vario); - fprintf(stderr, "used vendors(%d/%d)\n", ivendor_idx, max_ivendor); - fprintf(stderr, "used name_str(%d/%d)\n",name_str_cnt, max_name_str_cnt); - return(0); -} diff --git a/src/hwinfo/src/isdn/cdb/isdn_cdb.lex b/src/hwinfo/src/isdn/cdb/isdn_cdb.lex deleted file mode 100644 index 15f1653d6f..0000000000 --- a/src/hwinfo/src/isdn/cdb/isdn_cdb.lex +++ /dev/null @@ -1,64 +0,0 @@ -WSP [ \t] -VALCHAR [^\|] - -%START Main NextLine NewEntry Value - -%{ -#include "isdn_cdb_def.h" -%} -%% - int item = 0; - -
{ -# BEGIN NextLine; -^\| { - if (new_entry()) - exit(99); - BEGIN NewEntry; - } -^{WSP}+ ; -\n ; -} - -{ -.* ; -\n BEGIN Main; -} - -{ -vendor= {item=vendor; BEGIN Value;} -device= {item=device; BEGIN Value;} -vendor_id= {item=vendor_id; BEGIN Value;} -device_id= {item=device_id; BEGIN Value;} -subvendor_id= {item=subvendor_id; BEGIN Value;} -subdevice_id= {item=subdevice_id; BEGIN Value;} -device_class= {item=device_class; BEGIN Value;} -bus_type= {item=bus_type; BEGIN Value;} -vario= {item=vario; BEGIN Value;} -SMP= {item=SMP; BEGIN Value;} -drv_id= {item=drv_id; BEGIN Value;} -drv_subtyp= {item=drv_subtyp; BEGIN Value;} -drv_typ= {item=drv_typ; BEGIN Value;} -[iI]nterface= {item=interface; BEGIN Value;} -line_cnt= {item=line_cnt; BEGIN Value;} -line_protocol= {item=line_protocol; BEGIN Value;} -module= {item=module; BEGIN Value;} -need_packages= {item=need_packages; BEGIN Value;} -supported= {item=supported; BEGIN Value;} -feature= {item=feature; BEGIN Value;} -info= {item=info; BEGIN Value;} -special= {item=special; BEGIN Value;} -firmware= {item=firmware; BEGIN Value;} -short_description= {item=short_description; BEGIN Value;} -IRQ= {item=IRQ; BEGIN Value;} -IO= {item=IO; BEGIN Value;} -MEMBASE= {item=MEMBASE; BEGIN Value;} -alternative_name= {item=alternative_name; BEGIN Value;} -revision= {item=revision; BEGIN Value;} -\n BEGIN Main; -} - -{ -\| BEGIN NewEntry; -{VALCHAR}*/\| add_current_item(item, yytext); -} diff --git a/src/hwinfo/src/isdn/cdb/isdn_cdb_def.h b/src/hwinfo/src/isdn/cdb/isdn_cdb_def.h deleted file mode 100644 index 10da231dd1..0000000000 --- a/src/hwinfo/src/isdn/cdb/isdn_cdb_def.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef ISDN_CDB_DEF -#define ISDN_CDB_DEF - -enum { - vendor, - device, - vendor_id, - device_id, - subvendor_id, - subdevice_id, - revision, - device_class, - bus_type, - vario, - SMP, - drv_id, - drv_subtyp, - drv_typ, - interface, - line_cnt, - line_protocol, - module, - need_packages, - supported, - feature, - info, - special, - firmware, - short_description, - IRQ, - IO, - MEMBASE, - alternative_name, -}; - -extern void add_current_item(int, char *); -extern int new_entry(void); - -#endif /* ISDN_CDB_DEF */ diff --git a/src/hwinfo/src/isdn/cdb/mk_isdnhwdb.c b/src/hwinfo/src/isdn/cdb/mk_isdnhwdb.c deleted file mode 100644 index d5dc95e5f3..0000000000 --- a/src/hwinfo/src/isdn/cdb/mk_isdnhwdb.c +++ /dev/null @@ -1,293 +0,0 @@ -#include -#include -#include -#include -#include -#include "lex.yy.c" -#include "hd.h" -#include "cdb_read.h" -#include "cdb_hwdb.h" - - -int yywrap(void) { - return(1); -} - -static int WriteNames(FILE *f) { - char *p, *e; - int l, nc=0; - - fprintf(f, "! name data\n"); - fprintf(f, "$%02d %d\n", IWHREC_TYPE_NAME_SIZE, name_str_cnt); - p = e = name_str; - e += name_str_cnt; - while (p < e) { - l = strlen(p); - fprintf(f, "$%02d %s\n", IWHREC_TYPE_NAME_DATA, p); - p += l + 1; - nc++; - } - fprintf(f, "$%02d %d\n", IWHREC_TYPE_NAME_COUNT, nc); - return(0); -} - -static int WriteVendors(FILE *f) { - int i, nullidx, idx; - - fprintf(f, "! vendor database\n"); - fprintf(f, "$%02d %d\n", IWHREC_TYPE_VENDOR_COUNT, ivendor_idx); - nullidx = strlen(name_str); /* first 0 in string array */ - for (i=0; i < ivendor_idx; i++) { - fprintf(f,"$%02d ", IWHREC_TYPE_VENDOR_RECORD); - if (vendors[i].name && vendors[i].name[0]) - idx = vendors[i].name - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (vendors[i].shortname && vendors[i].shortname[0]) - idx = vendors[i].shortname - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - fprintf(f,"%d ", vendors[i].vnr); - fprintf(f,"%d\n",vendors[i].refcnt); - } - return(0); -} - -static int WriteCards(FILE *f) { - int i, nullidx, idx; - - fprintf(f, "! card database\n"); - fprintf(f, "$%02d %d\n", IWHREC_TYPE_CARD_COUNT, ce_idx); - nullidx = strlen(name_str); /* first 0 in string array */ - - for (i=0; i <= ce_idx; i++) { - fprintf(f,"$%02d ", IWHREC_TYPE_CARD_RECORD); - fprintf(f,"%d ",cards[i].handle); - fprintf(f,"%d ",cards[i].vhandle); - if (cards[i].name && cards[i].name[0]) - idx = cards[i].name - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (cards[i].lname && cards[i].lname[0]) - idx = cards[i].lname - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (cards[i].Class && cards[i].Class[0]) - idx = cards[i].Class - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (cards[i].bus && cards[i].bus[0]) - idx = cards[i].bus - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - fprintf(f,"%d ",cards[i].revision); - fprintf(f,"%d ",cards[i].vendor); - fprintf(f,"%d ",cards[i].device); - fprintf(f,"%d ",cards[i].subvendor); - fprintf(f,"%d ",cards[i].subdevice); - fprintf(f,"%d ",cards[i].features); - fprintf(f,"%d ",cards[i].line_cnt); - fprintf(f,"%d ",cards[i].vario_cnt); - fprintf(f,"%d\n",cards[i].vario); - } - for (i=0; i < ce_idx; i++) { - fprintf(f,"$%02d %d\n", IWHREC_TYPE_CARD_IDSORTED, isdncard_id[i]); - } - return(0); -} - -static int WriteVarios(FILE *f) { - int i, nullidx, idx; - - fprintf(f, "! driver database\n"); - fprintf(f, "$%02d %d\n", IWHREC_TYPE_VARIO_COUNT, vario_idx); - nullidx = strlen(name_str); /* first 0 in string array */ - - for (i=0; i <= vario_idx; i++) { - fprintf(f,"$%02d ", IWHREC_TYPE_VARIO_RECORD); - fprintf(f,"%d ",varios[i].handle); - fprintf(f,"%d ",varios[i].next_vario); - fprintf(f,"%d ",varios[i].drvid); - fprintf(f,"%d ",varios[i].typ); - fprintf(f,"%d ",varios[i].subtyp); - fprintf(f,"%d ",varios[i].smp); - if (varios[i].mod_name && varios[i].mod_name[0]) - idx = varios[i].mod_name - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].para_str && varios[i].para_str[0]) - idx = varios[i].para_str - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].mod_preload && varios[i].mod_preload[0]) - idx = varios[i].mod_preload - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].cfg_prog && varios[i].cfg_prog[0]) - idx = varios[i].cfg_prog - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].firmware && varios[i].firmware[0]) - idx = varios[i].firmware - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].description && varios[i].description[0]) - idx = varios[i].description - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].need_pkg && varios[i].need_pkg[0]) - idx = varios[i].need_pkg - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].info && varios[i].info[0]) - idx = varios[i].info - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].protocol && varios[i].protocol[0]) - idx = varios[i].protocol - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].interface && varios[i].interface[0]) - idx = varios[i].interface - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].io && varios[i].io[0]) - idx = varios[i].io - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].irq && varios[i].irq[0]) - idx = varios[i].irq - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].membase && varios[i].membase[0]) - idx = varios[i].membase - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - if (varios[i].features && varios[i].features[0]) - idx = varios[i].features - name_str; - else - idx = nullidx; - fprintf(f,"%x ", idx); - fprintf(f,"%d ",varios[i].card_ref); - if (varios[i].name && varios[i].name[0]) - idx = varios[i].name - name_str; - else - idx = nullidx; - fprintf(f,"%x\n", idx); - } - return(0); -} - -int main(argc,argv) -int argc; -char **argv; -{ - char line[256]; - int l; - time_t tim; - if (argc<2) { - if (!(stdin=freopen(CDBISDN_CDB_FILE,"rb", stdin))) { - fprintf(stderr, "Cannot open %s as stdin\n", CDBISDN_CDB_FILE); - exit(2); - } - } else { - if (!(stdin=freopen(argv[1],"rb", stdin))) { - fprintf(stderr, "Cannot open %s as stdin\n", argv[1]); - exit(2); - } - } - if (argc >2) { - if (strcmp(argv[2], "-")) { /* - := stdout */ - if (!(stdout=freopen(argv[2],"w", stdout))) { - fprintf(stderr, "Cannot open %s as stdout\n", argv[2]); - exit(3); - } - } - } else { /* default: CDBISDN_HWDB_FILE */ - if (!(stdout=freopen(CDBISDN_HWDB_FILE,"w", stdout))) { - fprintf(stderr, "Cannot open %s as stdout\n", CDBISDN_HWDB_FILE); - exit(3); - } - } - cards = calloc(max_ce, sizeof(cdb_isdn_card)); - if (!cards) { - fprintf(stderr, "cannot alloc card\n"); - fclose(stdin); - exit(4); - } - varios = calloc(max_vario, sizeof(cdb_isdn_vario)); - if (!varios) { - fprintf(stderr, "cannot alloc vario\n"); - fclose(stdin); - free(cards); - exit(5); - } - name_str = calloc(max_name_str_cnt, 1); - if (!name_str) { - fprintf(stderr, "cannot alloc name_str\n"); - fclose(stdin); - free(cards); - free(varios); - exit(6); - } - vendors = calloc(max_ivendor, sizeof(cdb_isdn_vendor)); - if (!vendors) { - fprintf(stderr, "cannot alloc vendors\n"); - fclose(stdin); - free(cards); - free(varios); - free(name_str); - exit(7); - } - BEGIN Main; - yylex(); - - SortVendors(); - SortCards(); - SortVarios(); - - fprintf(stdout, "! CDBISDN database version %x\n", CDB_DATAVERSION + 1); - fprintf(stdout, "! file is build with mk_isdnhwdb\n"); - fprintf(stdout, "! Do not change this file !!!\n"); - fprintf(stdout,"$%02d %d\n", IWHREC_TYPE_VERSION, CDB_DATAVERSION + 1); - time(&tim); - strcpy(line,ctime(&tim)); - l = strlen(line); - if (l) - line[l-1] = 0; - fprintf(stdout,"$%02d %s\n", IWHREC_TYPE_DATE, line); - WriteNames(stdout); - WriteVendors(stdout); - WriteCards(stdout); - WriteVarios(stdout); - - fclose(stdin); - free(cards); - free(name_str); - free(vendors); - free(varios); - fprintf(stderr, "used cards(%d/%d)\n", ce_idx, max_ce); - fprintf(stderr, "used varios(%d/%d)\n", vario_idx, max_vario); - fprintf(stderr, "used vendors(%d/%d)\n", ivendor_idx, max_ivendor); - fprintf(stderr, "used name_str(%d/%d)\n",name_str_cnt, max_name_str_cnt); - return(0); -} diff --git a/src/hwinfo/src/isdn/cdbisdn.c b/src/hwinfo/src/isdn/cdbisdn.c deleted file mode 100644 index f793eb4040..0000000000 --- a/src/hwinfo/src/isdn/cdbisdn.c +++ /dev/null @@ -1,400 +0,0 @@ -#include -#include -#include -#include -#include "hd.h" -#include "hd_int.h" - -#define debprintf(a...) -// #define debprintf(a...) fprintf(stderr, ## a) - -/* private data */ - -#include "cdb/isdn_cdb.h" -#include "cdb/cdb_hwdb.h" - -static int CDBISDN_vendor_cnt; -static int CDBISDN_card_cnt; -static int CDBISDN_vario_cnt; -static int CDBISDN_name_size; -static char *CDBISDN_names; - -static cdb_isdn_vendor *cdb_isdnvendor_info; -static cdb_isdn_card *cdb_isdncard_info; -static int *cdb_isdncard_idsorted; -static cdb_isdn_vario *cdb_isdnvario_info; -static int cdb_dbversion; -static char cdb_date[32]; - -static char line[1024]; - -static int CDBISDN_readhwdb; - -static int -init_cdbisdn(void) -{ - FILE *cdb; - char *s, *p = NULL; - int rectyp, l, cnt = 0, icnt = 0; - - cdb = fopen(CDBISDN_HWDB_FILE, "rb"); - if (!cdb) { - debprintf("open failure %s\n", CDBISDN_HWDB_FILE); - goto fallback; - } - while (!feof(cdb)) { - s = fgets(line, 1024, cdb); - if (!s) - break; - if (!s[0] || s[0] == '!' || s[0] == '#' || s[0] == '\n') - continue; - if (s[0] != '$') { - debprintf("got wrong line %s\n", s); - continue; - } - sscanf(s, "$%d", &rectyp); - switch(rectyp) { - case IWHREC_TYPE_VERSION: - sscanf(s + 4, "%d", &cdb_dbversion); - break; - case IWHREC_TYPE_DATE: - l = strlen(s + 4); - if (!l) - continue; - l--; - if (l > 31) - l = 31; - strncpy(cdb_date, s + 4, l); - cdb_date[l] = 0; - break; - case IWHREC_TYPE_NAME_SIZE: - sscanf(s + 4, "%d", &CDBISDN_name_size); - CDBISDN_names = calloc(CDBISDN_name_size + 1, 1); - if (!CDBISDN_names) { - debprintf("fail to allocate %d bytes for CDBISDN_names\n", CDBISDN_name_size); - goto fallback_close; - } - p = CDBISDN_names; - cnt = 0; - icnt = 0; - break; - case IWHREC_TYPE_NAME_DATA: - if (!p) - goto fallback_close; - l = strlen(s + 4); - icnt += l; - if (icnt > CDBISDN_name_size) { - debprintf("name_size overflow %d/%d\n", icnt, CDBISDN_name_size); - goto fallback_close; - } - strcpy(p, s + 4); - p[l-1] = 0; - p += l; - cnt++; - break; - case IWHREC_TYPE_NAME_COUNT: - sscanf(s + 4, "%d", &l); - if (cnt != l) - goto fallback_close; - break; - case IWHREC_TYPE_VENDOR_COUNT: - sscanf(s + 4, "%d", &CDBISDN_vendor_cnt); - cdb_isdnvendor_info = calloc(CDBISDN_vendor_cnt, sizeof(cdb_isdn_vendor)); - if (!cdb_isdnvendor_info) { - debprintf("fail to allocate %d vendor structs\n", CDBISDN_vendor_cnt); - goto fallback_close; - } - cnt = 0; - break; - case IWHREC_TYPE_VENDOR_RECORD: - if (cnt >= CDBISDN_vendor_cnt) { - debprintf("vendor overflow %d/%d\n", cnt, CDBISDN_vendor_cnt); - goto fallback_close; - } - l = sscanf(s + 4, "%p %p %d %d", - &cdb_isdnvendor_info[cnt].name, - &cdb_isdnvendor_info[cnt].shortname, - &cdb_isdnvendor_info[cnt].vnr, - &cdb_isdnvendor_info[cnt].refcnt); - if (l != 4) { - debprintf("error reading vendor record %s\n", s); - goto fallback_close; - } - cdb_isdnvendor_info[cnt].name = CDBISDN_names + (u_long)cdb_isdnvendor_info[cnt].name; - cdb_isdnvendor_info[cnt].shortname = CDBISDN_names + (u_long)cdb_isdnvendor_info[cnt].shortname; - cnt++; - break; - case IWHREC_TYPE_CARD_COUNT: - sscanf(s + 4, "%d", &CDBISDN_card_cnt); - cdb_isdncard_info = calloc(CDBISDN_card_cnt + 1, sizeof(cdb_isdn_card)); - cdb_isdncard_idsorted = calloc(CDBISDN_card_cnt, sizeof(int)); - if (!cdb_isdncard_info || !cdb_isdncard_idsorted) { - debprintf("fail to allocate %d vendor structs\n", CDBISDN_card_cnt); - goto fallback_close; - } - cnt = 0; - icnt = 0; - break; - case IWHREC_TYPE_CARD_RECORD: - if (cnt > CDBISDN_card_cnt) { - debprintf("card overflow %d/%d\n", cnt, CDBISDN_card_cnt); - goto fallback_close; - } - l = sscanf(s + 4, "%d %d %p %p %p %p %d %d %d %d %d %d %d %d %d", - &cdb_isdncard_info[cnt].handle, /* internal identifier idx in database */ - &cdb_isdncard_info[cnt].vhandle, /* internal identifier to vendor database */ - &cdb_isdncard_info[cnt].name, /* cardname */ - &cdb_isdncard_info[cnt].lname, /* vendor short name + cardname */ - &cdb_isdncard_info[cnt].Class, /* CLASS of the card */ - &cdb_isdncard_info[cnt].bus, /* bus type */ - &cdb_isdncard_info[cnt].revision, /* revision used with USB */ - &cdb_isdncard_info[cnt].vendor, /* Vendor ID for ISAPNP and PCI cards */ - &cdb_isdncard_info[cnt].device, /* Device ID for ISAPNP and PCI cards */ - &cdb_isdncard_info[cnt].subvendor, /* Subvendor ID for PCI cards */ - &cdb_isdncard_info[cnt].subdevice, /* Subdevice ID for PCI cards */ - &cdb_isdncard_info[cnt].features, /* feature flags */ - &cdb_isdncard_info[cnt].line_cnt, /* count of ISDN ports */ - &cdb_isdncard_info[cnt].vario_cnt, /* count of driver varios */ - &cdb_isdncard_info[cnt].vario); /* referenz to driver vario record */ - if (l != 15) { - debprintf("error reading card record %s\n", s); - goto fallback_close; - } - cdb_isdncard_info[cnt].name = CDBISDN_names + (u_long)cdb_isdncard_info[cnt].name; - cdb_isdncard_info[cnt].lname = CDBISDN_names + (u_long)cdb_isdncard_info[cnt].lname; - cdb_isdncard_info[cnt].Class = CDBISDN_names + (u_long)cdb_isdncard_info[cnt].Class; - cdb_isdncard_info[cnt].bus = CDBISDN_names + (u_long)cdb_isdncard_info[cnt].bus; - cnt++; - break; - case IWHREC_TYPE_CARD_IDSORTED: - if (icnt >= CDBISDN_card_cnt) { - debprintf("card overflow %d/%d\n", icnt, CDBISDN_card_cnt); - goto fallback_close; - } - sscanf(s + 4, "%d", &cdb_isdncard_idsorted[icnt]); - icnt++; - break; - case IWHREC_TYPE_VARIO_COUNT: - sscanf(s + 4, "%d", &CDBISDN_vario_cnt); - cdb_isdnvario_info = calloc(CDBISDN_vario_cnt+1, sizeof(cdb_isdn_vario)); - if (!cdb_isdnvario_info) { - debprintf("fail to allocate %d vario structs\n", CDBISDN_vario_cnt); - goto fallback_close; - } - cnt = 0; - break; - case IWHREC_TYPE_VARIO_RECORD: - if (cnt > CDBISDN_vario_cnt) { - debprintf("vario overflow %d/%d\n", cnt, CDBISDN_vario_cnt); - goto fallback_close; - } - l = sscanf(s + 4, "%d %d %d %d %d %d %p %p %p %p %p %p %p %p %p %p %p %p %p %p %d %p", - &cdb_isdnvario_info[cnt].handle, /* idx in database */ - &cdb_isdnvario_info[cnt].next_vario, /* link to alternate vario */ - &cdb_isdnvario_info[cnt].drvid, /* unique id of the driver vario */ - &cdb_isdnvario_info[cnt].typ, /* Type to identify the driver */ - &cdb_isdnvario_info[cnt].subtyp, /* Subtype of the driver type */ - &cdb_isdnvario_info[cnt].smp, /* SMP supported ? */ - &cdb_isdnvario_info[cnt].mod_name, /* name of the driver module */ - &cdb_isdnvario_info[cnt].para_str, /* optional parameter string */ - &cdb_isdnvario_info[cnt].mod_preload, /* optional modules to preload */ - &cdb_isdnvario_info[cnt].cfg_prog, /* optional cfg prog */ - &cdb_isdnvario_info[cnt].firmware, /* optional firmware to load */ - &cdb_isdnvario_info[cnt].description, /* optional description */ - &cdb_isdnvario_info[cnt].need_pkg, /* list of packages needed for function */ - &cdb_isdnvario_info[cnt].info, /* optional additional info */ - &cdb_isdnvario_info[cnt].protocol, /* supported D-channel protocols */ - &cdb_isdnvario_info[cnt].interface, /* supported API interfaces */ - &cdb_isdnvario_info[cnt].io, /* possible IO ports with legacy ISA cards */ - &cdb_isdnvario_info[cnt].irq, /* possible interrupts with legacy ISA cards */ - &cdb_isdnvario_info[cnt].membase, /* possible membase with legacy ISA cards */ - &cdb_isdnvario_info[cnt].features, /* optional features*/ - &cdb_isdnvario_info[cnt].card_ref, /* reference to a card */ - &cdb_isdnvario_info[cnt].name); /* driver name */ - if (l != 22) { - debprintf("error reading vario record %s\n", s); - goto fallback_close; - } - cdb_isdnvario_info[cnt].mod_name = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].mod_name; - cdb_isdnvario_info[cnt].para_str = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].para_str; - cdb_isdnvario_info[cnt].mod_preload = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].mod_preload; - cdb_isdnvario_info[cnt].cfg_prog = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].cfg_prog; - cdb_isdnvario_info[cnt].firmware = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].firmware; - cdb_isdnvario_info[cnt].description = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].description; - cdb_isdnvario_info[cnt].need_pkg = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].need_pkg; - cdb_isdnvario_info[cnt].info = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].info; - cdb_isdnvario_info[cnt].protocol = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].protocol; - cdb_isdnvario_info[cnt].interface = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].interface; - cdb_isdnvario_info[cnt].io = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].io; - cdb_isdnvario_info[cnt].irq = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].irq; - cdb_isdnvario_info[cnt].membase = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].membase; - cdb_isdnvario_info[cnt].features = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].features; - cdb_isdnvario_info[cnt].name = CDBISDN_names + (u_long)cdb_isdnvario_info[cnt].name; - cnt++; - break; - default: - debprintf("got wrong RecType %d\n", rectyp); - break; - } - } - fclose(cdb); - if (CDBISDN_name_size == 0 || - CDBISDN_vendor_cnt == 0 || - CDBISDN_card_cnt == 0 || - CDBISDN_vario_cnt == 0) - goto fallback; - debprintf("successfull reading %s\n", CDBISDN_HWDB_FILE); - CDBISDN_readhwdb = 1; - return(0); -fallback_close: - fclose(cdb); -fallback: - debprintf("error reading %s\n", CDBISDN_HWDB_FILE); - CDBISDN_vendor_cnt = (sizeof(cdb_isdnvendor_info_init) / sizeof(cdb_isdn_vendor)); - CDBISDN_card_cnt = ((sizeof(cdb_isdncard_info_init) / sizeof(cdb_isdn_card)) -1); - CDBISDN_vario_cnt = ((sizeof(cdb_isdnvario_info_init) / sizeof(cdb_isdn_vario))-1); - cdb_isdnvendor_info = cdb_isdnvendor_info_init; - cdb_isdncard_info = cdb_isdncard_info_init; - cdb_isdncard_idsorted = cdb_isdncard_idsorted_init; - cdb_isdnvario_info = cdb_isdnvario_info_init; - cdb_dbversion = CDBISDN_DBVERSION; - strncpy(cdb_date, CDBISDN_DATE, 31); - CDBISDN_readhwdb = 1; - return(1); -} - -typedef int (*fcmp) (const void *, const void *); - -static int compare_type(cdb_isdn_vario *v1, cdb_isdn_vario *v2) { - int x= v1->typ - v2->typ; - - if (!x) - x=v1->subtyp - v2->subtyp; - return(x); -} - -static int compare_id(const int *c1, const int *c2) { - int x= cdb_isdncard_info[*c1].vendor - cdb_isdncard_info[*c2].vendor; - - if (!x) - x=cdb_isdncard_info[*c1].device - cdb_isdncard_info[*c2].device; - if (!x) - x=cdb_isdncard_info[*c1].subvendor - cdb_isdncard_info[*c2].subvendor; - if (!x) - x=cdb_isdncard_info[*c1].subdevice - cdb_isdncard_info[*c2].subdevice; - return(x); -} - -/* interface */ - -cdb_isdn_vendor *hd_cdbisdn_get_vendor(int handle) -{ - if (!CDBISDN_readhwdb) - init_cdbisdn(); - if (handle<0) - return(NULL); - if ((unsigned)handle >= CDBISDN_vendor_cnt) - return(NULL); - return(&cdb_isdnvendor_info[handle]); -} - -cdb_isdn_card *hd_cdbisdn_get_card(int handle) -{ - if (!CDBISDN_readhwdb) - init_cdbisdn(); - if (handle<=0) - return(NULL); - if ((unsigned) handle>CDBISDN_card_cnt) - return(NULL); - return(&cdb_isdncard_info[handle]); -} - -cdb_isdn_vario *hd_cdbisdn_get_vario_from_type(int typ, int subtyp) -{ - cdb_isdn_vario key, *ret; - - if (!CDBISDN_readhwdb) - CDBISDN_readhwdb = init_cdbisdn(); - key.typ = typ; - key.subtyp = subtyp; - if (!(ret=bsearch(&key, &cdb_isdnvario_info[1], CDBISDN_vario_cnt, sizeof(cdb_isdn_vario), (fcmp)compare_type))) { - debprintf("ret NULL\n"); - return(NULL); - } - return(ret); -} - -cdb_isdn_card *hd_cdbisdn_get_card_from_type(int typ, int subtyp) -{ - cdb_isdn_vario *civ; - - if (!CDBISDN_readhwdb) - init_cdbisdn(); - civ = hd_cdbisdn_get_vario_from_type(typ, subtyp); - if (civ) { - if (civ->card_ref > 0) - return(&cdb_isdncard_info[civ->card_ref]); - } - return(NULL); -} - -cdb_isdn_card *hd_cdbisdn_get_card_from_id(int vendor, int device, int subvendor, int subdevice) -{ - int key, *ret; - - if (!CDBISDN_readhwdb) - init_cdbisdn(); - key = 0; - cdb_isdncard_info[key].vendor = vendor; - cdb_isdncard_info[key].device = device; - cdb_isdncard_info[key].subvendor = subvendor; - cdb_isdncard_info[key].subdevice = subdevice; - if (!(ret=bsearch(&key, cdb_isdncard_idsorted, CDBISDN_card_cnt, sizeof(int), (fcmp)compare_id))) { - debprintf("bs1 ret NULL\n"); - key = 0; - cdb_isdncard_info[key].subvendor = PCI_ANY_ID; - cdb_isdncard_info[key].subdevice = PCI_ANY_ID; - if (!(ret=bsearch(&key, cdb_isdncard_idsorted, CDBISDN_card_cnt, sizeof(int), (fcmp)compare_id))) { - debprintf("bs2 ret NULL\n"); - return(NULL); - } - } - debprintf("ret idx %d\n", *ret); - if (*ret <= 0) - return(NULL); - if ((unsigned) *ret > CDBISDN_card_cnt) - return(NULL); - return(&cdb_isdncard_info[*ret]); -} - -cdb_isdn_vario *hd_cdbisdn_get_vario(int handle) -{ - if (!CDBISDN_readhwdb) - init_cdbisdn(); - if (handle<=0) - return(NULL); - if ((unsigned) handle > CDBISDN_vario_cnt) - return(NULL); - return(&cdb_isdnvario_info[handle]); -} - -int hd_cdbisdn_get_version(void) -{ - if (!CDBISDN_readhwdb) - init_cdbisdn(); - return(CDBISDN_VERSION); -} - -int hd_cdbisdn_get_db_version(void) -{ - if (!CDBISDN_readhwdb) - init_cdbisdn(); - return(cdb_dbversion); -} - -char *hd_cdbisdn_get_db_date(void) -{ - if (!CDBISDN_readhwdb) - init_cdbisdn(); - return(cdb_date); -} diff --git a/src/hwinfo/src/isdn/isa_probe.c b/src/hwinfo/src/isdn/isa_probe.c deleted file mode 100644 index 14f7575deb..0000000000 --- a/src/hwinfo/src/isdn/isa_probe.c +++ /dev/null @@ -1,238 +0,0 @@ -#if defined(__i386__) - -#include -#include - -#include "hd.h" -#include "hd_int.h" -#include "isa.h" - -#define AVM_CONFIG_OFF 0x1800 /* offset for config register */ -#define AVM_TEST_MASK 0x28 /* allways zero */ -#define AVM_HSCX_A_VSTR 0x40e /* HSCX A version reg */ -#define AVM_HSCX_B_VSTR 0xc0e /* HSCX B version reg */ - -int avm_a1_detect(isa_isdn_t **ii) { - int adr,i; - unsigned char val,v1,v2; - int found=0; - unsigned short AVM_ADR[4]={0x200,0x240,0x300,0x340}; - isa_isdn_t *card; - - for (i=0;i<4;i++) { - adr=AVM_ADR[i] + AVM_CONFIG_OFF; - val = inb(adr); - if (val & AVM_TEST_MASK) - continue; - /* May be we found an AVM A1 or AVM Fritz!Classic */ - /* Checking HSCX VERSIONS */ - v1 = 0xf & inb(AVM_ADR[i] + AVM_HSCX_A_VSTR); - if ((v1 != 5) && (v1 != 4)) - continue; - v2 = 0xf & inb(AVM_ADR[i] + AVM_HSCX_B_VSTR); - if (v1 != v2) - continue; - /* 99% we found an AVM A1 or AVM Fritz!Classic */ - /* printf("# AVM A1 or Fritz!Classic found\n"); - printf("TYPE=5 SUBTYPE=0 IO=0x%3x\n", AVM_ADR[i]); */ - card = new_isa_isdn(ii); - card->type = 5; card->has_io = 1; card->io = AVM_ADR[i]; - found++; - } - return(found); -} - -#define ELSA_CONFIG 5 -#define ELSA_PC 1 -#define ELSA_PCC8 2 -#define ELSA_PCC16 3 -#define ELSA_PCF 4 -#define ELSA_PCFPRO 5 - -#define ELSA_IRQ_IDX 0x38 /* Bit 3,4,5 des Config-Reg */ -#define ELSA_IRQ_IDX_PCC8 0x30 /* Bit 4,5 des Config-Reg */ -#define ELSA_IRQ_IDX_PC 0x0c /* Bit 2,3 des Config-Reg */ - - -int -probe_elsa_adr(unsigned int adr) -{ - int i, in1, in2, p16_1 = 0, p16_2 = 0, p8_1 = 0, p8_2 = 0, pc_1 = 0, - pc_2 = 0, pfp_1 = 0, pfp_2 = 0; - - for (i = 0; i < 16; i++) { - in1 = inb(adr + ELSA_CONFIG); /* 'toggelt' bei */ - in2 = inb(adr + ELSA_CONFIG); /* jedem Zugriff */ - p16_1 += 0x04 & in1; - p16_2 += 0x04 & in2; - p8_1 += 0x02 & in1; - p8_2 += 0x02 & in2; - pc_1 += 0x01 & in1; - pc_2 += 0x01 & in2; - pfp_1 += 0x40 & in1; - pfp_2 += 0x40 & in2; - } - if (65 == ++p16_1 * ++p16_2) { - return (ELSA_PCC16); - } else if (1025 == ++pfp_1 * ++pfp_2) { - return (ELSA_PCFPRO); - } else if (33 == ++p8_1 * ++p8_2) { - return (ELSA_PCC8); - } else if (17 == ++pc_1 * ++pc_2) { - return (ELSA_PC); - } - return (0); -} - -int -probe_elsa(isa_isdn_t **ii) -{ - int i, subtyp, val, irq, found=0; - isa_isdn_t *card; - - unsigned int CARD_portlist[] = - {0x160, 0x170, 0x260, 0x360, 0}; - - for (i = 0; CARD_portlist[i]; i++) { - if ((subtyp = probe_elsa_adr(CARD_portlist[i]))) { - found++; - val = inb(CARD_portlist[i] + ELSA_CONFIG); - if (subtyp == ELSA_PC) { - int CARD_IrqTab[8] = - {7, 3, 5, 9, 0, 0, 0, 0}; - irq = CARD_IrqTab[(val & ELSA_IRQ_IDX_PC) >> 2]; - } else if (subtyp == ELSA_PCC8) { - int CARD_IrqTab[8] = - {7, 3, 5, 9, 0, 0, 0, 0}; - irq = CARD_IrqTab[(val & ELSA_IRQ_IDX_PCC8) >> 4]; - } else { - int CARD_IrqTab[8] = - {15, 10, 15, 3, 11, 5, 11, 9}; - irq = CARD_IrqTab[(val & ELSA_IRQ_IDX) >> 3]; - } - switch(subtyp) { - case ELSA_PC: - /* printf("# Elsa ML PC found\n"); - printf("TYPE=6 SUBTYPE=%d IO=0x%03x IRQ=%d\n", - subtyp, CARD_portlist[i], irq); */ - case ELSA_PCC8: - /* printf("# Elsa ML PCC-8 found\n"); - printf("TYPE=6 SUBTYPE=%d IO=0x%03x IRQ=%d\n", - subtyp, CARD_portlist[i], irq); */ - case ELSA_PCC16: - /* printf("# Elsa ML PCC-16 found\n"); - printf("TYPE=6 SUBTYPE=%d IO=0x%03x IRQ=%d\n", - subtyp, CARD_portlist[i], irq); */ - case ELSA_PCF: - /* printf("# Elsa ML PCF found\n"); - printf("TYPE=6 SUBTYPE=%d IO=0x%03x IRQ=%d\n", - subtyp, CARD_portlist[i], irq); */ - case ELSA_PCFPRO: - /* printf("# Elsa ML PCFPro found\n"); - printf("TYPE=6 SUBTYPE=%d IO=0x%03x IRQ=%d\n", - subtyp, CARD_portlist[i], irq); */ - - card = new_isa_isdn(ii); - card->type = 6; card->subtype = subtyp; - card->has_io = 1; card->io = CARD_portlist[i]; - card->has_irq = 1; card->irq = irq; - break; - } - } - } - return (found); -} - - -#define TELES_CONFIG_OFF 0xc00 -#define TELES_ID1 0x51 -#define TELES_ID2 0x93 -#define TELES_16_0 0x1e -#define TELES_16_0_AB 0x1f -#define TELES_16_3_0 0x1c -#define TELES_16_3_1 0x39 -#define TELES_16_3_3 0x38 -#define TELES_16_3_AB 0x46 - - -int telesdetect(isa_isdn_t **ii) { - int adr,val,i; - int found=0; - unsigned short TELES_ADR[3]={0x380,0x280,0x180}; - isa_isdn_t *card; - - for (i=0;i<3;i++) { - adr=TELES_ADR[i] + TELES_CONFIG_OFF; - - val = inb(adr); - if (val != TELES_ID1) - continue; - adr++; - val = inb(adr); - if (val != TELES_ID2) - continue; - adr++; - val = inb(adr); - switch(val) { - case TELES_16_0: - /* printf("# Teles 16.0 found\n"); - printf("TYPE=1 SUBTYPE=0 IO=0x%3x\n", - TELES_ADR[i] + TELES_CONFIG_OFF); */ - case TELES_16_0_AB: - /* printf("# Teles 16.0 AB found\n"); - printf("TYPE=1 SUBTYPE=1 IO=0x%3x\n", - TELES_ADR[i] + TELES_CONFIG_OFF); */ - card = new_isa_isdn(ii); - card->type = 1; - if(val == TELES_16_0_AB) card->subtype = 1; - card->has_io = 1; card->io = TELES_ADR[i] + TELES_CONFIG_OFF; - found++; - break; - case TELES_16_3_0: - /* printf("# Teles 16.3 v1.0 found\n"); - printf("TYPE=3 SUBTYPE=0 IO=0x%3x\n", - TELES_ADR[i]); */ - case TELES_16_3_1: - /* printf("# Teles 16.3 v1.1 found\n"); - printf("TYPE=3 SUBTYPE=0 IO=0x%3x\n", - TELES_ADR[i]); */ - case TELES_16_3_3: - /* printf("# Teles 16.3 v1.3 found\n"); - printf("TYPE=3 SUBTYPE=0 IO=0x%3x\n", - TELES_ADR[i]); */ - case TELES_16_3_AB: - /* printf("# Teles 16.3 AB Video found\n"); - printf("TYPE=3 SUBTYPE=1 IO=0x%3x\n", - TELES_ADR[i]); */ - card = new_isa_isdn(ii); - card->type = 3; - if(val == TELES_16_3_AB) card->subtype = 1; - card->has_io = 1; card->io = TELES_ADR[i]; - found++; - break; - default: - if (0 /* guess */) - printf("# may be a Teles 16.0/16.3 detected at IO=0x%3x byte 3 is 0x%02x\n", - TELES_ADR[i] + TELES_CONFIG_OFF, val); - break; - } - } - return(found); -} - -isa_isdn_t *isdn_detect() -{ - isa_isdn_t *ii = NULL; - - if(iopl(3) < 0) return ii; - - avm_a1_detect(&ii); - probe_elsa(&ii); - telesdetect(&ii); - - iopl(0); - - return ii; -} - -#endif /* i386 */ diff --git a/src/hwinfo/src/isdn/libihw.txt b/src/hwinfo/src/isdn/libihw.txt deleted file mode 100644 index a384036638..0000000000 --- a/src/hwinfo/src/isdn/libihw.txt +++ /dev/null @@ -1,61 +0,0 @@ -1. -ihw_card_info *ihw_get_card(int handle); - -"ihw_card_info" is a struct, which hold all info about the card (see ihw.h) -The parameter is a internal used index for the database (range 0 ... max) -To get all records use the following code as example: - - ihw_card_info *icp; - handle = 0; - while ((icp =ihw_get_card(handle++))) { - ... - } - -If here are no entries left, you get NULL as return value. - -2. -ihw_card_info *ihw_get_device_from_type(int typ, int subtyp); - -Get card informations for the card with TYPE and SUBTYPE . -Returns NULL if no card match. -This function is useful to get the card informations, if you have type and -subtype from a rc.config, or from hardware probe. - -3. -extern ihw_card_info *ihw_get_card_from_id(int vendor, int device, - int subvendor, int subdevice); - -Get card informations for the card with VENDOR,DEVICE,SUBVENDOR and -SUBDEVICE for PCI and ISAPNP cards (set SUBVENDOR and SUBDEVICE -to 0xffff for ISAPNP cards). Returns NULL if no card found. - -This function will be useful for hardware probe. - - -4. -ihw_para_info *ihw_get_parameter(int card_handle, int pnr); - -This function provides parameter info for a card (which was given by one of -the first 3 functions). "card_handle" is the "ihw_card_info->handle" of -the given card, pnr is the number of the requested parameter (1,2, ...). -For the first parameter, set pnr to 1, for next increment pnr, until -NULL is returned. - -For examples see at demo/demo.c - -Specials: - -To make it easy to decide, if an parameter has to be set in a rc.config -a flag P_DEFINE is set in ihw_para_info->flags, which is set for all -parameter which have to go into rc.config (for yast1 this parameter has to be -setable). - -Other flags (may be useful for autodetection): - -P_HARDSET - parameter depends on a jumper or switch. -P_SOFTSET - parameter is written into a config register (not for PnP/PCI) -P_READABLE - parameter can be read from a config register (not for PnP/PCI) -P_ISAPNP - parameter is set via ISA PnP setup -P_PCI - parameter is a PCI one - -Karsten diff --git a/src/hwinfo/src/smp/Makefile b/src/hwinfo/src/smp/Makefile deleted file mode 100644 index bcba090279..0000000000 --- a/src/hwinfo/src/smp/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -TOPDIR = ../.. -TARGETS = $(LIBHD_D) - -include $(TOPDIR)/Makefile.common - -$(LIBHD_D): $(OBJS) - ar r $(LIBHD) $? diff --git a/src/hwinfo/src/smp/README b/src/hwinfo/src/smp/README deleted file mode 100644 index 7ccf29e7b5..0000000000 --- a/src/hwinfo/src/smp/README +++ /dev/null @@ -1,14 +0,0 @@ -usage: smp - -exit codes: - 0 -> ok, is smp - != 0 -> no, is single processor - -Note1: just checks the smp capability of the board, not if >1 processor is -actually installed. - -Note2: must be run as 'root'. - -Original is: - -/mirror/distributions/redhat/ftp.redhat.com/redhat/redhat-6.1/i386/misc/src/anaconda/isys/smp.c diff --git a/src/hwinfo/src/smp/smp.c b/src/hwinfo/src/smp/smp.c deleted file mode 100644 index 4ccfc76ce1..0000000000 --- a/src/hwinfo/src/smp/smp.c +++ /dev/null @@ -1,286 +0,0 @@ -/* -[_Anarchy_(alan@lightning.swansea.uk.linux.org)] you should do one check - though - if the board seems to be SMP and the CPU in /proc/cpuinfo is non - intel dont install an SMP kernel - thats a dual pentium board with a cyrix - or similar single cpu in it -*/ - - -#include -#include -#include -#include -#include -#include -#include - -#ifdef __i386__ -#define SMP_MAGIC_IDENT (('_'<<24)|('P'<<16)|('M'<<8)|'_') - -struct intel_mp_floating -{ - char mpf_signature[4]; /* "_MP_" */ - unsigned long mpf_physptr; /* Configuration table address */ - unsigned char mpf_length; /* Our length (paragraphs) */ - unsigned char mpf_specification;/* Specification version */ - unsigned char mpf_checksum; /* Checksum (makes sum 0) */ - unsigned char mpf_feature1; /* Standard or configuration ? */ - unsigned char mpf_feature2; /* Bit7 set for IMCR|PIC */ - unsigned char mpf_feature3; /* Unused (0) */ - unsigned char mpf_feature4; /* Unused (0) */ - unsigned char mpf_feature5; /* Unused (0) */ -}; - -struct mp_config_table -{ - char mpc_signature[4]; -#define MPC_SIGNATURE "PCMP" - unsigned short mpc_length; /* Size of table */ - char mpc_spec; /* 0x01 */ - char mpc_checksum; - char mpc_oem[8]; - char mpc_productid[12]; - unsigned long mpc_oemptr; /* 0 if not present */ - unsigned short mpc_oemsize; /* 0 if not present */ - unsigned short mpc_oemcount; - unsigned long mpc_lapic; /* APIC address */ - unsigned long reserved; -}; - -/* Followed by entries */ - -#define MP_PROCESSOR 0 -#define MP_BUS 1 -#define MP_IOAPIC 2 -#define MP_INTSRC 3 -#define MP_LINTSRC 4 - -struct mpc_config_processor -{ - unsigned char mpc_type; - unsigned char mpc_apicid; /* Local APIC number */ - unsigned char mpc_apicver; /* Its versions */ - unsigned char mpc_cpuflag; -#define CPU_ENABLED 1 /* Processor is available */ -#define CPU_BOOTPROCESSOR 2 /* Processor is the BP */ - unsigned long mpc_cpufeature; -#define CPU_STEPPING_MASK 0x0F -#define CPU_MODEL_MASK 0xF0 -#define CPU_FAMILY_MASK 0xF00 - unsigned long mpc_featureflag; /* CPUID feature value */ - unsigned long mpc_reserved[2]; -}; - -struct mpc_config_bus -{ - unsigned char mpc_type; - unsigned char mpc_busid; - unsigned char mpc_bustype[6] __attribute((packed)); -}; - -#define BUSTYPE_EISA "EISA" -#define BUSTYPE_ISA "ISA" -#define BUSTYPE_INTERN "INTERN" /* Internal BUS */ -#define BUSTYPE_MCA "MCA" -#define BUSTYPE_VL "VL" /* Local bus */ -#define BUSTYPE_PCI "PCI" -#define BUSTYPE_PCMCIA "PCMCIA" - -/* We don't understand the others */ - -struct mpc_config_ioapic -{ - unsigned char mpc_type; - unsigned char mpc_apicid; - unsigned char mpc_apicver; - unsigned char mpc_flags; -#define MPC_APIC_USABLE 0x01 - unsigned long mpc_apicaddr; -}; - -struct mpc_config_intsrc -{ - unsigned char mpc_type; - unsigned char mpc_irqtype; - unsigned short mpc_irqflag; - unsigned char mpc_srcbus; - unsigned char mpc_srcbusirq; - unsigned char mpc_dstapic; - unsigned char mpc_dstirq; -}; - -#define MP_INT_VECTORED 0 -#define MP_INT_NMI 1 -#define MP_INT_SMI 2 -#define MP_INT_EXTINT 3 - -#define MP_IRQDIR_DEFAULT 0 -#define MP_IRQDIR_HIGH 1 -#define MP_IRQDIR_LOW 3 - - -struct mpc_config_intlocal -{ - unsigned char mpc_type; - unsigned char mpc_irqtype; - unsigned short mpc_irqflag; - unsigned char mpc_srcbusid; - unsigned char mpc_srcbusirq; - unsigned char mpc_destapic; -#define MP_APIC_ALL 0xFF - unsigned char mpc_destapiclint; -}; - - -/* - * Default configurations - * - * 1 2 CPU ISA 82489DX - * 2 2 CPU EISA 82489DX no IRQ 8 or timer chaining - * 3 2 CPU EISA 82489DX - * 4 2 CPU MCA 82489DX - * 5 2 CPU ISA+PCI - * 6 2 CPU EISA+PCI - * 7 2 CPU MCA+PCI - */ - - -static int smp_found_config=0; - -/* - * Checksum an MP configuration block. - */ - -static int mpf_checksum(unsigned char *mp, int len) -{ - int sum=0; - while(len--) - sum+=*mp++; - return sum&0xFF; -} - -static int do_smp_scan_config(unsigned long *bp, unsigned long length) -{ - struct intel_mp_floating *mpf; - -/* - if (sizeof(*mpf)!=16) - logMessage("Error: MPF size\n"); -*/ - - while (length>0) - { - if (*bp==SMP_MAGIC_IDENT) - { - mpf=(struct intel_mp_floating *)bp; - if (mpf->mpf_length==1 && - !mpf_checksum((unsigned char *)bp,16) && - (mpf->mpf_specification == 1 - || mpf->mpf_specification == 4) ) - { - /*logMessage("Intel MultiProcessor Specification v1.%d\n", mpf->mpf_specification); - if (mpf->mpf_feature2&(1<<7)) - logMessage(" IMCR and PIC compatibility mode.\n"); - else - logMessage(" Virtual Wire compatibility mode.\n"); -*/ - smp_found_config=1; - return 1; - } - } - bp+=4; - length-=16; - } - - return 0; -} - -static int smp_scan_config(int mem_fd, unsigned long base, - unsigned long length) -{ - void *p; - int o; - - o=base&0xFFF; - base-=o; - length+=o; - - p=mmap(0, (length+4095)&0xFFFFF000, PROT_READ, MAP_SHARED, - mem_fd, (base&0xFFFF0000)); - if(p==MAP_FAILED) - { - /*logMessage("SMP Probe error: mmap: %s", strerror(errno));*/ - return 1; - } - do_smp_scan_config(p+o, length-o); - munmap(p, (length+4095)&0xFFFFF000); - return 0; -} - -static int intelDetectSMP(void) -{ - int mem_fd; - - mem_fd=open("/dev/mem", O_RDONLY); - - if(mem_fd==-1) - { - /*logMessage("Error detecting SMP: /dev/mem: %s", strerror(errno));*/ - } - - /* - * FIXME: Linux assumes you have 640K of base ram.. - * this continues the error... - * - * 1) Scan the bottom 1K for a signature - * 2) Scan the top 1K of base RAM - * 3) Scan the 64K of bios - */ - if (!smp_scan_config(mem_fd, 0x0, 0x400) && - !smp_scan_config(mem_fd, 639*0x400,0x400) && - !smp_scan_config(mem_fd, 0xF0000,0x10000)) { -#if 0 - - /* - * If it is an SMP machine we should know now, unless the - * configuration is in an EISA/MCA bus machine with an - * extended bios data area. - * - * there is a real-mode segmented pointer pointing to the - * 4K EBDA area at 0x40E, calculate and scan it here. - * - * NOTE! There are Linux loaders that will corrupt the EBDA - * area, and as such this kind of SMP config may be less - * trustworthy, simply because the SMP table may have been - * stomped on during early boot. These loaders are buggy and - * should be fixed. - */ - unsigned int address; - - address = *(unsigned short *)phys_to_virt(0x40E); - address<<=4; - smp_scan_config(mem_fd, address, 0x1000); - if (smp_found_config) - /*logMessage("WARNING: MP table in the EBDA can be UNSAFE, contact linux-smp@vger.rutgers.edu if you experience SMP problems!\n");*/ -#endif - } -/* - if(smp_found_config) - logMessage("Detected SMP capable motherboard\n"); - else - logMessage("Detected non SMP capable motherboard\n"); -*/ - return smp_found_config; -} - -int detectSMP(void) -{ - static int isSMP = -1; - - if (isSMP != -1) - return isSMP; - - return isSMP = intelDetectSMP(); -} - -#endif /* __i386__ */ diff --git a/src/hwinfo/src/x86emu/LICENSE b/src/hwinfo/src/x86emu/LICENSE deleted file mode 100644 index a3ede4a87d..0000000000 --- a/src/hwinfo/src/x86emu/LICENSE +++ /dev/null @@ -1,17 +0,0 @@ - License information - ------------------- - -The x86emu library is under a BSD style license, comaptible -with the XFree86 and X licenses used by XFree86. The -original x86emu libraries were under the GNU General Public -License. Due to license incompatibilities between the GPL -and the XFree86 license, the original authors of the code -decided to allow a license change. If you have submitted -code to the original x86emu project, and you don't agree -with the license change, please contact us and let you -know. Your code will be removed to comply with your wishes. - -If you have any questions about this, please send email to -x86emu@linuxlabs.com or KendallB@scitechsoft.com for -clarification. - diff --git a/src/hwinfo/src/x86emu/Makefile b/src/hwinfo/src/x86emu/Makefile deleted file mode 100644 index 362c4142d1..0000000000 --- a/src/hwinfo/src/x86emu/Makefile +++ /dev/null @@ -1,86 +0,0 @@ -############################################################################# -# -# Realmode X86 Emulator Library -# -# Copyright (C) 1996-1999 SciTech Software, Inc. -# -# ======================================================================== -# -# 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 name of the authors not be used -# in advertising or publicity pertaining to distribution of the software -# without specific, written prior permission. The authors makes no -# representations about the suitability of this software for any purpose. -# It is provided "as is" without express or implied warranty. -# -# THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -# EVENT SHALL THE AUTHORS 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. -# -# ======================================================================== -# -# Descripton: Linux specific makefile for the x86emu library. -# -############################################################################# - -TARGETLIB = ../libhd.a -TARGETDEBUGLIB = ../libx86emud.a - -OBJS=\ -debug.o \ -decode.o \ -fpu.o \ -ops.o \ -ops2.o \ -prim_ops.o \ -sys.o - -DEBUGOBJS=debug.d \ - decode.d \ - fpu.d \ - ops.d \ - ops2.d \ - prim_ops.d \ - sys.d - -.SUFFIXES: .d - -all: $(TARGETLIB) - -$(TARGETLIB): $(OBJS) -# prefix objects with x86emu_ - @for i in $? ; do cp -p $$i x86emu_$$i ; ar rv $@ x86emu_$$i || exit ; rm -f x86emu_$$i ; done - -$(TARGETDEBUGLIB): $(DEBUGOBJS) - ar rv $(TARGETDEBUGLIB) $(DEBUGOBJS) - -INCS = -I. -Ix86emu -Iinclude -CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG -CDEBUGFLAGS = -DDEBUG - -.c.o: - gcc -c $(CFLAGS) $(INCS) $*.c - -.c.d: - gcc -c -o$*.d $(CFLAGS) $(CDEBUGFLAGS) $(INCS) $*.c - -.cpp.o: - gcc -c $(CFLAGS) $(INCS) $*.cpp - -install: all - -distclean: clean - @rm -f *~ - -clean: - @rm -f *.o *.d - -validate: validate.o ../libx86emu.a - gcc -o validate validate.o -lx86emu -L.. diff --git a/src/hwinfo/src/x86emu/debug.c b/src/hwinfo/src/x86emu/debug.c deleted file mode 100644 index ed8f2f0e04..0000000000 --- a/src/hwinfo/src/x86emu/debug.c +++ /dev/null @@ -1,431 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: This file contains the code to handle debugging of the -* emulator. -* -****************************************************************************/ -/* $XFree86: xc/extras/x86emu/src/x86emu/debug.c,v 1.2 2000/04/05 18:13:14 dawes Exp $ */ - -#include "x86emu/x86emui.h" -#ifdef IN_MODULE -#include "xf86_ansic.h" -#else -#include -#include -#endif - -/*----------------------------- Implementation ----------------------------*/ - -#ifdef DEBUG - -static void print_encoded_bytes (u16 s, u16 o); -static void print_decoded_instruction (void); -static int parse_line (char *s, int *ps, int *n); - -/* should look something like debug's output. */ -void X86EMU_trace_regs (void) -{ - if (DEBUG_TRACE()) { - x86emu_dump_regs(); - } - if (DEBUG_DECODE() && ! DEBUG_DECODE_NOPRINT()) { - printk("%04x:%04x ",M.x86.saved_cs, M.x86.saved_ip); - print_encoded_bytes( M.x86.saved_cs, M.x86.saved_ip); - print_decoded_instruction(); - } -} - -void X86EMU_trace_xregs (void) -{ - if (DEBUG_TRACE()) { - x86emu_dump_xregs(); - } -} - -void x86emu_just_disassemble (void) -{ - /* - * This routine called if the flag DEBUG_DISASSEMBLE is set kind - * of a hack! - */ - printk("%04x:%04x ",M.x86.saved_cs, M.x86.saved_ip); - print_encoded_bytes( M.x86.saved_cs, M.x86.saved_ip); - print_decoded_instruction(); -} - -static void disassemble_forward (u16 seg, u16 off, int n) -{ - X86EMU_sysEnv tregs; - int i; - u8 op1; - /* - * hack, hack, hack. What we do is use the exact machinery set up - * for execution, except that now there is an additional state - * flag associated with the "execution", and we are using a copy - * of the register struct. All the major opcodes, once fully - * decoded, have the following two steps: TRACE_REGS(r,m); - * SINGLE_STEP(r,m); which disappear if DEBUG is not defined to - * the preprocessor. The TRACE_REGS macro expands to: - * - * if (debug&DEBUG_DISASSEMBLE) - * {just_disassemble(); goto EndOfInstruction;} - * if (debug&DEBUG_TRACE) trace_regs(r,m); - * - * ...... and at the last line of the routine. - * - * EndOfInstruction: end_instr(); - * - * Up to the point where TRACE_REG is expanded, NO modifications - * are done to any register EXCEPT the IP register, for fetch and - * decoding purposes. - * - * This was done for an entirely different reason, but makes a - * nice way to get the system to help debug codes. - */ - tregs = M; - tregs.x86.R_IP = off; - tregs.x86.R_CS = seg; - - /* reset the decoding buffers */ - tregs.x86.enc_str_pos = 0; - tregs.x86.enc_pos = 0; - - /* turn on the "disassemble only, no execute" flag */ - tregs.x86.debug |= DEBUG_DISASSEMBLE_F; - - /* DUMP NEXT n instructions to screen in straight_line fashion */ - /* - * This looks like the regular instruction fetch stream, except - * that when this occurs, each fetched opcode, upon seeing the - * DEBUG_DISASSEMBLE flag set, exits immediately after decoding - * the instruction. XXX --- CHECK THAT MEM IS NOT AFFECTED!!! - * Note the use of a copy of the register structure... - */ - for (i=0; i 256) return; - seg = fetch_data_word_abs(0,iv*4); - off = fetch_data_word_abs(0,iv*4+2); - printk("%04x:%04x ", seg, off); -} - -void X86EMU_dump_memory (u16 seg, u16 off, u32 amt) -{ - u32 start = off & 0xfffffff0; - u32 end = (off+16) & 0xfffffff0; - u32 i; - u32 current; - - current = start; - while (end <= off + amt) { - printk("%04x:%04x ", seg, start); - for (i=start; i< off; i++) - printk(" "); - for ( ; i< end; i++) - printk("%02x ", fetch_data_byte_abs(seg,i)); - printk("\n"); - start = end; - end = start + 16; - } -} - -void x86emu_single_step (void) -{ - char s[1024]; - int ps[10]; - int ntok; - int cmd; - int done; - int segment; - int offset; - static int breakpoint; - static int noDecode = 1; - - char *p; - - if (DEBUG_BREAK()) { - if (M.x86.saved_ip != breakpoint) { - return; - } else { - M.x86.debug &= ~DEBUG_DECODE_NOPRINT_F; - M.x86.debug |= DEBUG_TRACE_F; - M.x86.debug &= ~DEBUG_BREAK_F; - print_decoded_instruction (); - X86EMU_trace_regs(); - } - } - done=0; - offset = M.x86.saved_ip; - while (!done) { - printk("-"); - p = fgets(s, 1023, stdin); - cmd = parse_line(s, ps, &ntok); - switch(cmd) { - case 'u': - disassemble_forward(M.x86.saved_cs,(u16)offset,10); - break; - case 'd': - if (ntok == 2) { - segment = M.x86.saved_cs; - offset = ps[1]; - X86EMU_dump_memory(segment,(u16)offset,16); - offset += 16; - } else if (ntok == 3) { - segment = ps[1]; - offset = ps[2]; - X86EMU_dump_memory(segment,(u16)offset,16); - offset += 16; - } else { - segment = M.x86.saved_cs; - X86EMU_dump_memory(segment,(u16)offset,16); - offset += 16; - } - break; - case 'c': - M.x86.debug ^= DEBUG_TRACECALL_F; - break; - case 's': - M.x86.debug ^= DEBUG_SVC_F | DEBUG_SYS_F | DEBUG_SYSINT_F; - break; - case 'r': - X86EMU_trace_regs(); - break; - case 'x': - X86EMU_trace_xregs(); - break; - case 'g': - if (ntok == 2) { - breakpoint = ps[1]; - if (noDecode) { - M.x86.debug |= DEBUG_DECODE_NOPRINT_F; - } else { - M.x86.debug &= ~DEBUG_DECODE_NOPRINT_F; - } - M.x86.debug &= ~DEBUG_TRACE_F; - M.x86.debug |= DEBUG_BREAK_F; - done = 1; - } - break; - case 'q': - M.x86.debug |= DEBUG_EXIT; - return; - case 'P': - noDecode = (noDecode)?0:1; - printk("Toggled decoding to %s\n",(noDecode)?"FALSE":"TRUE"); - break; - case 't': - case 0: - done = 1; - break; - } - } -} - -int X86EMU_trace_on(void) -{ - return M.x86.debug |= DEBUG_STEP_F | DEBUG_DECODE_F | DEBUG_TRACE_F; -} - -int X86EMU_trace_off(void) -{ - return M.x86.debug &= ~(DEBUG_STEP_F | DEBUG_DECODE_F | DEBUG_TRACE_F); -} - -static int parse_line (char *s, int *ps, int *n) -{ - int cmd; - - *n = 0; - while(*s == ' ' || *s == '\t') s++; - ps[*n] = *s; - switch (*s) { - case '\n': - *n += 1; - return 0; - default: - cmd = *s; - *n += 1; - } - - while (1) { - while (*s != ' ' && *s != '\t' && *s != '\n') s++; - - if (*s == '\n') - return cmd; - - while(*s == ' ' || *s == '\t') s++; - - sscanf(s,"%x",&ps[*n]); - *n += 1; - } -} - -#endif /* DEBUG */ - -void x86emu_dump_regs (void) -{ - printk("\tAX=%04x ", M.x86.R_AX ); - printk("BX=%04x ", M.x86.R_BX ); - printk("CX=%04x ", M.x86.R_CX ); - printk("DX=%04x ", M.x86.R_DX ); - printk("SP=%04x ", M.x86.R_SP ); - printk("BP=%04x ", M.x86.R_BP ); - printk("SI=%04x ", M.x86.R_SI ); - printk("DI=%04x\n", M.x86.R_DI ); - printk("\tDS=%04x ", M.x86.R_DS ); - printk("ES=%04x ", M.x86.R_ES ); - printk("SS=%04x ", M.x86.R_SS ); - printk("CS=%04x ", M.x86.R_CS ); - printk("IP=%04x ", M.x86.R_IP ); - if (ACCESS_FLAG(F_OF)) printk("OV "); /* CHECKED... */ - else printk("NV "); - if (ACCESS_FLAG(F_DF)) printk("DN "); - else printk("UP "); - if (ACCESS_FLAG(F_IF)) printk("EI "); - else printk("DI "); - if (ACCESS_FLAG(F_SF)) printk("NG "); - else printk("PL "); - if (ACCESS_FLAG(F_ZF)) printk("ZR "); - else printk("NZ "); - if (ACCESS_FLAG(F_AF)) printk("AC "); - else printk("NA "); - if (ACCESS_FLAG(F_PF)) printk("PE "); - else printk("PO "); - if (ACCESS_FLAG(F_CF)) printk("CY "); - else printk("NC "); - printk("\n"); -} - -void x86emu_dump_xregs (void) -{ - printk("\tEAX=%08x ", M.x86.R_EAX ); - printk("EBX=%08x ", M.x86.R_EBX ); - printk("ECX=%08x ", M.x86.R_ECX ); - printk("EDX=%08x \n", M.x86.R_EDX ); - printk("\tESP=%08x ", M.x86.R_ESP ); - printk("EBP=%08x ", M.x86.R_EBP ); - printk("ESI=%08x ", M.x86.R_ESI ); - printk("EDI=%08x\n", M.x86.R_EDI ); - printk("\tDS=%04x ", M.x86.R_DS ); - printk("ES=%04x ", M.x86.R_ES ); - printk("SS=%04x ", M.x86.R_SS ); - printk("CS=%04x ", M.x86.R_CS ); - printk("EIP=%08x\n\t", M.x86.R_EIP ); - if (ACCESS_FLAG(F_OF)) printk("OV "); /* CHECKED... */ - else printk("NV "); - if (ACCESS_FLAG(F_DF)) printk("DN "); - else printk("UP "); - if (ACCESS_FLAG(F_IF)) printk("EI "); - else printk("DI "); - if (ACCESS_FLAG(F_SF)) printk("NG "); - else printk("PL "); - if (ACCESS_FLAG(F_ZF)) printk("ZR "); - else printk("NZ "); - if (ACCESS_FLAG(F_AF)) printk("AC "); - else printk("NA "); - if (ACCESS_FLAG(F_PF)) printk("PE "); - else printk("PO "); - if (ACCESS_FLAG(F_CF)) printk("CY "); - else printk("NC "); - printk("\n"); -} diff --git a/src/hwinfo/src/x86emu/decode.c b/src/hwinfo/src/x86emu/decode.c deleted file mode 100644 index 5edaf154fd..0000000000 --- a/src/hwinfo/src/x86emu/decode.c +++ /dev/null @@ -1,1108 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: This file includes subroutines which are related to -* instruction decoding and accessess of immediate data via IP. etc. -* -****************************************************************************/ - -/* $XFree86: xc/extras/x86emu/src/x86emu/decode.c,v 1.11 2002/07/23 20:20:43 tsi Exp $ */ - -#include "x86emu/x86emui.h" - -/*----------------------------- Implementation ----------------------------*/ - -/**************************************************************************** -REMARKS: -Handles any pending asychronous interrupts. -****************************************************************************/ -static void x86emu_intr_handle(void) -{ - u8 intno; - - if (M.x86.intr & INTR_SYNCH) { - intno = M.x86.intno; - if (_X86EMU_intrTab[intno]) { - (*_X86EMU_intrTab[intno])(intno); - } else { - push_word((u16)M.x86.R_FLG); - CLEAR_FLAG(F_IF); - CLEAR_FLAG(F_TF); - push_word(M.x86.R_CS); - M.x86.R_CS = mem_access_word(intno * 4 + 2); - push_word(M.x86.R_IP); - M.x86.R_IP = mem_access_word(intno * 4); - M.x86.intr = 0; - } - } -} - -/**************************************************************************** -PARAMETERS: -intrnum - Interrupt number to raise - -REMARKS: -Raise the specified interrupt to be handled before the execution of the -next instruction. -****************************************************************************/ -void x86emu_intr_raise( - u8 intrnum) -{ - M.x86.intno = intrnum; - M.x86.intr |= INTR_SYNCH; -} - -/**************************************************************************** -REMARKS: -Main execution loop for the emulator. We return from here when the system -halts, which is normally caused by a stack fault when we return from the -original real mode call. -****************************************************************************/ -#include -void X86EMU_exec(unsigned timeout) -{ - u8 op1; - unsigned instr_cnt = 0; - unsigned debug = timeout & (1 << 31); - time_t t0 = time(NULL); - - timeout &= ~(1 << 31); - - M.x86.intr = 0; - DB(x86emu_end_instr();) - - for (;;) { -DB( if (CHECK_IP_FETCH()) - x86emu_check_ip_access();) - /* If debugging, save the IP and CS values. */ - SAVE_IP_CS(M.x86.R_CS, M.x86.R_IP); - INC_DECODED_INST_LEN(1); - if (M.x86.intr) { - if (M.x86.intr & INTR_HALTED) { -DB( if (M.x86.R_SP != 0) { - printk("halted\n"); - X86EMU_trace_regs(); - } - else { - if (M.x86.debug) - printk("Service completed successfully\n"); - }) - return; - } - if (((M.x86.intr & INTR_SYNCH) && (M.x86.intno == 0 || M.x86.intno == 2)) || - !ACCESS_FLAG(F_IF)) { - x86emu_intr_handle(); - } - } - op1 = (*sys_rdb)(((u32)M.x86.R_CS << 4) + (M.x86.R_IP++)); - if (debug) { - fprintf(stderr, "%6u: %04x:%04x %02x\n", instr_cnt++, M.x86.R_CS, M.x86.R_IP - 1, op1); - } - if(!(instr_cnt & 0xffff) && timeout && time(NULL) - t0 > timeout) { - if (debug) { - fprintf(stderr, "*** %us timeout ***\n", timeout); - } - return; - } - (*x86emu_optab[op1])(op1); - if (M.x86.debug & DEBUG_EXIT) { - M.x86.debug &= ~DEBUG_EXIT; - return; - } - } -} - -/**************************************************************************** -REMARKS: -Halts the system by setting the halted system flag. -****************************************************************************/ -void X86EMU_halt_sys(void) -{ - M.x86.intr |= INTR_HALTED; -} - -/**************************************************************************** -PARAMETERS: -mod - Mod value from decoded byte -regh - Reg h value from decoded byte -regl - Reg l value from decoded byte - -REMARKS: -Raise the specified interrupt to be handled before the execution of the -next instruction. - -NOTE: Do not inline this function, as (*sys_rdb) is already inline! -****************************************************************************/ -void fetch_decode_modrm( - int *mod, - int *regh, - int *regl) -{ - int fetched; - -DB( if (CHECK_IP_FETCH()) - x86emu_check_ip_access();) - fetched = (*sys_rdb)(((u32)M.x86.R_CS << 4) + (M.x86.R_IP++)); - INC_DECODED_INST_LEN(1); - *mod = (fetched >> 6) & 0x03; - *regh = (fetched >> 3) & 0x07; - *regl = (fetched >> 0) & 0x07; -} - -/**************************************************************************** -RETURNS: -Immediate byte value read from instruction queue - -REMARKS: -This function returns the immediate byte from the instruction queue, and -moves the instruction pointer to the next value. - -NOTE: Do not inline this function, as (*sys_rdb) is already inline! -****************************************************************************/ -u8 fetch_byte_imm(void) -{ - u8 fetched; - -DB( if (CHECK_IP_FETCH()) - x86emu_check_ip_access();) - fetched = (*sys_rdb)(((u32)M.x86.R_CS << 4) + (M.x86.R_IP++)); - INC_DECODED_INST_LEN(1); - return fetched; -} - -/**************************************************************************** -RETURNS: -Immediate word value read from instruction queue - -REMARKS: -This function returns the immediate byte from the instruction queue, and -moves the instruction pointer to the next value. - -NOTE: Do not inline this function, as (*sys_rdw) is already inline! -****************************************************************************/ -u16 fetch_word_imm(void) -{ - u16 fetched; - -DB( if (CHECK_IP_FETCH()) - x86emu_check_ip_access();) - fetched = (*sys_rdw)(((u32)M.x86.R_CS << 4) + (M.x86.R_IP)); - M.x86.R_IP += 2; - INC_DECODED_INST_LEN(2); - return fetched; -} - -/**************************************************************************** -RETURNS: -Immediate lone value read from instruction queue - -REMARKS: -This function returns the immediate byte from the instruction queue, and -moves the instruction pointer to the next value. - -NOTE: Do not inline this function, as (*sys_rdw) is already inline! -****************************************************************************/ -u32 fetch_long_imm(void) -{ - u32 fetched; - -DB( if (CHECK_IP_FETCH()) - x86emu_check_ip_access();) - fetched = (*sys_rdl)(((u32)M.x86.R_CS << 4) + (M.x86.R_IP)); - M.x86.R_IP += 4; - INC_DECODED_INST_LEN(4); - return fetched; -} - -/**************************************************************************** -RETURNS: -Value of the default data segment - -REMARKS: -Inline function that returns the default data segment for the current -instruction. - -On the x86 processor, the default segment is not always DS if there is -no segment override. Address modes such as -3[BP] or 10[BP+SI] all refer to -addresses relative to SS (ie: on the stack). So, at the minimum, all -decodings of addressing modes would have to set/clear a bit describing -whether the access is relative to DS or SS. That is the function of the -cpu-state-varible M.x86.mode. There are several potential states: - - repe prefix seen (handled elsewhere) - repne prefix seen (ditto) - - cs segment override - ds segment override - es segment override - fs segment override - gs segment override - ss segment override - - ds/ss select (in absense of override) - -Each of the above 7 items are handled with a bit in the mode field. -****************************************************************************/ -_INLINE u32 get_data_segment(void) -{ -#define GET_SEGMENT(segment) - switch (M.x86.mode & SYSMODE_SEGMASK) { - case 0: /* default case: use ds register */ - case SYSMODE_SEGOVR_DS: - case SYSMODE_SEGOVR_DS | SYSMODE_SEG_DS_SS: - return M.x86.R_DS; - case SYSMODE_SEG_DS_SS: /* non-overridden, use ss register */ - return M.x86.R_SS; - case SYSMODE_SEGOVR_CS: - case SYSMODE_SEGOVR_CS | SYSMODE_SEG_DS_SS: - return M.x86.R_CS; - case SYSMODE_SEGOVR_ES: - case SYSMODE_SEGOVR_ES | SYSMODE_SEG_DS_SS: - return M.x86.R_ES; - case SYSMODE_SEGOVR_FS: - case SYSMODE_SEGOVR_FS | SYSMODE_SEG_DS_SS: - return M.x86.R_FS; - case SYSMODE_SEGOVR_GS: - case SYSMODE_SEGOVR_GS | SYSMODE_SEG_DS_SS: - return M.x86.R_GS; - case SYSMODE_SEGOVR_SS: - case SYSMODE_SEGOVR_SS | SYSMODE_SEG_DS_SS: - return M.x86.R_SS; - default: -#ifdef DEBUG - printk("error: should not happen: multiple overrides.\n"); -#endif - HALT_SYS(); - return 0; - } -} - -/**************************************************************************** -PARAMETERS: -offset - Offset to load data from - -RETURNS: -Byte value read from the absolute memory location. - -NOTE: Do not inline this function as (*sys_rdX) is already inline! -****************************************************************************/ -u8 fetch_data_byte( - uint offset) -{ -#ifdef DEBUG - if (CHECK_DATA_ACCESS()) - x86emu_check_data_access((u16)get_data_segment(), offset); -#endif - return (*sys_rdb)((get_data_segment() << 4) + offset); -} - -/**************************************************************************** -PARAMETERS: -offset - Offset to load data from - -RETURNS: -Word value read from the absolute memory location. - -NOTE: Do not inline this function as (*sys_rdX) is already inline! -****************************************************************************/ -u16 fetch_data_word( - uint offset) -{ -#ifdef DEBUG - if (CHECK_DATA_ACCESS()) - x86emu_check_data_access((u16)get_data_segment(), offset); -#endif - return (*sys_rdw)((get_data_segment() << 4) + offset); -} - -/**************************************************************************** -PARAMETERS: -offset - Offset to load data from - -RETURNS: -Long value read from the absolute memory location. - -NOTE: Do not inline this function as (*sys_rdX) is already inline! -****************************************************************************/ -u32 fetch_data_long( - uint offset) -{ -#ifdef DEBUG - if (CHECK_DATA_ACCESS()) - x86emu_check_data_access((u16)get_data_segment(), offset); -#endif - return (*sys_rdl)((get_data_segment() << 4) + offset); -} - -/**************************************************************************** -PARAMETERS: -segment - Segment to load data from -offset - Offset to load data from - -RETURNS: -Byte value read from the absolute memory location. - -NOTE: Do not inline this function as (*sys_rdX) is already inline! -****************************************************************************/ -u8 fetch_data_byte_abs( - uint segment, - uint offset) -{ -#ifdef DEBUG - if (CHECK_DATA_ACCESS()) - x86emu_check_data_access(segment, offset); -#endif - return (*sys_rdb)(((u32)segment << 4) + offset); -} - -/**************************************************************************** -PARAMETERS: -segment - Segment to load data from -offset - Offset to load data from - -RETURNS: -Word value read from the absolute memory location. - -NOTE: Do not inline this function as (*sys_rdX) is already inline! -****************************************************************************/ -u16 fetch_data_word_abs( - uint segment, - uint offset) -{ -#ifdef DEBUG - if (CHECK_DATA_ACCESS()) - x86emu_check_data_access(segment, offset); -#endif - return (*sys_rdw)(((u32)segment << 4) + offset); -} - -/**************************************************************************** -PARAMETERS: -segment - Segment to load data from -offset - Offset to load data from - -RETURNS: -Long value read from the absolute memory location. - -NOTE: Do not inline this function as (*sys_rdX) is already inline! -****************************************************************************/ -u32 fetch_data_long_abs( - uint segment, - uint offset) -{ -#ifdef DEBUG - if (CHECK_DATA_ACCESS()) - x86emu_check_data_access(segment, offset); -#endif - return (*sys_rdl)(((u32)segment << 4) + offset); -} - -/**************************************************************************** -PARAMETERS: -offset - Offset to store data at -val - Value to store - -REMARKS: -Writes a word value to an segmented memory location. The segment used is -the current 'default' segment, which may have been overridden. - -NOTE: Do not inline this function as (*sys_wrX) is already inline! -****************************************************************************/ -void store_data_byte( - uint offset, - u8 val) -{ -#ifdef DEBUG - if (CHECK_DATA_ACCESS()) - x86emu_check_data_access((u16)get_data_segment(), offset); -#endif - (*sys_wrb)((get_data_segment() << 4) + offset, val); -} - -/**************************************************************************** -PARAMETERS: -offset - Offset to store data at -val - Value to store - -REMARKS: -Writes a word value to an segmented memory location. The segment used is -the current 'default' segment, which may have been overridden. - -NOTE: Do not inline this function as (*sys_wrX) is already inline! -****************************************************************************/ -void store_data_word( - uint offset, - u16 val) -{ -#ifdef DEBUG - if (CHECK_DATA_ACCESS()) - x86emu_check_data_access((u16)get_data_segment(), offset); -#endif - (*sys_wrw)((get_data_segment() << 4) + offset, val); -} - -/**************************************************************************** -PARAMETERS: -offset - Offset to store data at -val - Value to store - -REMARKS: -Writes a long value to an segmented memory location. The segment used is -the current 'default' segment, which may have been overridden. - -NOTE: Do not inline this function as (*sys_wrX) is already inline! -****************************************************************************/ -void store_data_long( - uint offset, - u32 val) -{ -#ifdef DEBUG - if (CHECK_DATA_ACCESS()) - x86emu_check_data_access((u16)get_data_segment(), offset); -#endif - (*sys_wrl)((get_data_segment() << 4) + offset, val); -} - -/**************************************************************************** -PARAMETERS: -segment - Segment to store data at -offset - Offset to store data at -val - Value to store - -REMARKS: -Writes a byte value to an absolute memory location. - -NOTE: Do not inline this function as (*sys_wrX) is already inline! -****************************************************************************/ -void store_data_byte_abs( - uint segment, - uint offset, - u8 val) -{ -#ifdef DEBUG - if (CHECK_DATA_ACCESS()) - x86emu_check_data_access(segment, offset); -#endif - (*sys_wrb)(((u32)segment << 4) + offset, val); -} - -/**************************************************************************** -PARAMETERS: -segment - Segment to store data at -offset - Offset to store data at -val - Value to store - -REMARKS: -Writes a word value to an absolute memory location. - -NOTE: Do not inline this function as (*sys_wrX) is already inline! -****************************************************************************/ -void store_data_word_abs( - uint segment, - uint offset, - u16 val) -{ -#ifdef DEBUG - if (CHECK_DATA_ACCESS()) - x86emu_check_data_access(segment, offset); -#endif - (*sys_wrw)(((u32)segment << 4) + offset, val); -} - -/**************************************************************************** -PARAMETERS: -segment - Segment to store data at -offset - Offset to store data at -val - Value to store - -REMARKS: -Writes a long value to an absolute memory location. - -NOTE: Do not inline this function as (*sys_wrX) is already inline! -****************************************************************************/ -void store_data_long_abs( - uint segment, - uint offset, - u32 val) -{ -#ifdef DEBUG - if (CHECK_DATA_ACCESS()) - x86emu_check_data_access(segment, offset); -#endif - (*sys_wrl)(((u32)segment << 4) + offset, val); -} - -/**************************************************************************** -PARAMETERS: -reg - Register to decode - -RETURNS: -Pointer to the appropriate register - -REMARKS: -Return a pointer to the register given by the R/RM field of the -modrm byte, for byte operands. Also enables the decoding of instructions. -****************************************************************************/ -u8* decode_rm_byte_register( - int reg) -{ - switch (reg) { - case 0: - DECODE_PRINTF("AL"); - return &M.x86.R_AL; - case 1: - DECODE_PRINTF("CL"); - return &M.x86.R_CL; - case 2: - DECODE_PRINTF("DL"); - return &M.x86.R_DL; - case 3: - DECODE_PRINTF("BL"); - return &M.x86.R_BL; - case 4: - DECODE_PRINTF("AH"); - return &M.x86.R_AH; - case 5: - DECODE_PRINTF("CH"); - return &M.x86.R_CH; - case 6: - DECODE_PRINTF("DH"); - return &M.x86.R_DH; - case 7: - DECODE_PRINTF("BH"); - return &M.x86.R_BH; - } - HALT_SYS(); - return NULL; /* NOT REACHED OR REACHED ON ERROR */ -} - -/**************************************************************************** -PARAMETERS: -reg - Register to decode - -RETURNS: -Pointer to the appropriate register - -REMARKS: -Return a pointer to the register given by the R/RM field of the -modrm byte, for word operands. Also enables the decoding of instructions. -****************************************************************************/ -u16* decode_rm_word_register( - int reg) -{ - switch (reg) { - case 0: - DECODE_PRINTF("AX"); - return &M.x86.R_AX; - case 1: - DECODE_PRINTF("CX"); - return &M.x86.R_CX; - case 2: - DECODE_PRINTF("DX"); - return &M.x86.R_DX; - case 3: - DECODE_PRINTF("BX"); - return &M.x86.R_BX; - case 4: - DECODE_PRINTF("SP"); - return &M.x86.R_SP; - case 5: - DECODE_PRINTF("BP"); - return &M.x86.R_BP; - case 6: - DECODE_PRINTF("SI"); - return &M.x86.R_SI; - case 7: - DECODE_PRINTF("DI"); - return &M.x86.R_DI; - } - HALT_SYS(); - return NULL; /* NOTREACHED OR REACHED ON ERROR */ -} - -/**************************************************************************** -PARAMETERS: -reg - Register to decode - -RETURNS: -Pointer to the appropriate register - -REMARKS: -Return a pointer to the register given by the R/RM field of the -modrm byte, for dword operands. Also enables the decoding of instructions. -****************************************************************************/ -u32* decode_rm_long_register( - int reg) -{ - switch (reg) { - case 0: - DECODE_PRINTF("EAX"); - return &M.x86.R_EAX; - case 1: - DECODE_PRINTF("ECX"); - return &M.x86.R_ECX; - case 2: - DECODE_PRINTF("EDX"); - return &M.x86.R_EDX; - case 3: - DECODE_PRINTF("EBX"); - return &M.x86.R_EBX; - case 4: - DECODE_PRINTF("ESP"); - return &M.x86.R_ESP; - case 5: - DECODE_PRINTF("EBP"); - return &M.x86.R_EBP; - case 6: - DECODE_PRINTF("ESI"); - return &M.x86.R_ESI; - case 7: - DECODE_PRINTF("EDI"); - return &M.x86.R_EDI; - } - HALT_SYS(); - return NULL; /* NOTREACHED OR REACHED ON ERROR */ -} - -/**************************************************************************** -PARAMETERS: -reg - Register to decode - -RETURNS: -Pointer to the appropriate register - -REMARKS: -Return a pointer to the register given by the R/RM field of the -modrm byte, for word operands, modified from above for the weirdo -special case of segreg operands. Also enables the decoding of instructions. -****************************************************************************/ -u16* decode_rm_seg_register( - int reg) -{ - switch (reg) { - case 0: - DECODE_PRINTF("ES"); - return &M.x86.R_ES; - case 1: - DECODE_PRINTF("CS"); - return &M.x86.R_CS; - case 2: - DECODE_PRINTF("SS"); - return &M.x86.R_SS; - case 3: - DECODE_PRINTF("DS"); - return &M.x86.R_DS; - case 4: - DECODE_PRINTF("FS"); - return &M.x86.R_FS; - case 5: - DECODE_PRINTF("GS"); - return &M.x86.R_GS; - case 6: - case 7: - DECODE_PRINTF("ILLEGAL SEGREG"); - break; - } - HALT_SYS(); - return NULL; /* NOT REACHED OR REACHED ON ERROR */ -} - -/* - * - * return offset from the SIB Byte - */ -u32 decode_sib_address(int sib, int mod) -{ - u32 base = 0, i = 0, scale = 1; - - switch(sib & 0x07) { - case 0: - DECODE_PRINTF("[EAX]"); - base = M.x86.R_EAX; - break; - case 1: - DECODE_PRINTF("[ECX]"); - base = M.x86.R_ECX; - break; - case 2: - DECODE_PRINTF("[EDX]"); - base = M.x86.R_EDX; - break; - case 3: - DECODE_PRINTF("[EBX]"); - base = M.x86.R_EBX; - break; - case 4: - DECODE_PRINTF("[ESP]"); - base = M.x86.R_ESP; - M.x86.mode |= SYSMODE_SEG_DS_SS; - break; - case 5: - if (mod == 0) { - base = fetch_long_imm(); - DECODE_PRINTF2("%08x", base); - } else { - DECODE_PRINTF("[EBP]"); - base = M.x86.R_ESP; - M.x86.mode |= SYSMODE_SEG_DS_SS; - } - break; - case 6: - DECODE_PRINTF("[ESI]"); - base = M.x86.R_ESI; - break; - case 7: - DECODE_PRINTF("[EDI]"); - base = M.x86.R_EDI; - break; - } - switch ((sib >> 3) & 0x07) { - case 0: - DECODE_PRINTF("[EAX"); - i = M.x86.R_EAX; - break; - case 1: - DECODE_PRINTF("[ECX"); - i = M.x86.R_ECX; - break; - case 2: - DECODE_PRINTF("[EDX"); - i = M.x86.R_EDX; - break; - case 3: - DECODE_PRINTF("[EBX"); - i = M.x86.R_EBX; - break; - case 4: - i = 0; - break; - case 5: - DECODE_PRINTF("[EBP"); - i = M.x86.R_EBP; - break; - case 6: - DECODE_PRINTF("[ESI"); - i = M.x86.R_ESI; - break; - case 7: - DECODE_PRINTF("[EDI"); - i = M.x86.R_EDI; - break; - } - scale = 1 << ((sib >> 6) & 0x03); - if (((sib >> 3) & 0x07) != 4) { - if (scale == 1) { - DECODE_PRINTF("]"); - } else { - DECODE_PRINTF2("*%d]", scale); - } - } - return base + (i * scale); -} - -/**************************************************************************** -PARAMETERS: -rm - RM value to decode - -RETURNS: -Offset in memory for the address decoding - -REMARKS: -Return the offset given by mod=00 addressing. Also enables the -decoding of instructions. - -NOTE: The code which specifies the corresponding segment (ds vs ss) - below in the case of [BP+..]. The assumption here is that at the - point that this subroutine is called, the bit corresponding to - SYSMODE_SEG_DS_SS will be zero. After every instruction - except the segment override instructions, this bit (as well - as any bits indicating segment overrides) will be clear. So - if a SS access is needed, set this bit. Otherwise, DS access - occurs (unless any of the segment override bits are set). -****************************************************************************/ -u32 decode_rm00_address( - int rm) -{ - u32 offset; - int sib; - - if (M.x86.mode & SYSMODE_PREFIX_ADDR) { - /* 32-bit addressing */ - switch (rm) { - case 0: - DECODE_PRINTF("[EAX]"); - return M.x86.R_EAX; - case 1: - DECODE_PRINTF("[ECX]"); - return M.x86.R_ECX; - case 2: - DECODE_PRINTF("[EDX]"); - return M.x86.R_EDX; - case 3: - DECODE_PRINTF("[EBX]"); - return M.x86.R_EBX; - case 4: - sib = fetch_byte_imm(); - return decode_sib_address(sib, 0); - case 5: - offset = fetch_long_imm(); - DECODE_PRINTF2("[%08x]", offset); - return offset; - case 6: - DECODE_PRINTF("[ESI]"); - return M.x86.R_ESI; - case 7: - DECODE_PRINTF("[EDI]"); - return M.x86.R_EDI; - } - HALT_SYS(); - } else { - /* 16-bit addressing */ - switch (rm) { - case 0: - DECODE_PRINTF("[BX+SI]"); - return (M.x86.R_BX + M.x86.R_SI) & 0xffff; - case 1: - DECODE_PRINTF("[BX+DI]"); - return (M.x86.R_BX + M.x86.R_DI) & 0xffff; - case 2: - DECODE_PRINTF("[BP+SI]"); - M.x86.mode |= SYSMODE_SEG_DS_SS; - return (M.x86.R_BP + M.x86.R_SI) & 0xffff; - case 3: - DECODE_PRINTF("[BP+DI]"); - M.x86.mode |= SYSMODE_SEG_DS_SS; - return (M.x86.R_BP + M.x86.R_DI) & 0xffff; - case 4: - DECODE_PRINTF("[SI]"); - return M.x86.R_SI; - case 5: - DECODE_PRINTF("[DI]"); - return M.x86.R_DI; - case 6: - offset = fetch_word_imm(); - DECODE_PRINTF2("[%04x]", offset); - return offset; - case 7: - DECODE_PRINTF("[BX]"); - return M.x86.R_BX; - } - HALT_SYS(); - } - return 0; -} - -/**************************************************************************** -PARAMETERS: -rm - RM value to decode - -RETURNS: -Offset in memory for the address decoding - -REMARKS: -Return the offset given by mod=01 addressing. Also enables the -decoding of instructions. -****************************************************************************/ -u32 decode_rm01_address( - int rm) -{ - int displacement = 0; - int sib; - - /* Fetch disp8 if no SIB byte */ - if (!((M.x86.mode & SYSMODE_PREFIX_ADDR) && (rm == 4))) - displacement = (s8)fetch_byte_imm(); - - if (M.x86.mode & SYSMODE_PREFIX_ADDR) { - /* 32-bit addressing */ - switch (rm) { - case 0: - DECODE_PRINTF2("%d[EAX]", displacement); - return M.x86.R_EAX + displacement; - case 1: - DECODE_PRINTF2("%d[ECX]", displacement); - return M.x86.R_ECX + displacement; - case 2: - DECODE_PRINTF2("%d[EDX]", displacement); - return M.x86.R_EDX + displacement; - case 3: - DECODE_PRINTF2("%d[EBX]", displacement); - return M.x86.R_EBX + displacement; - case 4: - sib = fetch_byte_imm(); - displacement = (s8)fetch_byte_imm(); - DECODE_PRINTF2("%d", displacement); - return decode_sib_address(sib, 1) + displacement; - case 5: - DECODE_PRINTF2("%d[EBP]", displacement); - return M.x86.R_EBP + displacement; - case 6: - DECODE_PRINTF2("%d[ESI]", displacement); - return M.x86.R_ESI + displacement; - case 7: - DECODE_PRINTF2("%d[EDI]", displacement); - return M.x86.R_EDI + displacement; - } - HALT_SYS(); - } else { - /* 16-bit addressing */ - switch (rm) { - case 0: - DECODE_PRINTF2("%d[BX+SI]", displacement); - return (M.x86.R_BX + M.x86.R_SI + displacement) & 0xffff; - case 1: - DECODE_PRINTF2("%d[BX+DI]", displacement); - return (M.x86.R_BX + M.x86.R_DI + displacement) & 0xffff; - case 2: - DECODE_PRINTF2("%d[BP+SI]", displacement); - M.x86.mode |= SYSMODE_SEG_DS_SS; - return (M.x86.R_BP + M.x86.R_SI + displacement) & 0xffff; - case 3: - DECODE_PRINTF2("%d[BP+DI]", displacement); - M.x86.mode |= SYSMODE_SEG_DS_SS; - return (M.x86.R_BP + M.x86.R_DI + displacement) & 0xffff; - case 4: - DECODE_PRINTF2("%d[SI]", displacement); - return (M.x86.R_SI + displacement) & 0xffff; - case 5: - DECODE_PRINTF2("%d[DI]", displacement); - return (M.x86.R_DI + displacement) & 0xffff; - case 6: - DECODE_PRINTF2("%d[BP]", displacement); - M.x86.mode |= SYSMODE_SEG_DS_SS; - return (M.x86.R_BP + displacement) & 0xffff; - case 7: - DECODE_PRINTF2("%d[BX]", displacement); - return (M.x86.R_BX + displacement) & 0xffff; - } - HALT_SYS(); - } - return 0; /* SHOULD NOT HAPPEN */ -} - -/**************************************************************************** -PARAMETERS: -rm - RM value to decode - -RETURNS: -Offset in memory for the address decoding - -REMARKS: -Return the offset given by mod=10 addressing. Also enables the -decoding of instructions. -****************************************************************************/ -u32 decode_rm10_address( - int rm) -{ - u32 displacement = 0; - int sib; - - /* Fetch disp16 if 16-bit addr mode */ - if (!(M.x86.mode & SYSMODE_PREFIX_ADDR)) - displacement = (u16)fetch_word_imm(); - else { - /* Fetch disp32 if no SIB byte */ - if (rm != 4) - displacement = (u32)fetch_long_imm(); - } - - if (M.x86.mode & SYSMODE_PREFIX_ADDR) { - /* 32-bit addressing */ - switch (rm) { - case 0: - DECODE_PRINTF2("%08x[EAX]", displacement); - return M.x86.R_EAX + displacement; - case 1: - DECODE_PRINTF2("%08x[ECX]", displacement); - return M.x86.R_ECX + displacement; - case 2: - DECODE_PRINTF2("%08x[EDX]", displacement); - M.x86.mode |= SYSMODE_SEG_DS_SS; - return M.x86.R_EDX + displacement; - case 3: - DECODE_PRINTF2("%08x[EBX]", displacement); - return M.x86.R_EBX + displacement; - case 4: - sib = fetch_byte_imm(); - displacement = (u32)fetch_long_imm(); - DECODE_PRINTF2("%08x", displacement); - return decode_sib_address(sib, 2) + displacement; - break; - case 5: - DECODE_PRINTF2("%08x[EBP]", displacement); - return M.x86.R_EBP + displacement; - case 6: - DECODE_PRINTF2("%08x[ESI]", displacement); - return M.x86.R_ESI + displacement; - case 7: - DECODE_PRINTF2("%08x[EDI]", displacement); - return M.x86.R_EDI + displacement; - } - HALT_SYS(); - } else { - /* 16-bit addressing */ - switch (rm) { - case 0: - DECODE_PRINTF2("%04x[BX+SI]", displacement); - return (M.x86.R_BX + M.x86.R_SI + displacement) & 0xffff; - case 1: - DECODE_PRINTF2("%04x[BX+DI]", displacement); - return (M.x86.R_BX + M.x86.R_DI + displacement) & 0xffff; - case 2: - DECODE_PRINTF2("%04x[BP+SI]", displacement); - M.x86.mode |= SYSMODE_SEG_DS_SS; - return (M.x86.R_BP + M.x86.R_SI + displacement) & 0xffff; - case 3: - DECODE_PRINTF2("%04x[BP+DI]", displacement); - M.x86.mode |= SYSMODE_SEG_DS_SS; - return (M.x86.R_BP + M.x86.R_DI + displacement) & 0xffff; - case 4: - DECODE_PRINTF2("%04x[SI]", displacement); - return (M.x86.R_SI + displacement) & 0xffff; - case 5: - DECODE_PRINTF2("%04x[DI]", displacement); - return (M.x86.R_DI + displacement) & 0xffff; - case 6: - DECODE_PRINTF2("%04x[BP]", displacement); - M.x86.mode |= SYSMODE_SEG_DS_SS; - return (M.x86.R_BP + displacement) & 0xffff; - case 7: - DECODE_PRINTF2("%04x[BX]", displacement); - return (M.x86.R_BX + displacement) & 0xffff; - } - HALT_SYS(); - } - return 0; - /*NOTREACHED */ -} diff --git a/src/hwinfo/src/x86emu/fpu.c b/src/hwinfo/src/x86emu/fpu.c deleted file mode 100644 index 4b801dc94c..0000000000 --- a/src/hwinfo/src/x86emu/fpu.c +++ /dev/null @@ -1,966 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: This file contains the code to implement the decoding and -* emulation of the FPU instructions. -* -****************************************************************************/ -/* $XFree86$ */ - -#include "x86emu/x86emui.h" - -/*----------------------------- Implementation ----------------------------*/ - -/* opcode=0xd8 */ -void x86emuOp_esc_coprocess_d8(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("ESC D8\n"); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR_NO_TRACE(); -} - -#ifdef DEBUG - -static char *x86emu_fpu_op_d9_tab[] = { - "FLD\tDWORD PTR ", "ESC_D9\t", "FST\tDWORD PTR ", "FSTP\tDWORD PTR ", - "FLDENV\t", "FLDCW\t", "FSTENV\t", "FSTCW\t", - - "FLD\tDWORD PTR ", "ESC_D9\t", "FST\tDWORD PTR ", "FSTP\tDWORD PTR ", - "FLDENV\t", "FLDCW\t", "FSTENV\t", "FSTCW\t", - - "FLD\tDWORD PTR ", "ESC_D9\t", "FST\tDWORD PTR ", "FSTP\tDWORD PTR ", - "FLDENV\t", "FLDCW\t", "FSTENV\t", "FSTCW\t", -}; - -static char *x86emu_fpu_op_d9_tab1[] = { - "FLD\t", "FLD\t", "FLD\t", "FLD\t", - "FLD\t", "FLD\t", "FLD\t", "FLD\t", - - "FXCH\t", "FXCH\t", "FXCH\t", "FXCH\t", - "FXCH\t", "FXCH\t", "FXCH\t", "FXCH\t", - - "FNOP", "ESC_D9", "ESC_D9", "ESC_D9", - "ESC_D9", "ESC_D9", "ESC_D9", "ESC_D9", - - "FSTP\t", "FSTP\t", "FSTP\t", "FSTP\t", - "FSTP\t", "FSTP\t", "FSTP\t", "FSTP\t", - - "FCHS", "FABS", "ESC_D9", "ESC_D9", - "FTST", "FXAM", "ESC_D9", "ESC_D9", - - "FLD1", "FLDL2T", "FLDL2E", "FLDPI", - "FLDLG2", "FLDLN2", "FLDZ", "ESC_D9", - - "F2XM1", "FYL2X", "FPTAN", "FPATAN", - "FXTRACT", "ESC_D9", "FDECSTP", "FINCSTP", - - "FPREM", "FYL2XP1", "FSQRT", "ESC_D9", - "FRNDINT", "FSCALE", "ESC_D9", "ESC_D9", -}; - -#endif /* DEBUG */ - -/* opcode=0xd9 */ -void x86emuOp_esc_coprocess_d9(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset = 0; - u8 stkelem = 0; - - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (mod != 3) { - DECODE_PRINTINSTR32(x86emu_fpu_op_d9_tab, mod, rh, rl); - } else { - DECODE_PRINTF(x86emu_fpu_op_d9_tab1[(rh << 3) + rl]); - } -#endif - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - break; - case 3: /* register to register */ - stkelem = (u8)rl; - if (rh < 4) { - DECODE_PRINTF2("ST(%d)\n", stkelem); - } else { - DECODE_PRINTF("\n"); - } - break; - } -#ifdef X86EMU_FPU_PRESENT - /* execute */ - switch (mod) { - case 3: - switch (rh) { - case 0: - x86emu_fpu_R_fld(X86EMU_FPU_STKTOP, stkelem); - break; - case 1: - x86emu_fpu_R_fxch(X86EMU_FPU_STKTOP, stkelem); - break; - case 2: - switch (rl) { - case 0: - x86emu_fpu_R_nop(); - break; - default: - x86emu_fpu_illegal(); - break; - } - case 3: - x86emu_fpu_R_fstp(X86EMU_FPU_STKTOP, stkelem); - break; - case 4: - switch (rl) { - case 0: - x86emu_fpu_R_fchs(X86EMU_FPU_STKTOP); - break; - case 1: - x86emu_fpu_R_fabs(X86EMU_FPU_STKTOP); - break; - case 4: - x86emu_fpu_R_ftst(X86EMU_FPU_STKTOP); - break; - case 5: - x86emu_fpu_R_fxam(X86EMU_FPU_STKTOP); - break; - default: - /* 2,3,6,7 */ - x86emu_fpu_illegal(); - break; - } - break; - - case 5: - switch (rl) { - case 0: - x86emu_fpu_R_fld1(X86EMU_FPU_STKTOP); - break; - case 1: - x86emu_fpu_R_fldl2t(X86EMU_FPU_STKTOP); - break; - case 2: - x86emu_fpu_R_fldl2e(X86EMU_FPU_STKTOP); - break; - case 3: - x86emu_fpu_R_fldpi(X86EMU_FPU_STKTOP); - break; - case 4: - x86emu_fpu_R_fldlg2(X86EMU_FPU_STKTOP); - break; - case 5: - x86emu_fpu_R_fldln2(X86EMU_FPU_STKTOP); - break; - case 6: - x86emu_fpu_R_fldz(X86EMU_FPU_STKTOP); - break; - default: - /* 7 */ - x86emu_fpu_illegal(); - break; - } - break; - - case 6: - switch (rl) { - case 0: - x86emu_fpu_R_f2xm1(X86EMU_FPU_STKTOP); - break; - case 1: - x86emu_fpu_R_fyl2x(X86EMU_FPU_STKTOP); - break; - case 2: - x86emu_fpu_R_fptan(X86EMU_FPU_STKTOP); - break; - case 3: - x86emu_fpu_R_fpatan(X86EMU_FPU_STKTOP); - break; - case 4: - x86emu_fpu_R_fxtract(X86EMU_FPU_STKTOP); - break; - case 5: - x86emu_fpu_illegal(); - break; - case 6: - x86emu_fpu_R_decstp(); - break; - case 7: - x86emu_fpu_R_incstp(); - break; - } - break; - - case 7: - switch (rl) { - case 0: - x86emu_fpu_R_fprem(X86EMU_FPU_STKTOP); - break; - case 1: - x86emu_fpu_R_fyl2xp1(X86EMU_FPU_STKTOP); - break; - case 2: - x86emu_fpu_R_fsqrt(X86EMU_FPU_STKTOP); - break; - case 3: - x86emu_fpu_illegal(); - break; - case 4: - x86emu_fpu_R_frndint(X86EMU_FPU_STKTOP); - break; - case 5: - x86emu_fpu_R_fscale(X86EMU_FPU_STKTOP); - break; - case 6: - case 7: - default: - x86emu_fpu_illegal(); - break; - } - break; - - default: - switch (rh) { - case 0: - x86emu_fpu_M_fld(X86EMU_FPU_FLOAT, destoffset); - break; - case 1: - x86emu_fpu_illegal(); - break; - case 2: - x86emu_fpu_M_fst(X86EMU_FPU_FLOAT, destoffset); - break; - case 3: - x86emu_fpu_M_fstp(X86EMU_FPU_FLOAT, destoffset); - break; - case 4: - x86emu_fpu_M_fldenv(X86EMU_FPU_WORD, destoffset); - break; - case 5: - x86emu_fpu_M_fldcw(X86EMU_FPU_WORD, destoffset); - break; - case 6: - x86emu_fpu_M_fstenv(X86EMU_FPU_WORD, destoffset); - break; - case 7: - x86emu_fpu_M_fstcw(X86EMU_FPU_WORD, destoffset); - break; - } - } - } -#else - (void)destoffset; - (void)stkelem; -#endif /* X86EMU_FPU_PRESENT */ - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR_NO_TRACE(); -} - -#ifdef DEBUG - -char *x86emu_fpu_op_da_tab[] = { - "FIADD\tDWORD PTR ", "FIMUL\tDWORD PTR ", "FICOM\tDWORD PTR ", - "FICOMP\tDWORD PTR ", - "FISUB\tDWORD PTR ", "FISUBR\tDWORD PTR ", "FIDIV\tDWORD PTR ", - "FIDIVR\tDWORD PTR ", - - "FIADD\tDWORD PTR ", "FIMUL\tDWORD PTR ", "FICOM\tDWORD PTR ", - "FICOMP\tDWORD PTR ", - "FISUB\tDWORD PTR ", "FISUBR\tDWORD PTR ", "FIDIV\tDWORD PTR ", - "FIDIVR\tDWORD PTR ", - - "FIADD\tDWORD PTR ", "FIMUL\tDWORD PTR ", "FICOM\tDWORD PTR ", - "FICOMP\tDWORD PTR ", - "FISUB\tDWORD PTR ", "FISUBR\tDWORD PTR ", "FIDIV\tDWORD PTR ", - "FIDIVR\tDWORD PTR ", - - "ESC_DA ", "ESC_DA ", "ESC_DA ", "ESC_DA ", - "ESC_DA ", "ESC_DA ", "ESC_DA ", "ESC_DA ", -}; - -#endif /* DEBUG */ - -/* opcode=0xda */ -void x86emuOp_esc_coprocess_da(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset = 0; - u8 stkelem = 0; - - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); - DECODE_PRINTINSTR32(x86emu_fpu_op_da_tab, mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - break; - case 3: /* register to register */ - stkelem = (u8)rl; - DECODE_PRINTF2("\tST(%d),ST\n", stkelem); - break; - } -#ifdef X86EMU_FPU_PRESENT - switch (mod) { - case 3: - x86emu_fpu_illegal(); - break; - default: - switch (rh) { - case 0: - x86emu_fpu_M_iadd(X86EMU_FPU_SHORT, destoffset); - break; - case 1: - x86emu_fpu_M_imul(X86EMU_FPU_SHORT, destoffset); - break; - case 2: - x86emu_fpu_M_icom(X86EMU_FPU_SHORT, destoffset); - break; - case 3: - x86emu_fpu_M_icomp(X86EMU_FPU_SHORT, destoffset); - break; - case 4: - x86emu_fpu_M_isub(X86EMU_FPU_SHORT, destoffset); - break; - case 5: - x86emu_fpu_M_isubr(X86EMU_FPU_SHORT, destoffset); - break; - case 6: - x86emu_fpu_M_idiv(X86EMU_FPU_SHORT, destoffset); - break; - case 7: - x86emu_fpu_M_idivr(X86EMU_FPU_SHORT, destoffset); - break; - } - } -#else - (void)destoffset; - (void)stkelem; -#endif - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR_NO_TRACE(); -} - -#ifdef DEBUG - -char *x86emu_fpu_op_db_tab[] = { - "FILD\tDWORD PTR ", "ESC_DB\t19", "FIST\tDWORD PTR ", "FISTP\tDWORD PTR ", - "ESC_DB\t1C", "FLD\tTBYTE PTR ", "ESC_DB\t1E", "FSTP\tTBYTE PTR ", - - "FILD\tDWORD PTR ", "ESC_DB\t19", "FIST\tDWORD PTR ", "FISTP\tDWORD PTR ", - "ESC_DB\t1C", "FLD\tTBYTE PTR ", "ESC_DB\t1E", "FSTP\tTBYTE PTR ", - - "FILD\tDWORD PTR ", "ESC_DB\t19", "FIST\tDWORD PTR ", "FISTP\tDWORD PTR ", - "ESC_DB\t1C", "FLD\tTBYTE PTR ", "ESC_DB\t1E", "FSTP\tTBYTE PTR ", -}; - -#endif /* DEBUG */ - -/* opcode=0xdb */ -void x86emuOp_esc_coprocess_db(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset = 0; - - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (mod != 3) { - DECODE_PRINTINSTR32(x86emu_fpu_op_db_tab, mod, rh, rl); - } else if (rh == 4) { /* === 11 10 0 nnn */ - switch (rl) { - case 0: - DECODE_PRINTF("FENI\n"); - break; - case 1: - DECODE_PRINTF("FDISI\n"); - break; - case 2: - DECODE_PRINTF("FCLEX\n"); - break; - case 3: - DECODE_PRINTF("FINIT\n"); - break; - } - } else { - DECODE_PRINTF2("ESC_DB %0x\n", (mod << 6) + (rh << 3) + (rl)); - } -#endif /* DEBUG */ - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - break; - case 1: - destoffset = decode_rm01_address(rl); - break; - case 2: - destoffset = decode_rm10_address(rl); - break; - case 3: /* register to register */ - break; - } -#ifdef X86EMU_FPU_PRESENT - /* execute */ - switch (mod) { - case 3: - switch (rh) { - case 4: - switch (rl) { - case 0: - x86emu_fpu_R_feni(); - break; - case 1: - x86emu_fpu_R_fdisi(); - break; - case 2: - x86emu_fpu_R_fclex(); - break; - case 3: - x86emu_fpu_R_finit(); - break; - default: - x86emu_fpu_illegal(); - break; - } - break; - default: - x86emu_fpu_illegal(); - break; - } - break; - default: - switch (rh) { - case 0: - x86emu_fpu_M_fild(X86EMU_FPU_SHORT, destoffset); - break; - case 1: - x86emu_fpu_illegal(); - break; - case 2: - x86emu_fpu_M_fist(X86EMU_FPU_SHORT, destoffset); - break; - case 3: - x86emu_fpu_M_fistp(X86EMU_FPU_SHORT, destoffset); - break; - case 4: - x86emu_fpu_illegal(); - break; - case 5: - x86emu_fpu_M_fld(X86EMU_FPU_LDBL, destoffset); - break; - case 6: - x86emu_fpu_illegal(); - break; - case 7: - x86emu_fpu_M_fstp(X86EMU_FPU_LDBL, destoffset); - break; - } - } -#else - (void)destoffset; -#endif - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR_NO_TRACE(); -} - -#ifdef DEBUG -char *x86emu_fpu_op_dc_tab[] = { - "FADD\tQWORD PTR ", "FMUL\tQWORD PTR ", "FCOM\tQWORD PTR ", - "FCOMP\tQWORD PTR ", - "FSUB\tQWORD PTR ", "FSUBR\tQWORD PTR ", "FDIV\tQWORD PTR ", - "FDIVR\tQWORD PTR ", - - "FADD\tQWORD PTR ", "FMUL\tQWORD PTR ", "FCOM\tQWORD PTR ", - "FCOMP\tQWORD PTR ", - "FSUB\tQWORD PTR ", "FSUBR\tQWORD PTR ", "FDIV\tQWORD PTR ", - "FDIVR\tQWORD PTR ", - - "FADD\tQWORD PTR ", "FMUL\tQWORD PTR ", "FCOM\tQWORD PTR ", - "FCOMP\tQWORD PTR ", - "FSUB\tQWORD PTR ", "FSUBR\tQWORD PTR ", "FDIV\tQWORD PTR ", - "FDIVR\tQWORD PTR ", - - "FADD\t", "FMUL\t", "FCOM\t", "FCOMP\t", - "FSUBR\t", "FSUB\t", "FDIVR\t", "FDIV\t", -}; -#endif /* DEBUG */ - -/* opcode=0xdc */ -void x86emuOp_esc_coprocess_dc(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset = 0; - u8 stkelem = 0; - - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); - DECODE_PRINTINSTR32(x86emu_fpu_op_dc_tab, mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - break; - case 3: /* register to register */ - stkelem = (u8)rl; - DECODE_PRINTF2("\tST(%d),ST\n", stkelem); - break; - } -#ifdef X86EMU_FPU_PRESENT - /* execute */ - switch (mod) { - case 3: - switch (rh) { - case 0: - x86emu_fpu_R_fadd(stkelem, X86EMU_FPU_STKTOP); - break; - case 1: - x86emu_fpu_R_fmul(stkelem, X86EMU_FPU_STKTOP); - break; - case 2: - x86emu_fpu_R_fcom(stkelem, X86EMU_FPU_STKTOP); - break; - case 3: - x86emu_fpu_R_fcomp(stkelem, X86EMU_FPU_STKTOP); - break; - case 4: - x86emu_fpu_R_fsubr(stkelem, X86EMU_FPU_STKTOP); - break; - case 5: - x86emu_fpu_R_fsub(stkelem, X86EMU_FPU_STKTOP); - break; - case 6: - x86emu_fpu_R_fdivr(stkelem, X86EMU_FPU_STKTOP); - break; - case 7: - x86emu_fpu_R_fdiv(stkelem, X86EMU_FPU_STKTOP); - break; - } - break; - default: - switch (rh) { - case 0: - x86emu_fpu_M_fadd(X86EMU_FPU_DOUBLE, destoffset); - break; - case 1: - x86emu_fpu_M_fmul(X86EMU_FPU_DOUBLE, destoffset); - break; - case 2: - x86emu_fpu_M_fcom(X86EMU_FPU_DOUBLE, destoffset); - break; - case 3: - x86emu_fpu_M_fcomp(X86EMU_FPU_DOUBLE, destoffset); - break; - case 4: - x86emu_fpu_M_fsub(X86EMU_FPU_DOUBLE, destoffset); - break; - case 5: - x86emu_fpu_M_fsubr(X86EMU_FPU_DOUBLE, destoffset); - break; - case 6: - x86emu_fpu_M_fdiv(X86EMU_FPU_DOUBLE, destoffset); - break; - case 7: - x86emu_fpu_M_fdivr(X86EMU_FPU_DOUBLE, destoffset); - break; - } - } -#else - (void)destoffset; - (void)stkelem; -#endif - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR_NO_TRACE(); -} - -#ifdef DEBUG - -static char *x86emu_fpu_op_dd_tab[] = { - "FLD\tQWORD PTR ", "ESC_DD\t29,", "FST\tQWORD PTR ", "FSTP\tQWORD PTR ", - "FRSTOR\t", "ESC_DD\t2D,", "FSAVE\t", "FSTSW\t", - - "FLD\tQWORD PTR ", "ESC_DD\t29,", "FST\tQWORD PTR ", "FSTP\tQWORD PTR ", - "FRSTOR\t", "ESC_DD\t2D,", "FSAVE\t", "FSTSW\t", - - "FLD\tQWORD PTR ", "ESC_DD\t29,", "FST\tQWORD PTR ", "FSTP\tQWORD PTR ", - "FRSTOR\t", "ESC_DD\t2D,", "FSAVE\t", "FSTSW\t", - - "FFREE\t", "FXCH\t", "FST\t", "FSTP\t", - "ESC_DD\t2C,", "ESC_DD\t2D,", "ESC_DD\t2E,", "ESC_DD\t2F,", -}; - -#endif /* DEBUG */ - -/* opcode=0xdd */ -void x86emuOp_esc_coprocess_dd(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset = 0; - u8 stkelem = 0; - - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); - DECODE_PRINTINSTR32(x86emu_fpu_op_dd_tab, mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - break; - case 3: /* register to register */ - stkelem = (u8)rl; - DECODE_PRINTF2("\tST(%d),ST\n", stkelem); - break; - } -#ifdef X86EMU_FPU_PRESENT - switch (mod) { - case 3: - switch (rh) { - case 0: - x86emu_fpu_R_ffree(stkelem); - break; - case 1: - x86emu_fpu_R_fxch(stkelem); - break; - case 2: - x86emu_fpu_R_fst(stkelem); /* register version */ - break; - case 3: - x86emu_fpu_R_fstp(stkelem); /* register version */ - break; - default: - x86emu_fpu_illegal(); - break; - } - break; - default: - switch (rh) { - case 0: - x86emu_fpu_M_fld(X86EMU_FPU_DOUBLE, destoffset); - break; - case 1: - x86emu_fpu_illegal(); - break; - case 2: - x86emu_fpu_M_fst(X86EMU_FPU_DOUBLE, destoffset); - break; - case 3: - x86emu_fpu_M_fstp(X86EMU_FPU_DOUBLE, destoffset); - break; - case 4: - x86emu_fpu_M_frstor(X86EMU_FPU_WORD, destoffset); - break; - case 5: - x86emu_fpu_illegal(); - break; - case 6: - x86emu_fpu_M_fsave(X86EMU_FPU_WORD, destoffset); - break; - case 7: - x86emu_fpu_M_fstsw(X86EMU_FPU_WORD, destoffset); - break; - } - } -#else - (void)destoffset; - (void)stkelem; -#endif - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR_NO_TRACE(); -} - -#ifdef DEBUG - -static char *x86emu_fpu_op_de_tab[] = -{ - "FIADD\tWORD PTR ", "FIMUL\tWORD PTR ", "FICOM\tWORD PTR ", - "FICOMP\tWORD PTR ", - "FISUB\tWORD PTR ", "FISUBR\tWORD PTR ", "FIDIV\tWORD PTR ", - "FIDIVR\tWORD PTR ", - - "FIADD\tWORD PTR ", "FIMUL\tWORD PTR ", "FICOM\tWORD PTR ", - "FICOMP\tWORD PTR ", - "FISUB\tWORD PTR ", "FISUBR\tWORD PTR ", "FIDIV\tWORD PTR ", - "FIDIVR\tWORD PTR ", - - "FIADD\tWORD PTR ", "FIMUL\tWORD PTR ", "FICOM\tWORD PTR ", - "FICOMP\tWORD PTR ", - "FISUB\tWORD PTR ", "FISUBR\tWORD PTR ", "FIDIV\tWORD PTR ", - "FIDIVR\tWORD PTR ", - - "FADDP\t", "FMULP\t", "FCOMP\t", "FCOMPP\t", - "FSUBRP\t", "FSUBP\t", "FDIVRP\t", "FDIVP\t", -}; - -#endif /* DEBUG */ - -/* opcode=0xde */ -void x86emuOp_esc_coprocess_de(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset = 0; - u8 stkelem = 0; - - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); - DECODE_PRINTINSTR32(x86emu_fpu_op_de_tab, mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - break; - case 3: /* register to register */ - stkelem = (u8)rl; - DECODE_PRINTF2("\tST(%d),ST\n", stkelem); - break; - } -#ifdef X86EMU_FPU_PRESENT - switch (mod) { - case 3: - switch (rh) { - case 0: - x86emu_fpu_R_faddp(stkelem, X86EMU_FPU_STKTOP); - break; - case 1: - x86emu_fpu_R_fmulp(stkelem, X86EMU_FPU_STKTOP); - break; - case 2: - x86emu_fpu_R_fcomp(stkelem, X86EMU_FPU_STKTOP); - break; - case 3: - if (stkelem == 1) - x86emu_fpu_R_fcompp(stkelem, X86EMU_FPU_STKTOP); - else - x86emu_fpu_illegal(); - break; - case 4: - x86emu_fpu_R_fsubrp(stkelem, X86EMU_FPU_STKTOP); - break; - case 5: - x86emu_fpu_R_fsubp(stkelem, X86EMU_FPU_STKTOP); - break; - case 6: - x86emu_fpu_R_fdivrp(stkelem, X86EMU_FPU_STKTOP); - break; - case 7: - x86emu_fpu_R_fdivp(stkelem, X86EMU_FPU_STKTOP); - break; - } - break; - default: - switch (rh) { - case 0: - x86emu_fpu_M_fiadd(X86EMU_FPU_WORD, destoffset); - break; - case 1: - x86emu_fpu_M_fimul(X86EMU_FPU_WORD, destoffset); - break; - case 2: - x86emu_fpu_M_ficom(X86EMU_FPU_WORD, destoffset); - break; - case 3: - x86emu_fpu_M_ficomp(X86EMU_FPU_WORD, destoffset); - break; - case 4: - x86emu_fpu_M_fisub(X86EMU_FPU_WORD, destoffset); - break; - case 5: - x86emu_fpu_M_fisubr(X86EMU_FPU_WORD, destoffset); - break; - case 6: - x86emu_fpu_M_fidiv(X86EMU_FPU_WORD, destoffset); - break; - case 7: - x86emu_fpu_M_fidivr(X86EMU_FPU_WORD, destoffset); - break; - } - } -#else - (void)destoffset; - (void)stkelem; -#endif - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR_NO_TRACE(); -} - -#ifdef DEBUG - -static char *x86emu_fpu_op_df_tab[] = { - /* mod == 00 */ - "FILD\tWORD PTR ", "ESC_DF\t39\n", "FIST\tWORD PTR ", "FISTP\tWORD PTR ", - "FBLD\tTBYTE PTR ", "FILD\tQWORD PTR ", "FBSTP\tTBYTE PTR ", - "FISTP\tQWORD PTR ", - - /* mod == 01 */ - "FILD\tWORD PTR ", "ESC_DF\t39 ", "FIST\tWORD PTR ", "FISTP\tWORD PTR ", - "FBLD\tTBYTE PTR ", "FILD\tQWORD PTR ", "FBSTP\tTBYTE PTR ", - "FISTP\tQWORD PTR ", - - /* mod == 10 */ - "FILD\tWORD PTR ", "ESC_DF\t39 ", "FIST\tWORD PTR ", "FISTP\tWORD PTR ", - "FBLD\tTBYTE PTR ", "FILD\tQWORD PTR ", "FBSTP\tTBYTE PTR ", - "FISTP\tQWORD PTR ", - - /* mod == 11 */ - "FFREE\t", "FXCH\t", "FST\t", "FSTP\t", - "ESC_DF\t3C,", "ESC_DF\t3D,", "ESC_DF\t3E,", "ESC_DF\t3F," -}; - -#endif /* DEBUG */ - -/* opcode=0xdf */ -void x86emuOp_esc_coprocess_df(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset = 0; - u8 stkelem = 0; - - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); - DECODE_PRINTINSTR32(x86emu_fpu_op_df_tab, mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - break; - case 3: /* register to register */ - stkelem = (u8)rl; - DECODE_PRINTF2("\tST(%d)\n", stkelem); - break; - } -#ifdef X86EMU_FPU_PRESENT - switch (mod) { - case 3: - switch (rh) { - case 0: - x86emu_fpu_R_ffree(stkelem); - break; - case 1: - x86emu_fpu_R_fxch(stkelem); - break; - case 2: - x86emu_fpu_R_fst(stkelem); /* register version */ - break; - case 3: - x86emu_fpu_R_fstp(stkelem); /* register version */ - break; - default: - x86emu_fpu_illegal(); - break; - } - break; - default: - switch (rh) { - case 0: - x86emu_fpu_M_fild(X86EMU_FPU_WORD, destoffset); - break; - case 1: - x86emu_fpu_illegal(); - break; - case 2: - x86emu_fpu_M_fist(X86EMU_FPU_WORD, destoffset); - break; - case 3: - x86emu_fpu_M_fistp(X86EMU_FPU_WORD, destoffset); - break; - case 4: - x86emu_fpu_M_fbld(X86EMU_FPU_BSD, destoffset); - break; - case 5: - x86emu_fpu_M_fild(X86EMU_FPU_LONG, destoffset); - break; - case 6: - x86emu_fpu_M_fbstp(X86EMU_FPU_BSD, destoffset); - break; - case 7: - x86emu_fpu_M_fistp(X86EMU_FPU_LONG, destoffset); - break; - } - } -#else - (void)destoffset; - (void)stkelem; -#endif - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR_NO_TRACE(); -} diff --git a/src/hwinfo/src/x86emu/include/x86emu.h b/src/hwinfo/src/x86emu/include/x86emu.h deleted file mode 100644 index fd8ecff755..0000000000 --- a/src/hwinfo/src/x86emu/include/x86emu.h +++ /dev/null @@ -1,199 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: Header file for public specific functions. -* Any application linking against us should only -* include this header -* -****************************************************************************/ -/* $XFree86$ */ - -#ifndef __X86EMU_X86EMU_H -#define __X86EMU_X86EMU_H - -#ifdef SCITECH -#include "scitech.h" -#define X86API _ASMAPI -#define X86APIP _ASMAPIP -typedef int X86EMU_pioAddr; -#else -#include "x86emu/types.h" -#define X86API -#define X86APIP * -#endif -#include "x86emu/regs.h" - -/*---------------------- Macros and type definitions ----------------------*/ - -#ifdef PACK -# pragma PACK /* Don't pack structs with function pointers! */ -#endif - -/**************************************************************************** -REMARKS: -Data structure containing ponters to programmed I/O functions used by the -emulator. This is used so that the user program can hook all programmed -I/O for the emulator to handled as necessary by the user program. By -default the emulator contains simple functions that do not do access the -hardware in any way. To allow the emualtor access the hardware, you will -need to override the programmed I/O functions using the X86EMU_setupPioFuncs -function. - -HEADER: -x86emu.h - -MEMBERS: -inb - Function to read a byte from an I/O port -inw - Function to read a word from an I/O port -inl - Function to read a dword from an I/O port -outb - Function to write a byte to an I/O port -outw - Function to write a word to an I/O port -outl - Function to write a dword to an I/O port -****************************************************************************/ -typedef struct { - u8 (X86APIP inb)(X86EMU_pioAddr addr); - u16 (X86APIP inw)(X86EMU_pioAddr addr); - u32 (X86APIP inl)(X86EMU_pioAddr addr); - void (X86APIP outb)(X86EMU_pioAddr addr, u8 val); - void (X86APIP outw)(X86EMU_pioAddr addr, u16 val); - void (X86APIP outl)(X86EMU_pioAddr addr, u32 val); - } X86EMU_pioFuncs; - -/**************************************************************************** -REMARKS: -Data structure containing ponters to memory access functions used by the -emulator. This is used so that the user program can hook all memory -access functions as necessary for the emulator. By default the emulator -contains simple functions that only access the internal memory of the -emulator. If you need specialised functions to handle access to different -types of memory (ie: hardware framebuffer accesses and BIOS memory access -etc), you will need to override this using the X86EMU_setupMemFuncs -function. - -HEADER: -x86emu.h - -MEMBERS: -rdb - Function to read a byte from an address -rdw - Function to read a word from an address -rdl - Function to read a dword from an address -wrb - Function to write a byte to an address -wrw - Function to write a word to an address -wrl - Function to write a dword to an address -****************************************************************************/ -typedef struct { - u8 (X86APIP rdb)(u32 addr); - u16 (X86APIP rdw)(u32 addr); - u32 (X86APIP rdl)(u32 addr); - void (X86APIP wrb)(u32 addr, u8 val); - void (X86APIP wrw)(u32 addr, u16 val); - void (X86APIP wrl)(u32 addr, u32 val); - } X86EMU_memFuncs; - -/**************************************************************************** - Here are the default memory read and write - function in case they are needed as fallbacks. -***************************************************************************/ -extern u8 X86API rdb(u32 addr); -extern u16 X86API rdw(u32 addr); -extern u32 X86API rdl(u32 addr); -extern void X86API wrb(u32 addr, u8 val); -extern void X86API wrw(u32 addr, u16 val); -extern void X86API wrl(u32 addr, u32 val); - -#ifdef END_PACK -# pragma END_PACK -#endif - -/*--------------------- type definitions -----------------------------------*/ - -typedef void (X86APIP X86EMU_intrFuncs)(int num); -extern X86EMU_intrFuncs _X86EMU_intrTab[256]; - -/*-------------------------- Function Prototypes --------------------------*/ - -#ifdef __cplusplus -extern "C" { /* Use "C" linkage when in C++ mode */ -#endif - -void X86EMU_setupMemFuncs(X86EMU_memFuncs *funcs); -void X86EMU_setupPioFuncs(X86EMU_pioFuncs *funcs); -void X86EMU_setupIntrFuncs(X86EMU_intrFuncs funcs[]); -void X86EMU_prepareForInt(int num); - -/* decode.c */ - -void X86EMU_exec(unsigned timeout); -void X86EMU_halt_sys(void); - -#ifdef DEBUG -#define HALT_SYS() \ - printk("halt_sys: file %s, line %d\n", __FILE__, __LINE__), \ - X86EMU_halt_sys() -#else -#define HALT_SYS() X86EMU_halt_sys() -#endif - -/* Debug options */ - -#define DEBUG_DECODE_F 0x000001 /* print decoded instruction */ -#define DEBUG_TRACE_F 0x000002 /* dump regs before/after execution */ -#define DEBUG_STEP_F 0x000004 -#define DEBUG_DISASSEMBLE_F 0x000008 -#define DEBUG_BREAK_F 0x000010 -#define DEBUG_SVC_F 0x000020 -#define DEBUG_SAVE_IP_CS_F 0x000040 -#define DEBUG_FS_F 0x000080 -#define DEBUG_PROC_F 0x000100 -#define DEBUG_SYSINT_F 0x000200 /* bios system interrupts. */ -#define DEBUG_TRACECALL_F 0x000400 -#define DEBUG_INSTRUMENT_F 0x000800 -#define DEBUG_MEM_TRACE_F 0x001000 -#define DEBUG_IO_TRACE_F 0x002000 -#define DEBUG_TRACECALL_REGS_F 0x004000 -#define DEBUG_DECODE_NOPRINT_F 0x008000 -#define DEBUG_EXIT 0x010000 -#define DEBUG_SYS_F (DEBUG_SVC_F|DEBUG_FS_F|DEBUG_PROC_F) - -void X86EMU_trace_regs(void); -void X86EMU_trace_xregs(void); -void X86EMU_dump_memory(u16 seg, u16 off, u32 amt); -int X86EMU_trace_on(void); -int X86EMU_trace_off(void); - -#ifdef __cplusplus -} /* End of "C" linkage for C++ */ -#endif - -#endif /* __X86EMU_X86EMU_H */ diff --git a/src/hwinfo/src/x86emu/include/x86emu/fpu_regs.h b/src/hwinfo/src/x86emu/include/x86emu/fpu_regs.h deleted file mode 100644 index a62b49362b..0000000000 --- a/src/hwinfo/src/x86emu/include/x86emu/fpu_regs.h +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: Header file for FPU register definitions. -* -****************************************************************************/ -/* $XFree86: xc/extras/x86emu/include/x86emu/fpu_regs.h,v 1.2 2003/10/22 20:03:05 tsi Exp $ */ - -#ifndef __X86EMU_FPU_REGS_H -#define __X86EMU_FPU_REGS_H - -#ifdef X86_FPU_SUPPORT - -#ifdef PACK -# pragma PACK -#endif - -/* Basic 8087 register can hold any of the following values: */ - -union x86_fpu_reg_u { - s8 tenbytes[10]; - double dval; - float fval; - s16 sval; - s32 lval; - }; - -struct x86_fpu_reg { - union x86_fpu_reg_u reg; - char tag; - }; - -/* - * Since we are not going to worry about the problems of aliasing - * registers, every time a register is modified, its result type is - * set in the tag fields for that register. If some operation - * attempts to access the type in a way inconsistent with its current - * storage format, then we flag the operation. If common, we'll - * attempt the conversion. - */ - -#define X86_FPU_VALID 0x80 -#define X86_FPU_REGTYP(r) ((r) & 0x7F) - -#define X86_FPU_WORD 0x0 -#define X86_FPU_SHORT 0x1 -#define X86_FPU_LONG 0x2 -#define X86_FPU_FLOAT 0x3 -#define X86_FPU_DOUBLE 0x4 -#define X86_FPU_LDBL 0x5 -#define X86_FPU_BSD 0x6 - -#define X86_FPU_STKTOP 0 - -struct x86_fpu_registers { - struct x86_fpu_reg x86_fpu_stack[8]; - int x86_fpu_flags; - int x86_fpu_config; /* rounding modes, etc. */ - short x86_fpu_tos, x86_fpu_bos; - }; - -#ifdef END_PACK -# pragma END_PACK -#endif - -/* - * There are two versions of the following macro. - * - * One version is for opcode D9, for which there are more than 32 - * instructions encoded in the second byte of the opcode. - * - * The other version, deals with all the other 7 i87 opcodes, for - * which there are only 32 strings needed to describe the - * instructions. - */ - -#endif /* X86_FPU_SUPPORT */ - -#ifdef DEBUG -# define DECODE_PRINTINSTR32(t,mod,rh,rl) \ - DECODE_PRINTF(t[(mod<<3)+(rh)]); -# define DECODE_PRINTINSTR256(t,mod,rh,rl) \ - DECODE_PRINTF(t[(mod<<6)+(rh<<3)+(rl)]); -#else -# define DECODE_PRINTINSTR32(t,mod,rh,rl) -# define DECODE_PRINTINSTR256(t,mod,rh,rl) -#endif - -#endif /* __X86EMU_FPU_REGS_H */ diff --git a/src/hwinfo/src/x86emu/include/x86emu/regs.h b/src/hwinfo/src/x86emu/include/x86emu/regs.h deleted file mode 100644 index 5d224ce410..0000000000 --- a/src/hwinfo/src/x86emu/include/x86emu/regs.h +++ /dev/null @@ -1,338 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: Header file for x86 register definitions. -* -****************************************************************************/ -/* $XFree86: xc/extras/x86emu/include/x86emu/regs.h,v 1.5 2003/10/22 20:03:05 tsi Exp $ */ - -#ifndef __X86EMU_REGS_H -#define __X86EMU_REGS_H - -/*---------------------- Macros and type definitions ----------------------*/ - -#ifdef PACK -# pragma PACK -#endif - -/* - * General EAX, EBX, ECX, EDX type registers. Note that for - * portability, and speed, the issue of byte swapping is not addressed - * in the registers. All registers are stored in the default format - * available on the host machine. The only critical issue is that the - * registers should line up EXACTLY in the same manner as they do in - * the 386. That is: - * - * EAX & 0xff === AL - * EAX & 0xffff == AX - * - * etc. The result is that alot of the calculations can then be - * done using the native instruction set fully. - */ - -#ifdef __BIG_ENDIAN__ - -typedef struct { - u32 e_reg; - } I32_reg_t; - -typedef struct { - u16 filler0, x_reg; - } I16_reg_t; - -typedef struct { - u8 filler0, filler1, h_reg, l_reg; - } I8_reg_t; - -#else /* !__BIG_ENDIAN__ */ - -typedef struct { - u32 e_reg; - } I32_reg_t; - -typedef struct { - u16 x_reg; - } I16_reg_t; - -typedef struct { - u8 l_reg, h_reg; - } I8_reg_t; - -#endif /* BIG_ENDIAN */ - -typedef union { - I32_reg_t I32_reg; - I16_reg_t I16_reg; - I8_reg_t I8_reg; - } i386_general_register; - -struct i386_general_regs { - i386_general_register A, B, C, D; - }; - -typedef struct i386_general_regs Gen_reg_t; - -struct i386_special_regs { - i386_general_register SP, BP, SI, DI, IP; - u32 FLAGS; - }; - -/* - * Segment registers here represent the 16 bit quantities - * CS, DS, ES, SS. - */ - -struct i386_segment_regs { - u16 CS, DS, SS, ES, FS, GS; - }; - -/* 8 bit registers */ -#define R_AH gen.A.I8_reg.h_reg -#define R_AL gen.A.I8_reg.l_reg -#define R_BH gen.B.I8_reg.h_reg -#define R_BL gen.B.I8_reg.l_reg -#define R_CH gen.C.I8_reg.h_reg -#define R_CL gen.C.I8_reg.l_reg -#define R_DH gen.D.I8_reg.h_reg -#define R_DL gen.D.I8_reg.l_reg - -/* 16 bit registers */ -#define R_AX gen.A.I16_reg.x_reg -#define R_BX gen.B.I16_reg.x_reg -#define R_CX gen.C.I16_reg.x_reg -#define R_DX gen.D.I16_reg.x_reg - -/* 32 bit extended registers */ -#define R_EAX gen.A.I32_reg.e_reg -#define R_EBX gen.B.I32_reg.e_reg -#define R_ECX gen.C.I32_reg.e_reg -#define R_EDX gen.D.I32_reg.e_reg - -/* special registers */ -#define R_SP spc.SP.I16_reg.x_reg -#define R_BP spc.BP.I16_reg.x_reg -#define R_SI spc.SI.I16_reg.x_reg -#define R_DI spc.DI.I16_reg.x_reg -#define R_IP spc.IP.I16_reg.x_reg -#define R_FLG spc.FLAGS - -/* special registers */ -#define R_SP spc.SP.I16_reg.x_reg -#define R_BP spc.BP.I16_reg.x_reg -#define R_SI spc.SI.I16_reg.x_reg -#define R_DI spc.DI.I16_reg.x_reg -#define R_IP spc.IP.I16_reg.x_reg -#define R_FLG spc.FLAGS - -/* special registers */ -#define R_ESP spc.SP.I32_reg.e_reg -#define R_EBP spc.BP.I32_reg.e_reg -#define R_ESI spc.SI.I32_reg.e_reg -#define R_EDI spc.DI.I32_reg.e_reg -#define R_EIP spc.IP.I32_reg.e_reg -#define R_EFLG spc.FLAGS - -/* segment registers */ -#define R_CS seg.CS -#define R_DS seg.DS -#define R_SS seg.SS -#define R_ES seg.ES -#define R_FS seg.FS -#define R_GS seg.GS - -/* flag conditions */ -#define FB_CF 0x0001 /* CARRY flag */ -#define FB_PF 0x0004 /* PARITY flag */ -#define FB_AF 0x0010 /* AUX flag */ -#define FB_ZF 0x0040 /* ZERO flag */ -#define FB_SF 0x0080 /* SIGN flag */ -#define FB_TF 0x0100 /* TRAP flag */ -#define FB_IF 0x0200 /* INTERRUPT ENABLE flag */ -#define FB_DF 0x0400 /* DIR flag */ -#define FB_OF 0x0800 /* OVERFLOW flag */ - -/* 80286 and above always have bit#1 set */ -#define F_ALWAYS_ON (0x0002) /* flag bits always on */ - -/* - * Define a mask for only those flag bits we will ever pass back - * (via PUSHF) - */ -#define F_MSK (FB_CF|FB_PF|FB_AF|FB_ZF|FB_SF|FB_TF|FB_IF|FB_DF|FB_OF) - -/* following bits masked in to a 16bit quantity */ - -#define F_CF 0x0001 /* CARRY flag */ -#define F_PF 0x0004 /* PARITY flag */ -#define F_AF 0x0010 /* AUX flag */ -#define F_ZF 0x0040 /* ZERO flag */ -#define F_SF 0x0080 /* SIGN flag */ -#define F_TF 0x0100 /* TRAP flag */ -#define F_IF 0x0200 /* INTERRUPT ENABLE flag */ -#define F_DF 0x0400 /* DIR flag */ -#define F_OF 0x0800 /* OVERFLOW flag */ - -#define TOGGLE_FLAG(flag) (M.x86.R_FLG ^= (flag)) -#define SET_FLAG(flag) (M.x86.R_FLG |= (flag)) -#define CLEAR_FLAG(flag) (M.x86.R_FLG &= ~(flag)) -#define ACCESS_FLAG(flag) (M.x86.R_FLG & (flag)) -#define CLEARALL_FLAG(m) (M.x86.R_FLG = 0) - -#define CONDITIONAL_SET_FLAG(COND,FLAG) \ - if (COND) SET_FLAG(FLAG); else CLEAR_FLAG(FLAG) - -#define F_PF_CALC 0x010000 /* PARITY flag has been calced */ -#define F_ZF_CALC 0x020000 /* ZERO flag has been calced */ -#define F_SF_CALC 0x040000 /* SIGN flag has been calced */ - -#define F_ALL_CALC 0xff0000 /* All have been calced */ - -/* - * Emulator machine state. - * Segment usage control. - */ -#define SYSMODE_SEG_DS_SS 0x00000001 -#define SYSMODE_SEGOVR_CS 0x00000002 -#define SYSMODE_SEGOVR_DS 0x00000004 -#define SYSMODE_SEGOVR_ES 0x00000008 -#define SYSMODE_SEGOVR_FS 0x00000010 -#define SYSMODE_SEGOVR_GS 0x00000020 -#define SYSMODE_SEGOVR_SS 0x00000040 -#define SYSMODE_PREFIX_REPE 0x00000080 -#define SYSMODE_PREFIX_REPNE 0x00000100 -#define SYSMODE_PREFIX_DATA 0x00000200 -#define SYSMODE_PREFIX_ADDR 0x00000400 -#define SYSMODE_INTR_PENDING 0x10000000 -#define SYSMODE_EXTRN_INTR 0x20000000 -#define SYSMODE_HALTED 0x40000000 - -#define SYSMODE_SEGMASK (SYSMODE_SEG_DS_SS | \ - SYSMODE_SEGOVR_CS | \ - SYSMODE_SEGOVR_DS | \ - SYSMODE_SEGOVR_ES | \ - SYSMODE_SEGOVR_FS | \ - SYSMODE_SEGOVR_GS | \ - SYSMODE_SEGOVR_SS) -#define SYSMODE_CLRMASK (SYSMODE_SEG_DS_SS | \ - SYSMODE_SEGOVR_CS | \ - SYSMODE_SEGOVR_DS | \ - SYSMODE_SEGOVR_ES | \ - SYSMODE_SEGOVR_FS | \ - SYSMODE_SEGOVR_GS | \ - SYSMODE_SEGOVR_SS | \ - SYSMODE_PREFIX_DATA | \ - SYSMODE_PREFIX_ADDR) - -#define INTR_SYNCH 0x1 -#define INTR_ASYNCH 0x2 -#define INTR_HALTED 0x4 - -typedef struct { - struct i386_general_regs gen; - struct i386_special_regs spc; - struct i386_segment_regs seg; - /* - * MODE contains information on: - * REPE prefix 2 bits repe,repne - * SEGMENT overrides 5 bits normal,DS,SS,CS,ES - * Delayed flag set 3 bits (zero, signed, parity) - * reserved 6 bits - * interrupt # 8 bits instruction raised interrupt - * BIOS video segregs 4 bits - * Interrupt Pending 1 bits - * Extern interrupt 1 bits - * Halted 1 bits - */ - u32 mode; - volatile int intr; /* mask of pending interrupts */ - int debug; -#ifdef DEBUG - int check; - u16 saved_ip; - u16 saved_cs; - int enc_pos; - int enc_str_pos; - char decode_buf[32]; /* encoded byte stream */ - char decoded_buf[256]; /* disassembled strings */ -#endif - u8 intno; - u8 __pad[3]; - } X86EMU_regs; - -/**************************************************************************** -REMARKS: -Structure maintaining the emulator machine state. - -MEMBERS: -mem_base - Base real mode memory for the emulator -mem_size - Size of the real mode memory block for the emulator -private - private data pointer -x86 - X86 registers -****************************************************************************/ -typedef struct { - unsigned long mem_base; - unsigned long mem_size; - void* private; - X86EMU_regs x86; - } X86EMU_sysEnv; - -#ifdef END_PACK -# pragma END_PACK -#endif - -/*----------------------------- Global Variables --------------------------*/ - -#ifdef __cplusplus -extern "C" { /* Use "C" linkage when in C++ mode */ -#endif - -/* Global emulator machine state. - * - * We keep it global to avoid pointer dereferences in the code for speed. - */ - -extern X86EMU_sysEnv _X86EMU_env; -#define M _X86EMU_env - -/*-------------------------- Function Prototypes --------------------------*/ - -/* Function to log information at runtime */ - -void printk(const char *fmt, ...); - -#ifdef __cplusplus -} /* End of "C" linkage for C++ */ -#endif - -#endif /* __X86EMU_REGS_H */ diff --git a/src/hwinfo/src/x86emu/include/x86emu/types.h b/src/hwinfo/src/x86emu/include/x86emu/types.h deleted file mode 100644 index f31d77fe63..0000000000 --- a/src/hwinfo/src/x86emu/include/x86emu/types.h +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: Header file for x86 emulator type definitions. -* -****************************************************************************/ - -/* $XFree86: xc/extras/x86emu/include/x86emu/types.h,v 1.6 2003/06/12 14:12:26 eich Exp $ */ - -#ifndef __X86EMU_TYPES_H -#define __X86EMU_TYPES_H - -#ifndef IN_MODULE -#include -#endif - -/* - * The following kludge is an attempt to work around typedef conflicts with - * . - */ -#define u8 x86emuu8 -#define u16 x86emuu16 -#define u32 x86emuu32 -#define u64 x86emuu64 -#define s8 x86emus8 -#define s16 x86emus16 -#define s32 x86emus32 -#define s64 x86emus64 -#define uint x86emuuint -#define sint x86emusint - -/*---------------------- Macros and type definitions ----------------------*/ - -/* Currently only for Linux/32bit */ -#undef __HAS_LONG_LONG__ -#if defined(__GNUC__) && !defined(NO_LONG_LONG) -#define __HAS_LONG_LONG__ -#endif - -/* Taken from Xmd.h */ -#undef NUM32 -#if defined (_LP64) || \ - defined(__alpha) || defined(__alpha__) || \ - defined(__ia64__) || defined(ia64) || \ - defined(__sparc64__) || \ - defined(__s390x__) || \ - (defined(__hppa__) && defined(__LP64)) || \ - defined(__AMD64__) || defined(AMD64) || \ - (defined(__sgi) && (_MIPS_SZLONG == 64)) -#define NUM32 int -#else -#define NUM32 long -#endif - -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned NUM32 u32; -#ifdef __HAS_LONG_LONG__ -typedef unsigned long long u64; -#endif - -typedef char s8; -typedef short s16; -typedef NUM32 s32; -#ifdef __HAS_LONG_LONG__ -typedef long long s64; -#endif - -typedef unsigned int uint; -typedef int sint; - -typedef u16 X86EMU_pioAddr; - -#undef NUM32 - -#endif /* __X86EMU_TYPES_H */ diff --git a/src/hwinfo/src/x86emu/ops.c b/src/hwinfo/src/x86emu/ops.c deleted file mode 100644 index 6fc936b284..0000000000 --- a/src/hwinfo/src/x86emu/ops.c +++ /dev/null @@ -1,11699 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: This file includes subroutines to implement the decoding -* and emulation of all the x86 processor instructions. -* -* There are approximately 250 subroutines in here, which correspond -* to the 256 byte-"opcodes" found on the 8086. The table which -* dispatches this is found in the files optab.[ch]. -* -* Each opcode proc has a comment preceeding it which gives it's table -* address. Several opcodes are missing (undefined) in the table. -* -* Each proc includes information for decoding (DECODE_PRINTF and -* DECODE_PRINTF2), debugging (TRACE_REGS, SINGLE_STEP), and misc -* functions (START_OF_INSTR, END_OF_INSTR). -* -* Many of the procedures are *VERY* similar in coding. This has -* allowed for a very large amount of code to be generated in a fairly -* short amount of time (i.e. cut, paste, and modify). The result is -* that much of the code below could have been folded into subroutines -* for a large reduction in size of this file. The downside would be -* that there would be a penalty in execution speed. The file could -* also have been *MUCH* larger by inlining certain functions which -* were called. This could have resulted even faster execution. The -* prime directive I used to decide whether to inline the code or to -* modularize it, was basically: 1) no unnecessary subroutine calls, -* 2) no routines more than about 200 lines in size, and 3) modularize -* any code that I might not get right the first time. The fetch_* -* subroutines fall into the latter category. The The decode_* fall -* into the second category. The coding of the "switch(mod){ .... }" -* in many of the subroutines below falls into the first category. -* Especially, the coding of {add,and,or,sub,...}_{byte,word} -* subroutines are an especially glaring case of the third guideline. -* Since so much of the code is cloned from other modules (compare -* opcode #00 to opcode #01), making the basic operations subroutine -* calls is especially important; otherwise mistakes in coding an -* "add" would represent a nightmare in maintenance. -* -****************************************************************************/ - -/* $XFree86: xc/extras/x86emu/src/x86emu/ops.c,v 1.8tsi Exp $ */ - -#include "x86emu/x86emui.h" - -/*----------------------------- Implementation ----------------------------*/ - -/**************************************************************************** -PARAMETERS: -op1 - Instruction op code - -REMARKS: -Handles illegal opcodes. -****************************************************************************/ -static void x86emuOp_illegal_op( - u8 op1) -{ - START_OF_INSTR(); - if (M.x86.R_SP != 0) { - DECODE_PRINTF("ILLEGAL X86 OPCODE\n"); - TRACE_REGS(); - printk("%04x:%04x: %02X ILLEGAL X86 OPCODE!\n", - M.x86.R_CS, M.x86.R_IP-1,op1); - HALT_SYS(); - } - else { - /* If we get here, it means the stack pointer is back to zero - * so we are just returning from an emulator service call - * so therte is no need to display an error message. We trap - * the emulator with an 0xF1 opcode to finish the service - * call. - */ - X86EMU_halt_sys(); - } - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x00 -****************************************************************************/ -static void x86emuOp_add_byte_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - u8 *destreg, *srcreg; - u8 destval; - - START_OF_INSTR(); - DECODE_PRINTF("ADD\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = add_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = add_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = add_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x01 -****************************************************************************/ -static void x86emuOp_add_word_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("ADD\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = add_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = add_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = add_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = add_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = add_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = add_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x02 -****************************************************************************/ -static void x86emuOp_add_byte_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint srcoffset; - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("ADD\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_byte(*destreg, srcval); - break; - case 1: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_byte(*destreg, srcval); - break; - case 2: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_byte(*destreg, srcval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x03 -****************************************************************************/ -static void x86emuOp_add_word_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("ADD\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_word(*destreg, srcval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_word(*destreg, srcval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_word(*destreg, srcval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = add_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x04 -****************************************************************************/ -static void x86emuOp_add_byte_AL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("ADD\tAL,"); - srcval = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - M.x86.R_AL = add_byte(M.x86.R_AL, srcval); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x05 -****************************************************************************/ -static void x86emuOp_add_word_AX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("ADD\tEAX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("ADD\tAX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = add_long(M.x86.R_EAX, srcval); - } else { - M.x86.R_AX = add_word(M.x86.R_AX, (u16)srcval); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x06 -****************************************************************************/ -static void x86emuOp_push_ES(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("PUSH\tES\n"); - TRACE_AND_STEP(); - push_word(M.x86.R_ES); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x07 -****************************************************************************/ -static void x86emuOp_pop_ES(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("POP\tES\n"); - TRACE_AND_STEP(); - M.x86.R_ES = pop_word(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x08 -****************************************************************************/ -static void x86emuOp_or_byte_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint destoffset; - u8 destval; - - START_OF_INSTR(); - DECODE_PRINTF("OR\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = or_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = or_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = or_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x09 -****************************************************************************/ -static void x86emuOp_or_word_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("OR\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = or_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = or_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = or_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = or_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = or_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = or_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0a -****************************************************************************/ -static void x86emuOp_or_byte_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint srcoffset; - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("OR\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_byte(*destreg, srcval); - break; - case 1: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_byte(*destreg, srcval); - break; - case 2: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_byte(*destreg, srcval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0b -****************************************************************************/ -static void x86emuOp_or_word_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("OR\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_word(*destreg, srcval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_word(*destreg, srcval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_word(*destreg, srcval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = or_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0c -****************************************************************************/ -static void x86emuOp_or_byte_AL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("OR\tAL,"); - srcval = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - M.x86.R_AL = or_byte(M.x86.R_AL, srcval); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0d -****************************************************************************/ -static void x86emuOp_or_word_AX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("OR\tEAX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("OR\tAX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = or_long(M.x86.R_EAX, srcval); - } else { - M.x86.R_AX = or_word(M.x86.R_AX, (u16)srcval); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0e -****************************************************************************/ -static void x86emuOp_push_CS(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("PUSH\tCS\n"); - TRACE_AND_STEP(); - push_word(M.x86.R_CS); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f. Escape for two-byte opcode (286 or better) -****************************************************************************/ -static void x86emuOp_two_byte(u8 X86EMU_UNUSED(op1)) -{ - u8 op2 = (*sys_rdb)(((u32)M.x86.R_CS << 4) + (M.x86.R_IP++)); - INC_DECODED_INST_LEN(1); - (*x86emu_optab2[op2])(op2); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x10 -****************************************************************************/ -static void x86emuOp_adc_byte_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint destoffset; - u8 destval; - - START_OF_INSTR(); - DECODE_PRINTF("ADC\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = adc_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = adc_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = adc_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x11 -****************************************************************************/ -static void x86emuOp_adc_word_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("ADC\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = adc_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = adc_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = adc_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = adc_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = adc_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = adc_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x12 -****************************************************************************/ -static void x86emuOp_adc_byte_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint srcoffset; - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("ADC\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_byte(*destreg, srcval); - break; - case 1: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_byte(*destreg, srcval); - break; - case 2: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_byte(*destreg, srcval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x13 -****************************************************************************/ -static void x86emuOp_adc_word_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("ADC\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_word(*destreg, srcval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_word(*destreg, srcval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_word(*destreg, srcval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = adc_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x14 -****************************************************************************/ -static void x86emuOp_adc_byte_AL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("ADC\tAL,"); - srcval = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - M.x86.R_AL = adc_byte(M.x86.R_AL, srcval); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x15 -****************************************************************************/ -static void x86emuOp_adc_word_AX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("ADC\tEAX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("ADC\tAX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = adc_long(M.x86.R_EAX, srcval); - } else { - M.x86.R_AX = adc_word(M.x86.R_AX, (u16)srcval); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x16 -****************************************************************************/ -static void x86emuOp_push_SS(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("PUSH\tSS\n"); - TRACE_AND_STEP(); - push_word(M.x86.R_SS); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x17 -****************************************************************************/ -static void x86emuOp_pop_SS(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("POP\tSS\n"); - TRACE_AND_STEP(); - M.x86.R_SS = pop_word(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x18 -****************************************************************************/ -static void x86emuOp_sbb_byte_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint destoffset; - u8 destval; - - START_OF_INSTR(); - DECODE_PRINTF("SBB\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sbb_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sbb_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sbb_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x19 -****************************************************************************/ -static void x86emuOp_sbb_word_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("SBB\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sbb_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sbb_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sbb_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sbb_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sbb_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sbb_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x1a -****************************************************************************/ -static void x86emuOp_sbb_byte_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint srcoffset; - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("SBB\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_byte(*destreg, srcval); - break; - case 1: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_byte(*destreg, srcval); - break; - case 2: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_byte(*destreg, srcval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x1b -****************************************************************************/ -static void x86emuOp_sbb_word_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("SBB\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_word(*destreg, srcval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_word(*destreg, srcval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_word(*destreg, srcval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sbb_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x1c -****************************************************************************/ -static void x86emuOp_sbb_byte_AL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("SBB\tAL,"); - srcval = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - M.x86.R_AL = sbb_byte(M.x86.R_AL, srcval); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x1d -****************************************************************************/ -static void x86emuOp_sbb_word_AX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("SBB\tEAX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("SBB\tAX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = sbb_long(M.x86.R_EAX, srcval); - } else { - M.x86.R_AX = sbb_word(M.x86.R_AX, (u16)srcval); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x1e -****************************************************************************/ -static void x86emuOp_push_DS(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("PUSH\tDS\n"); - TRACE_AND_STEP(); - push_word(M.x86.R_DS); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x1f -****************************************************************************/ -static void x86emuOp_pop_DS(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("POP\tDS\n"); - TRACE_AND_STEP(); - M.x86.R_DS = pop_word(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x20 -****************************************************************************/ -static void x86emuOp_and_byte_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint destoffset; - u8 destval; - - START_OF_INSTR(); - DECODE_PRINTF("AND\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = and_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = and_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = and_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x21 -****************************************************************************/ -static void x86emuOp_and_word_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("AND\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = and_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = and_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = and_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = and_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = and_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = and_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x22 -****************************************************************************/ -static void x86emuOp_and_byte_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint srcoffset; - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("AND\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_byte(*destreg, srcval); - break; - case 1: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_byte(*destreg, srcval); - break; - case 2: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_byte(*destreg, srcval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x23 -****************************************************************************/ -static void x86emuOp_and_word_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("AND\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_word(*destreg, srcval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_long(*destreg, srcval); - break; - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_word(*destreg, srcval); - break; - } - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_word(*destreg, srcval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = and_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x24 -****************************************************************************/ -static void x86emuOp_and_byte_AL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("AND\tAL,"); - srcval = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - M.x86.R_AL = and_byte(M.x86.R_AL, srcval); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x25 -****************************************************************************/ -static void x86emuOp_and_word_AX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("AND\tEAX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("AND\tAX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = and_long(M.x86.R_EAX, srcval); - } else { - M.x86.R_AX = and_word(M.x86.R_AX, (u16)srcval); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x26 -****************************************************************************/ -static void x86emuOp_segovr_ES(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("ES:\n"); - TRACE_AND_STEP(); - M.x86.mode |= SYSMODE_SEGOVR_ES; - /* - * note the lack of DECODE_CLEAR_SEGOVR(r) since, here is one of 4 - * opcode subroutines we do not want to do this. - */ - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x27 -****************************************************************************/ -static void x86emuOp_daa(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("DAA\n"); - TRACE_AND_STEP(); - M.x86.R_AL = daa_byte(M.x86.R_AL); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x28 -****************************************************************************/ -static void x86emuOp_sub_byte_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint destoffset; - u8 destval; - - START_OF_INSTR(); - DECODE_PRINTF("SUB\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sub_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sub_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sub_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x29 -****************************************************************************/ -static void x86emuOp_sub_word_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("SUB\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sub_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sub_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sub_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sub_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sub_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = sub_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x2a -****************************************************************************/ -static void x86emuOp_sub_byte_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint srcoffset; - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("SUB\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_byte(*destreg, srcval); - break; - case 1: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_byte(*destreg, srcval); - break; - case 2: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_byte(*destreg, srcval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x2b -****************************************************************************/ -static void x86emuOp_sub_word_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("SUB\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_word(*destreg, srcval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_word(*destreg, srcval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_word(*destreg, srcval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = sub_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x2c -****************************************************************************/ -static void x86emuOp_sub_byte_AL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("SUB\tAL,"); - srcval = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - M.x86.R_AL = sub_byte(M.x86.R_AL, srcval); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x2d -****************************************************************************/ -static void x86emuOp_sub_word_AX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("SUB\tEAX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("SUB\tAX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = sub_long(M.x86.R_EAX, srcval); - } else { - M.x86.R_AX = sub_word(M.x86.R_AX, (u16)srcval); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x2e -****************************************************************************/ -static void x86emuOp_segovr_CS(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("CS:\n"); - TRACE_AND_STEP(); - M.x86.mode |= SYSMODE_SEGOVR_CS; - /* note no DECODE_CLEAR_SEGOVR here. */ - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x2f -****************************************************************************/ -static void x86emuOp_das(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("DAS\n"); - TRACE_AND_STEP(); - M.x86.R_AL = das_byte(M.x86.R_AL); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x30 -****************************************************************************/ -static void x86emuOp_xor_byte_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint destoffset; - u8 destval; - - START_OF_INSTR(); - DECODE_PRINTF("XOR\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = xor_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = xor_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = xor_byte(destval, *srcreg); - store_data_byte(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x31 -****************************************************************************/ -static void x86emuOp_xor_word_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("XOR\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = xor_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = xor_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = xor_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = xor_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = xor_long(destval, *srcreg); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = xor_word(destval, *srcreg); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x32 -****************************************************************************/ -static void x86emuOp_xor_byte_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint srcoffset; - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("XOR\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_byte(*destreg, srcval); - break; - case 1: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_byte(*destreg, srcval); - break; - case 2: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_byte(*destreg, srcval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x33 -****************************************************************************/ -static void x86emuOp_xor_word_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("XOR\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_word(*destreg, srcval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_word(*destreg, srcval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_word(*destreg, srcval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = xor_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x34 -****************************************************************************/ -static void x86emuOp_xor_byte_AL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("XOR\tAL,"); - srcval = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - M.x86.R_AL = xor_byte(M.x86.R_AL, srcval); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x35 -****************************************************************************/ -static void x86emuOp_xor_word_AX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("XOR\tEAX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("XOR\tAX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = xor_long(M.x86.R_EAX, srcval); - } else { - M.x86.R_AX = xor_word(M.x86.R_AX, (u16)srcval); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x36 -****************************************************************************/ -static void x86emuOp_segovr_SS(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("SS:\n"); - TRACE_AND_STEP(); - M.x86.mode |= SYSMODE_SEGOVR_SS; - /* no DECODE_CLEAR_SEGOVR ! */ - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x37 -****************************************************************************/ -static void x86emuOp_aaa(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("AAA\n"); - TRACE_AND_STEP(); - M.x86.R_AX = aaa_word(M.x86.R_AX); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x38 -****************************************************************************/ -static void x86emuOp_cmp_byte_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - u8 *destreg, *srcreg; - u8 destval; - - START_OF_INSTR(); - DECODE_PRINTF("CMP\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_byte(destval, *srcreg); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_byte(destval, *srcreg); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_byte(destval, *srcreg); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x39 -****************************************************************************/ -static void x86emuOp_cmp_word_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("CMP\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_long(destval, *srcreg); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_word(destval, *srcreg); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_long(destval, *srcreg); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_word(destval, *srcreg); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_long(destval, *srcreg); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_word(destval, *srcreg); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x3a -****************************************************************************/ -static void x86emuOp_cmp_byte_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint srcoffset; - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("CMP\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_byte(*destreg, srcval); - break; - case 1: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_byte(*destreg, srcval); - break; - case 2: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_byte(*destreg, srcval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x3b -****************************************************************************/ -static void x86emuOp_cmp_word_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("CMP\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_word(*destreg, srcval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_word(*destreg, srcval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_word(*destreg, srcval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - cmp_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x3c -****************************************************************************/ -static void x86emuOp_cmp_byte_AL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("CMP\tAL,"); - srcval = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - cmp_byte(M.x86.R_AL, srcval); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x3d -****************************************************************************/ -static void x86emuOp_cmp_word_AX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("CMP\tEAX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("CMP\tAX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - cmp_long(M.x86.R_EAX, srcval); - } else { - cmp_word(M.x86.R_AX, (u16)srcval); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x3e -****************************************************************************/ -static void x86emuOp_segovr_DS(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("DS:\n"); - TRACE_AND_STEP(); - M.x86.mode |= SYSMODE_SEGOVR_DS; - /* NO DECODE_CLEAR_SEGOVR! */ - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x3f -****************************************************************************/ -static void x86emuOp_aas(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("AAS\n"); - TRACE_AND_STEP(); - M.x86.R_AX = aas_word(M.x86.R_AX); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x40 -****************************************************************************/ -static void x86emuOp_inc_AX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("INC\tEAX\n"); - } else { - DECODE_PRINTF("INC\tAX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = inc_long(M.x86.R_EAX); - } else { - M.x86.R_AX = inc_word(M.x86.R_AX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x41 -****************************************************************************/ -static void x86emuOp_inc_CX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("INC\tECX\n"); - } else { - DECODE_PRINTF("INC\tCX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ECX = inc_long(M.x86.R_ECX); - } else { - M.x86.R_CX = inc_word(M.x86.R_CX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x42 -****************************************************************************/ -static void x86emuOp_inc_DX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("INC\tEDX\n"); - } else { - DECODE_PRINTF("INC\tDX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EDX = inc_long(M.x86.R_EDX); - } else { - M.x86.R_DX = inc_word(M.x86.R_DX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x43 -****************************************************************************/ -static void x86emuOp_inc_BX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("INC\tEBX\n"); - } else { - DECODE_PRINTF("INC\tBX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EBX = inc_long(M.x86.R_EBX); - } else { - M.x86.R_BX = inc_word(M.x86.R_BX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x44 -****************************************************************************/ -static void x86emuOp_inc_SP(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("INC\tESP\n"); - } else { - DECODE_PRINTF("INC\tSP\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ESP = inc_long(M.x86.R_ESP); - } else { - M.x86.R_SP = inc_word(M.x86.R_SP); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x45 -****************************************************************************/ -static void x86emuOp_inc_BP(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("INC\tEBP\n"); - } else { - DECODE_PRINTF("INC\tBP\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EBP = inc_long(M.x86.R_EBP); - } else { - M.x86.R_BP = inc_word(M.x86.R_BP); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x46 -****************************************************************************/ -static void x86emuOp_inc_SI(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("INC\tESI\n"); - } else { - DECODE_PRINTF("INC\tSI\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ESI = inc_long(M.x86.R_ESI); - } else { - M.x86.R_SI = inc_word(M.x86.R_SI); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x47 -****************************************************************************/ -static void x86emuOp_inc_DI(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("INC\tEDI\n"); - } else { - DECODE_PRINTF("INC\tDI\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EDI = inc_long(M.x86.R_EDI); - } else { - M.x86.R_DI = inc_word(M.x86.R_DI); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x48 -****************************************************************************/ -static void x86emuOp_dec_AX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("DEC\tEAX\n"); - } else { - DECODE_PRINTF("DEC\tAX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = dec_long(M.x86.R_EAX); - } else { - M.x86.R_AX = dec_word(M.x86.R_AX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x49 -****************************************************************************/ -static void x86emuOp_dec_CX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("DEC\tECX\n"); - } else { - DECODE_PRINTF("DEC\tCX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ECX = dec_long(M.x86.R_ECX); - } else { - M.x86.R_CX = dec_word(M.x86.R_CX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x4a -****************************************************************************/ -static void x86emuOp_dec_DX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("DEC\tEDX\n"); - } else { - DECODE_PRINTF("DEC\tDX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EDX = dec_long(M.x86.R_EDX); - } else { - M.x86.R_DX = dec_word(M.x86.R_DX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x4b -****************************************************************************/ -static void x86emuOp_dec_BX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("DEC\tEBX\n"); - } else { - DECODE_PRINTF("DEC\tBX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EBX = dec_long(M.x86.R_EBX); - } else { - M.x86.R_BX = dec_word(M.x86.R_BX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x4c -****************************************************************************/ -static void x86emuOp_dec_SP(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("DEC\tESP\n"); - } else { - DECODE_PRINTF("DEC\tSP\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ESP = dec_long(M.x86.R_ESP); - } else { - M.x86.R_SP = dec_word(M.x86.R_SP); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x4d -****************************************************************************/ -static void x86emuOp_dec_BP(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("DEC\tEBP\n"); - } else { - DECODE_PRINTF("DEC\tBP\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EBP = dec_long(M.x86.R_EBP); - } else { - M.x86.R_BP = dec_word(M.x86.R_BP); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x4e -****************************************************************************/ -static void x86emuOp_dec_SI(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("DEC\tESI\n"); - } else { - DECODE_PRINTF("DEC\tSI\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ESI = dec_long(M.x86.R_ESI); - } else { - M.x86.R_SI = dec_word(M.x86.R_SI); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x4f -****************************************************************************/ -static void x86emuOp_dec_DI(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("DEC\tEDI\n"); - } else { - DECODE_PRINTF("DEC\tDI\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EDI = dec_long(M.x86.R_EDI); - } else { - M.x86.R_DI = dec_word(M.x86.R_DI); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x50 -****************************************************************************/ -static void x86emuOp_push_AX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("PUSH\tEAX\n"); - } else { - DECODE_PRINTF("PUSH\tAX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - push_long(M.x86.R_EAX); - } else { - push_word(M.x86.R_AX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x51 -****************************************************************************/ -static void x86emuOp_push_CX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("PUSH\tECX\n"); - } else { - DECODE_PRINTF("PUSH\tCX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - push_long(M.x86.R_ECX); - } else { - push_word(M.x86.R_CX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x52 -****************************************************************************/ -static void x86emuOp_push_DX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("PUSH\tEDX\n"); - } else { - DECODE_PRINTF("PUSH\tDX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - push_long(M.x86.R_EDX); - } else { - push_word(M.x86.R_DX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x53 -****************************************************************************/ -static void x86emuOp_push_BX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("PUSH\tEBX\n"); - } else { - DECODE_PRINTF("PUSH\tBX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - push_long(M.x86.R_EBX); - } else { - push_word(M.x86.R_BX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x54 -****************************************************************************/ -static void x86emuOp_push_SP(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("PUSH\tESP\n"); - } else { - DECODE_PRINTF("PUSH\tSP\n"); - } - TRACE_AND_STEP(); - /* Always push (E)SP, since we are emulating an i386 and above - * processor. This is necessary as some BIOS'es use this to check - * what type of processor is in the system. - */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - push_long(M.x86.R_ESP); - } else { - push_word((u16)(M.x86.R_SP)); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x55 -****************************************************************************/ -static void x86emuOp_push_BP(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("PUSH\tEBP\n"); - } else { - DECODE_PRINTF("PUSH\tBP\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - push_long(M.x86.R_EBP); - } else { - push_word(M.x86.R_BP); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x56 -****************************************************************************/ -static void x86emuOp_push_SI(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("PUSH\tESI\n"); - } else { - DECODE_PRINTF("PUSH\tSI\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - push_long(M.x86.R_ESI); - } else { - push_word(M.x86.R_SI); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x57 -****************************************************************************/ -static void x86emuOp_push_DI(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("PUSH\tEDI\n"); - } else { - DECODE_PRINTF("PUSH\tDI\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - push_long(M.x86.R_EDI); - } else { - push_word(M.x86.R_DI); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x58 -****************************************************************************/ -static void x86emuOp_pop_AX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("POP\tEAX\n"); - } else { - DECODE_PRINTF("POP\tAX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = pop_long(); - } else { - M.x86.R_AX = pop_word(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x59 -****************************************************************************/ -static void x86emuOp_pop_CX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("POP\tECX\n"); - } else { - DECODE_PRINTF("POP\tCX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ECX = pop_long(); - } else { - M.x86.R_CX = pop_word(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x5a -****************************************************************************/ -static void x86emuOp_pop_DX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("POP\tEDX\n"); - } else { - DECODE_PRINTF("POP\tDX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EDX = pop_long(); - } else { - M.x86.R_DX = pop_word(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x5b -****************************************************************************/ -static void x86emuOp_pop_BX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("POP\tEBX\n"); - } else { - DECODE_PRINTF("POP\tBX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EBX = pop_long(); - } else { - M.x86.R_BX = pop_word(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x5c -****************************************************************************/ -static void x86emuOp_pop_SP(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("POP\tESP\n"); - } else { - DECODE_PRINTF("POP\tSP\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ESP = pop_long(); - } else { - M.x86.R_SP = pop_word(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x5d -****************************************************************************/ -static void x86emuOp_pop_BP(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("POP\tEBP\n"); - } else { - DECODE_PRINTF("POP\tBP\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EBP = pop_long(); - } else { - M.x86.R_BP = pop_word(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x5e -****************************************************************************/ -static void x86emuOp_pop_SI(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("POP\tESI\n"); - } else { - DECODE_PRINTF("POP\tSI\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ESI = pop_long(); - } else { - M.x86.R_SI = pop_word(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x5f -****************************************************************************/ -static void x86emuOp_pop_DI(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("POP\tEDI\n"); - } else { - DECODE_PRINTF("POP\tDI\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EDI = pop_long(); - } else { - M.x86.R_DI = pop_word(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x60 -****************************************************************************/ -static void x86emuOp_push_all(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("PUSHAD\n"); - } else { - DECODE_PRINTF("PUSHA\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 old_sp = M.x86.R_ESP; - - push_long(M.x86.R_EAX); - push_long(M.x86.R_ECX); - push_long(M.x86.R_EDX); - push_long(M.x86.R_EBX); - push_long(old_sp); - push_long(M.x86.R_EBP); - push_long(M.x86.R_ESI); - push_long(M.x86.R_EDI); - } else { - u16 old_sp = M.x86.R_SP; - - push_word(M.x86.R_AX); - push_word(M.x86.R_CX); - push_word(M.x86.R_DX); - push_word(M.x86.R_BX); - push_word(old_sp); - push_word(M.x86.R_BP); - push_word(M.x86.R_SI); - push_word(M.x86.R_DI); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x61 -****************************************************************************/ -static void x86emuOp_pop_all(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("POPAD\n"); - } else { - DECODE_PRINTF("POPA\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EDI = pop_long(); - M.x86.R_ESI = pop_long(); - M.x86.R_EBP = pop_long(); - M.x86.R_ESP += 4; /* skip ESP */ - M.x86.R_EBX = pop_long(); - M.x86.R_EDX = pop_long(); - M.x86.R_ECX = pop_long(); - M.x86.R_EAX = pop_long(); - } else { - M.x86.R_DI = pop_word(); - M.x86.R_SI = pop_word(); - M.x86.R_BP = pop_word(); - M.x86.R_SP += 2; /* skip SP */ - M.x86.R_BX = pop_word(); - M.x86.R_DX = pop_word(); - M.x86.R_CX = pop_word(); - M.x86.R_AX = pop_word(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/*opcode 0x62 ILLEGAL OP, calls x86emuOp_illegal_op() */ -/*opcode 0x63 ILLEGAL OP, calls x86emuOp_illegal_op() */ - -/**************************************************************************** -REMARKS: -Handles opcode 0x64 -****************************************************************************/ -static void x86emuOp_segovr_FS(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("FS:\n"); - TRACE_AND_STEP(); - M.x86.mode |= SYSMODE_SEGOVR_FS; - /* - * note the lack of DECODE_CLEAR_SEGOVR(r) since, here is one of 4 - * opcode subroutines we do not want to do this. - */ - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x65 -****************************************************************************/ -static void x86emuOp_segovr_GS(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("GS:\n"); - TRACE_AND_STEP(); - M.x86.mode |= SYSMODE_SEGOVR_GS; - /* - * note the lack of DECODE_CLEAR_SEGOVR(r) since, here is one of 4 - * opcode subroutines we do not want to do this. - */ - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x66 - prefix for 32-bit register -****************************************************************************/ -static void x86emuOp_prefix_data(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("DATA:\n"); - TRACE_AND_STEP(); - M.x86.mode |= SYSMODE_PREFIX_DATA; - /* note no DECODE_CLEAR_SEGOVR here. */ - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x67 - prefix for 32-bit address -****************************************************************************/ -static void x86emuOp_prefix_addr(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("ADDR:\n"); - TRACE_AND_STEP(); - M.x86.mode |= SYSMODE_PREFIX_ADDR; - /* note no DECODE_CLEAR_SEGOVR here. */ - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x68 -****************************************************************************/ -static void x86emuOp_push_word_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 imm; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - imm = fetch_long_imm(); - } else { - imm = fetch_word_imm(); - } - DECODE_PRINTF2("PUSH\t%x\n", imm); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - push_long(imm); - } else { - push_word((u16)imm); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x69 -****************************************************************************/ -static void x86emuOp_imul_word_IMM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("IMUL\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - u32 res_lo,res_hi; - s32 imm; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_long(srcoffset); - imm = fetch_long_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - imul_long_direct(&res_lo,&res_hi,(s32)srcval,(s32)imm); - if (res_hi != 0) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u32)res_lo; - } else { - u16 *destreg; - u16 srcval; - u32 res; - s16 imm; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - imm = fetch_word_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - res = (s16)srcval * (s16)imm; - if (res > 0xFFFF) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u16)res; - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - u32 res_lo,res_hi; - s32 imm; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_long(srcoffset); - imm = fetch_long_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - imul_long_direct(&res_lo,&res_hi,(s32)srcval,(s32)imm); - if (res_hi != 0) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u32)res_lo; - } else { - u16 *destreg; - u16 srcval; - u32 res; - s16 imm; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - imm = fetch_word_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - res = (s16)srcval * (s16)imm; - if (res > 0xFFFF) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u16)res; - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - u32 res_lo,res_hi; - s32 imm; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_long(srcoffset); - imm = fetch_long_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - imul_long_direct(&res_lo,&res_hi,(s32)srcval,(s32)imm); - if (res_hi != 0) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u32)res_lo; - } else { - u16 *destreg; - u16 srcval; - u32 res; - s16 imm; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - imm = fetch_word_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - res = (s16)srcval * (s16)imm; - if (res > 0xFFFF) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u16)res; - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - u32 res_lo,res_hi; - s32 imm; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rl); - imm = fetch_long_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - imul_long_direct(&res_lo,&res_hi,(s32)*srcreg,(s32)imm); - if (res_hi != 0) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u32)res_lo; - } else { - u16 *destreg,*srcreg; - u32 res; - s16 imm; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - imm = fetch_word_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - res = (s16)*srcreg * (s16)imm; - if (res > 0xFFFF) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u16)res; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x6a -****************************************************************************/ -static void x86emuOp_push_byte_IMM(u8 X86EMU_UNUSED(op1)) -{ - s16 imm; - - START_OF_INSTR(); - imm = (s8)fetch_byte_imm(); - DECODE_PRINTF2("PUSH\t%d\n", imm); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - push_long((s32)imm); - } else { - push_word(imm); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x6b -****************************************************************************/ -static void x86emuOp_imul_byte_IMM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint srcoffset; - s8 imm; - - START_OF_INSTR(); - DECODE_PRINTF("IMUL\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - u32 res_lo,res_hi; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_long(srcoffset); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - imul_long_direct(&res_lo,&res_hi,(s32)srcval,(s32)imm); - if (res_hi != 0) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u32)res_lo; - } else { - u16 *destreg; - u16 srcval; - u32 res; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - res = (s16)srcval * (s16)imm; - if (res > 0xFFFF) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u16)res; - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - u32 res_lo,res_hi; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_long(srcoffset); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - imul_long_direct(&res_lo,&res_hi,(s32)srcval,(s32)imm); - if (res_hi != 0) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u32)res_lo; - } else { - u16 *destreg; - u16 srcval; - u32 res; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - res = (s16)srcval * (s16)imm; - if (res > 0xFFFF) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u16)res; - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - u32 res_lo,res_hi; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_long(srcoffset); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - imul_long_direct(&res_lo,&res_hi,(s32)srcval,(s32)imm); - if (res_hi != 0) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u32)res_lo; - } else { - u16 *destreg; - u16 srcval; - u32 res; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - res = (s16)srcval * (s16)imm; - if (res > 0xFFFF) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u16)res; - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - u32 res_lo,res_hi; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rl); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - TRACE_AND_STEP(); - imul_long_direct(&res_lo,&res_hi,(s32)*srcreg,(s32)imm); - if (res_hi != 0) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u32)res_lo; - } else { - u16 *destreg,*srcreg; - u32 res; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%d\n", (s32)imm); - res = (s16)*srcreg * (s16)imm; - if (res > 0xFFFF) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u16)res; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x6c -****************************************************************************/ -static void x86emuOp_ins_byte(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("INSB\n"); - ins(1); - TRACE_AND_STEP(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x6d -****************************************************************************/ -static void x86emuOp_ins_word(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("INSD\n"); - ins(4); - } else { - DECODE_PRINTF("INSW\n"); - ins(2); - } - TRACE_AND_STEP(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x6e -****************************************************************************/ -static void x86emuOp_outs_byte(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("OUTSB\n"); - outs(1); - TRACE_AND_STEP(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x6f -****************************************************************************/ -static void x86emuOp_outs_word(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("OUTSD\n"); - outs(4); - } else { - DECODE_PRINTF("OUTSW\n"); - outs(2); - } - TRACE_AND_STEP(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x70 -****************************************************************************/ -static void x86emuOp_jump_near_O(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - - /* jump to byte offset if overflow flag is set */ - START_OF_INSTR(); - DECODE_PRINTF("JO\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (ACCESS_FLAG(F_OF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x71 -****************************************************************************/ -static void x86emuOp_jump_near_NO(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - - /* jump to byte offset if overflow is not set */ - START_OF_INSTR(); - DECODE_PRINTF("JNO\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (!ACCESS_FLAG(F_OF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x72 -****************************************************************************/ -static void x86emuOp_jump_near_B(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - - /* jump to byte offset if carry flag is set. */ - START_OF_INSTR(); - DECODE_PRINTF("JB\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (ACCESS_FLAG(F_CF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x73 -****************************************************************************/ -static void x86emuOp_jump_near_NB(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - - /* jump to byte offset if carry flag is clear. */ - START_OF_INSTR(); - DECODE_PRINTF("JNB\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (!ACCESS_FLAG(F_CF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x74 -****************************************************************************/ -static void x86emuOp_jump_near_Z(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - - /* jump to byte offset if zero flag is set. */ - START_OF_INSTR(); - DECODE_PRINTF("JZ\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (ACCESS_FLAG(F_ZF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x75 -****************************************************************************/ -static void x86emuOp_jump_near_NZ(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - - /* jump to byte offset if zero flag is clear. */ - START_OF_INSTR(); - DECODE_PRINTF("JNZ\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (!ACCESS_FLAG(F_ZF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x76 -****************************************************************************/ -static void x86emuOp_jump_near_BE(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - - /* jump to byte offset if carry flag is set or if the zero - flag is set. */ - START_OF_INSTR(); - DECODE_PRINTF("JBE\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x77 -****************************************************************************/ -static void x86emuOp_jump_near_NBE(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - - /* jump to byte offset if carry flag is clear and if the zero - flag is clear */ - START_OF_INSTR(); - DECODE_PRINTF("JNBE\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (!(ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF))) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x78 -****************************************************************************/ -static void x86emuOp_jump_near_S(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - - /* jump to byte offset if sign flag is set */ - START_OF_INSTR(); - DECODE_PRINTF("JS\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (ACCESS_FLAG(F_SF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x79 -****************************************************************************/ -static void x86emuOp_jump_near_NS(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - - /* jump to byte offset if sign flag is clear */ - START_OF_INSTR(); - DECODE_PRINTF("JNS\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (!ACCESS_FLAG(F_SF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x7a -****************************************************************************/ -static void x86emuOp_jump_near_P(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - - /* jump to byte offset if parity flag is set (even parity) */ - START_OF_INSTR(); - DECODE_PRINTF("JP\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (ACCESS_FLAG(F_PF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x7b -****************************************************************************/ -static void x86emuOp_jump_near_NP(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - - /* jump to byte offset if parity flag is clear (odd parity) */ - START_OF_INSTR(); - DECODE_PRINTF("JNP\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (!ACCESS_FLAG(F_PF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x7c -****************************************************************************/ -static void x86emuOp_jump_near_L(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - int sf, of; - - /* jump to byte offset if sign flag not equal to overflow flag. */ - START_OF_INSTR(); - DECODE_PRINTF("JL\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - sf = ACCESS_FLAG(F_SF) != 0; - of = ACCESS_FLAG(F_OF) != 0; - if (sf ^ of) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x7d -****************************************************************************/ -static void x86emuOp_jump_near_NL(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - int sf, of; - - /* jump to byte offset if sign flag not equal to overflow flag. */ - START_OF_INSTR(); - DECODE_PRINTF("JNL\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - sf = ACCESS_FLAG(F_SF) != 0; - of = ACCESS_FLAG(F_OF) != 0; - /* note: inverse of above, but using == instead of xor. */ - if (sf == of) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x7e -****************************************************************************/ -static void x86emuOp_jump_near_LE(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - int sf, of; - - /* jump to byte offset if sign flag not equal to overflow flag - or the zero flag is set */ - START_OF_INSTR(); - DECODE_PRINTF("JLE\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - sf = ACCESS_FLAG(F_SF) != 0; - of = ACCESS_FLAG(F_OF) != 0; - if ((sf ^ of) || ACCESS_FLAG(F_ZF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x7f -****************************************************************************/ -static void x86emuOp_jump_near_NLE(u8 X86EMU_UNUSED(op1)) -{ - s8 offset; - u16 target; - int sf, of; - - /* jump to byte offset if sign flag equal to overflow flag. - and the zero flag is clear */ - START_OF_INSTR(); - DECODE_PRINTF("JNLE\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + (s16)offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - sf = ACCESS_FLAG(F_SF) != 0; - of = ACCESS_FLAG(F_OF) != 0; - if ((sf == of) && !ACCESS_FLAG(F_ZF)) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -static u8 (*opc80_byte_operation[])(u8 d, u8 s) = -{ - add_byte, /* 00 */ - or_byte, /* 01 */ - adc_byte, /* 02 */ - sbb_byte, /* 03 */ - and_byte, /* 04 */ - sub_byte, /* 05 */ - xor_byte, /* 06 */ - cmp_byte, /* 07 */ -}; - -/**************************************************************************** -REMARKS: -Handles opcode 0x80 -****************************************************************************/ -static void x86emuOp_opc80_byte_RM_IMM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg; - uint destoffset; - u8 imm; - u8 destval; - - /* - * Weirdo special case instruction format. Part of the opcode - * held below in "RH". Doubly nested case would result, except - * that the decoded instruction - */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (DEBUG_DECODE()) { - /* XXX DECODE_PRINTF may be changed to something more - general, so that it is important to leave the strings - in the same format, even though the result is that the - above test is done twice. */ - - switch (rh) { - case 0: - DECODE_PRINTF("ADD\t"); - break; - case 1: - DECODE_PRINTF("OR\t"); - break; - case 2: - DECODE_PRINTF("ADC\t"); - break; - case 3: - DECODE_PRINTF("SBB\t"); - break; - case 4: - DECODE_PRINTF("AND\t"); - break; - case 5: - DECODE_PRINTF("SUB\t"); - break; - case 6: - DECODE_PRINTF("XOR\t"); - break; - case 7: - DECODE_PRINTF("CMP\t"); - break; - } - } -#endif - /* know operation, decode the mod byte to find the addressing - mode. */ - switch (mod) { - case 0: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc80_byte_operation[rh]) (destval, imm); - if (rh != 7) - store_data_byte(destoffset, destval); - break; - case 1: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc80_byte_operation[rh]) (destval, imm); - if (rh != 7) - store_data_byte(destoffset, destval); - break; - case 2: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc80_byte_operation[rh]) (destval, imm); - if (rh != 7) - store_data_byte(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc80_byte_operation[rh]) (*destreg, imm); - if (rh != 7) - *destreg = destval; - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -static u16 (*opc81_word_operation[])(u16 d, u16 s) = -{ - add_word, /*00 */ - or_word, /*01 */ - adc_word, /*02 */ - sbb_word, /*03 */ - and_word, /*04 */ - sub_word, /*05 */ - xor_word, /*06 */ - cmp_word, /*07 */ -}; - -static u32 (*opc81_long_operation[])(u32 d, u32 s) = -{ - add_long, /*00 */ - or_long, /*01 */ - adc_long, /*02 */ - sbb_long, /*03 */ - and_long, /*04 */ - sub_long, /*05 */ - xor_long, /*06 */ - cmp_long, /*07 */ -}; - -/**************************************************************************** -REMARKS: -Handles opcode 0x81 -****************************************************************************/ -static void x86emuOp_opc81_word_RM_IMM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - /* - * Weirdo special case instruction format. Part of the opcode - * held below in "RH". Doubly nested case would result, except - * that the decoded instruction - */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (DEBUG_DECODE()) { - /* XXX DECODE_PRINTF may be changed to something more - general, so that it is important to leave the strings - in the same format, even though the result is that the - above test is done twice. */ - - switch (rh) { - case 0: - DECODE_PRINTF("ADD\t"); - break; - case 1: - DECODE_PRINTF("OR\t"); - break; - case 2: - DECODE_PRINTF("ADC\t"); - break; - case 3: - DECODE_PRINTF("SBB\t"); - break; - case 4: - DECODE_PRINTF("AND\t"); - break; - case 5: - DECODE_PRINTF("SUB\t"); - break; - case 6: - DECODE_PRINTF("XOR\t"); - break; - case 7: - DECODE_PRINTF("CMP\t"); - break; - } - } -#endif - /* - * Know operation, decode the mod byte to find the addressing - * mode. - */ - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval,imm; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - imm = fetch_long_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc81_long_operation[rh]) (destval, imm); - if (rh != 7) - store_data_long(destoffset, destval); - } else { - u16 destval,imm; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - imm = fetch_word_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc81_word_operation[rh]) (destval, imm); - if (rh != 7) - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval,imm; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - imm = fetch_long_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc81_long_operation[rh]) (destval, imm); - if (rh != 7) - store_data_long(destoffset, destval); - } else { - u16 destval,imm; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - imm = fetch_word_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc81_word_operation[rh]) (destval, imm); - if (rh != 7) - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval,imm; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - imm = fetch_long_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc81_long_operation[rh]) (destval, imm); - if (rh != 7) - store_data_long(destoffset, destval); - } else { - u16 destval,imm; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - imm = fetch_word_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc81_word_operation[rh]) (destval, imm); - if (rh != 7) - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 destval,imm; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - imm = fetch_long_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc81_long_operation[rh]) (*destreg, imm); - if (rh != 7) - *destreg = destval; - } else { - u16 *destreg; - u16 destval,imm; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - imm = fetch_word_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc81_word_operation[rh]) (*destreg, imm); - if (rh != 7) - *destreg = destval; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -static u8 (*opc82_byte_operation[])(u8 s, u8 d) = -{ - add_byte, /*00 */ - or_byte, /*01 *//*YYY UNUSED ???? */ - adc_byte, /*02 */ - sbb_byte, /*03 */ - and_byte, /*04 *//*YYY UNUSED ???? */ - sub_byte, /*05 */ - xor_byte, /*06 *//*YYY UNUSED ???? */ - cmp_byte, /*07 */ -}; - -/**************************************************************************** -REMARKS: -Handles opcode 0x82 -****************************************************************************/ -static void x86emuOp_opc82_byte_RM_IMM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg; - uint destoffset; - u8 imm; - u8 destval; - - /* - * Weirdo special case instruction format. Part of the opcode - * held below in "RH". Doubly nested case would result, except - * that the decoded instruction Similar to opcode 81, except that - * the immediate byte is sign extended to a word length. - */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (DEBUG_DECODE()) { - /* XXX DECODE_PRINTF may be changed to something more - general, so that it is important to leave the strings - in the same format, even though the result is that the - above test is done twice. */ - switch (rh) { - case 0: - DECODE_PRINTF("ADD\t"); - break; - case 1: - DECODE_PRINTF("OR\t"); - break; - case 2: - DECODE_PRINTF("ADC\t"); - break; - case 3: - DECODE_PRINTF("SBB\t"); - break; - case 4: - DECODE_PRINTF("AND\t"); - break; - case 5: - DECODE_PRINTF("SUB\t"); - break; - case 6: - DECODE_PRINTF("XOR\t"); - break; - case 7: - DECODE_PRINTF("CMP\t"); - break; - } - } -#endif - /* know operation, decode the mod byte to find the addressing - mode. */ - switch (mod) { - case 0: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm00_address(rl); - destval = fetch_data_byte(destoffset); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc82_byte_operation[rh]) (destval, imm); - if (rh != 7) - store_data_byte(destoffset, destval); - break; - case 1: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm01_address(rl); - destval = fetch_data_byte(destoffset); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc82_byte_operation[rh]) (destval, imm); - if (rh != 7) - store_data_byte(destoffset, destval); - break; - case 2: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm10_address(rl); - destval = fetch_data_byte(destoffset); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc82_byte_operation[rh]) (destval, imm); - if (rh != 7) - store_data_byte(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc82_byte_operation[rh]) (*destreg, imm); - if (rh != 7) - *destreg = destval; - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -static u16 (*opc83_word_operation[])(u16 s, u16 d) = -{ - add_word, /*00 */ - or_word, /*01 *//*YYY UNUSED ???? */ - adc_word, /*02 */ - sbb_word, /*03 */ - and_word, /*04 *//*YYY UNUSED ???? */ - sub_word, /*05 */ - xor_word, /*06 *//*YYY UNUSED ???? */ - cmp_word, /*07 */ -}; - -static u32 (*opc83_long_operation[])(u32 s, u32 d) = -{ - add_long, /*00 */ - or_long, /*01 *//*YYY UNUSED ???? */ - adc_long, /*02 */ - sbb_long, /*03 */ - and_long, /*04 *//*YYY UNUSED ???? */ - sub_long, /*05 */ - xor_long, /*06 *//*YYY UNUSED ???? */ - cmp_long, /*07 */ -}; - -/**************************************************************************** -REMARKS: -Handles opcode 0x83 -****************************************************************************/ -static void x86emuOp_opc83_word_RM_IMM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - /* - * Weirdo special case instruction format. Part of the opcode - * held below in "RH". Doubly nested case would result, except - * that the decoded instruction Similar to opcode 81, except that - * the immediate byte is sign extended to a word length. - */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (DEBUG_DECODE()) { - /* XXX DECODE_PRINTF may be changed to something more - general, so that it is important to leave the strings - in the same format, even though the result is that the - above test is done twice. */ - switch (rh) { - case 0: - DECODE_PRINTF("ADD\t"); - break; - case 1: - DECODE_PRINTF("OR\t"); - break; - case 2: - DECODE_PRINTF("ADC\t"); - break; - case 3: - DECODE_PRINTF("SBB\t"); - break; - case 4: - DECODE_PRINTF("AND\t"); - break; - case 5: - DECODE_PRINTF("SUB\t"); - break; - case 6: - DECODE_PRINTF("XOR\t"); - break; - case 7: - DECODE_PRINTF("CMP\t"); - break; - } - } -#endif - /* know operation, decode the mod byte to find the addressing - mode. */ - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval,imm; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm00_address(rl); - destval = fetch_data_long(destoffset); - imm = (s8) fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc83_long_operation[rh]) (destval, imm); - if (rh != 7) - store_data_long(destoffset, destval); - } else { - u16 destval,imm; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm00_address(rl); - destval = fetch_data_word(destoffset); - imm = (s8) fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc83_word_operation[rh]) (destval, imm); - if (rh != 7) - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval,imm; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm01_address(rl); - destval = fetch_data_long(destoffset); - imm = (s8) fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc83_long_operation[rh]) (destval, imm); - if (rh != 7) - store_data_long(destoffset, destval); - } else { - u16 destval,imm; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm01_address(rl); - destval = fetch_data_word(destoffset); - imm = (s8) fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc83_word_operation[rh]) (destval, imm); - if (rh != 7) - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval,imm; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm10_address(rl); - destval = fetch_data_long(destoffset); - imm = (s8) fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc83_long_operation[rh]) (destval, imm); - if (rh != 7) - store_data_long(destoffset, destval); - } else { - u16 destval,imm; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm10_address(rl); - destval = fetch_data_word(destoffset); - imm = (s8) fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc83_word_operation[rh]) (destval, imm); - if (rh != 7) - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 destval,imm; - - destreg = DECODE_RM_LONG_REGISTER(rl); - imm = (s8) fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc83_long_operation[rh]) (*destreg, imm); - if (rh != 7) - *destreg = destval; - } else { - u16 *destreg; - u16 destval,imm; - - destreg = DECODE_RM_WORD_REGISTER(rl); - imm = (s8) fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - destval = (*opc83_word_operation[rh]) (*destreg, imm); - if (rh != 7) - *destreg = destval; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x84 -****************************************************************************/ -static void x86emuOp_test_byte_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint destoffset; - u8 destval; - - START_OF_INSTR(); - DECODE_PRINTF("TEST\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - test_byte(destval, *srcreg); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - test_byte(destval, *srcreg); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - test_byte(destval, *srcreg); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - test_byte(*destreg, *srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x85 -****************************************************************************/ -static void x86emuOp_test_word_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("TEST\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - test_long(destval, *srcreg); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - test_word(destval, *srcreg); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - test_long(destval, *srcreg); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - test_word(destval, *srcreg); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - test_long(destval, *srcreg); - } else { - u16 destval; - u16 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - test_word(destval, *srcreg); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - test_long(*destreg, *srcreg); - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - test_word(*destreg, *srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x86 -****************************************************************************/ -static void x86emuOp_xchg_byte_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint destoffset; - u8 destval; - u8 tmp; - - START_OF_INSTR(); - DECODE_PRINTF("XCHG\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - tmp = *srcreg; - *srcreg = destval; - destval = tmp; - store_data_byte(destoffset, destval); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - tmp = *srcreg; - *srcreg = destval; - destval = tmp; - store_data_byte(destoffset, destval); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_byte(destoffset); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - tmp = *srcreg; - *srcreg = destval; - destval = tmp; - store_data_byte(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - tmp = *srcreg; - *srcreg = *destreg; - *destreg = tmp; - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x87 -****************************************************************************/ -static void x86emuOp_xchg_word_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("XCHG\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg; - u32 destval,tmp; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - tmp = *srcreg; - *srcreg = destval; - destval = tmp; - store_data_long(destoffset, destval); - } else { - u16 *srcreg; - u16 destval,tmp; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - tmp = *srcreg; - *srcreg = destval; - destval = tmp; - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg; - u32 destval,tmp; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - tmp = *srcreg; - *srcreg = destval; - destval = tmp; - store_data_long(destoffset, destval); - } else { - u16 *srcreg; - u16 destval,tmp; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - tmp = *srcreg; - *srcreg = destval; - destval = tmp; - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg; - u32 destval,tmp; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_long(destoffset); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - tmp = *srcreg; - *srcreg = destval; - destval = tmp; - store_data_long(destoffset, destval); - } else { - u16 *srcreg; - u16 destval,tmp; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - destval = fetch_data_word(destoffset); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - tmp = *srcreg; - *srcreg = destval; - destval = tmp; - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - u32 tmp; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - tmp = *srcreg; - *srcreg = *destreg; - *destreg = tmp; - } else { - u16 *destreg,*srcreg; - u16 tmp; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - tmp = *srcreg; - *srcreg = *destreg; - *destreg = tmp; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x88 -****************************************************************************/ -static void x86emuOp_mov_byte_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - store_data_byte(destoffset, *srcreg); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - store_data_byte(destoffset, *srcreg); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - store_data_byte(destoffset, *srcreg); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = *srcreg; - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x89 -****************************************************************************/ -static void x86emuOp_mov_word_RM_R(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u32 destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - store_data_long(destoffset, *srcreg); - } else { - u16 *srcreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - store_data_word(destoffset, *srcreg); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - store_data_long(destoffset, *srcreg); - } else { - u16 *srcreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - store_data_word(destoffset, *srcreg); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - store_data_long(destoffset, *srcreg); - } else { - u16 *srcreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - store_data_word(destoffset, *srcreg); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = *srcreg; - } else { - u16 *destreg,*srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = *srcreg; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x8a -****************************************************************************/ -static void x86emuOp_mov_byte_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg, *srcreg; - uint srcoffset; - u8 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - break; - case 1: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - break; - case 2: - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = *srcreg; - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x8b -****************************************************************************/ -static void x86emuOp_mov_word_R_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_long(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg, *srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = *srcreg; - } else { - u16 *destreg, *srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = *srcreg; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x8c -****************************************************************************/ -static void x86emuOp_mov_word_RM_SR(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u16 *destreg, *srcreg; - uint destoffset; - u16 destval; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - srcreg = decode_rm_seg_register(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = *srcreg; - store_data_word(destoffset, destval); - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - srcreg = decode_rm_seg_register(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = *srcreg; - store_data_word(destoffset, destval); - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - srcreg = decode_rm_seg_register(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = *srcreg; - store_data_word(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcreg = decode_rm_seg_register(rh); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = *srcreg; - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x8d -****************************************************************************/ -static void x86emuOp_lea_word_R_M(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u16 *srcreg; - uint destoffset; - -/* - * TODO: Need to handle address size prefix! - * - * lea eax,[eax+ebx*2] ?? - */ - - START_OF_INSTR(); - DECODE_PRINTF("LEA\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *srcreg = (u16)destoffset; - break; - case 1: - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *srcreg = (u16)destoffset; - break; - case 2: - srcreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *srcreg = (u16)destoffset; - break; - case 3: /* register to register */ - /* undefined. Do nothing. */ - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x8e -****************************************************************************/ -static void x86emuOp_mov_word_SR_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u16 *destreg, *srcreg; - uint srcoffset; - u16 srcval; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destreg = decode_rm_seg_register(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - break; - case 1: - destreg = decode_rm_seg_register(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - break; - case 2: - destreg = decode_rm_seg_register(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - break; - case 3: /* register to register */ - destreg = decode_rm_seg_register(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = *srcreg; - break; - } - /* - * Clean up, and reset all the R_xSP pointers to the correct - * locations. This is about 3x too much overhead (doing all the - * segreg ptrs when only one is needed, but this instruction - * *cannot* be that common, and this isn't too much work anyway. - */ - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x8f -****************************************************************************/ -static void x86emuOp_pop_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("POP\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - if (rh != 0) { - DECODE_PRINTF("ILLEGAL DECODE OF OPCODE 8F\n"); - HALT_SYS(); - } - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = pop_long(); - store_data_long(destoffset, destval); - } else { - u16 destval; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = pop_word(); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = pop_long(); - store_data_long(destoffset, destval); - } else { - u16 destval; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = pop_word(); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = pop_long(); - store_data_long(destoffset, destval); - } else { - u16 destval; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - destval = pop_word(); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = pop_long(); - } else { - u16 *destreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = pop_word(); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x90 -****************************************************************************/ -static void x86emuOp_nop(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("NOP\n"); - TRACE_AND_STEP(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x91 -****************************************************************************/ -static void x86emuOp_xchg_word_AX_CX(u8 X86EMU_UNUSED(op1)) -{ - u32 tmp; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("XCHG\tEAX,ECX\n"); - } else { - DECODE_PRINTF("XCHG\tAX,CX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - tmp = M.x86.R_EAX; - M.x86.R_EAX = M.x86.R_ECX; - M.x86.R_ECX = tmp; - } else { - tmp = M.x86.R_AX; - M.x86.R_AX = M.x86.R_CX; - M.x86.R_CX = (u16)tmp; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x92 -****************************************************************************/ -static void x86emuOp_xchg_word_AX_DX(u8 X86EMU_UNUSED(op1)) -{ - u32 tmp; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("XCHG\tEAX,EDX\n"); - } else { - DECODE_PRINTF("XCHG\tAX,DX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - tmp = M.x86.R_EAX; - M.x86.R_EAX = M.x86.R_EDX; - M.x86.R_EDX = tmp; - } else { - tmp = M.x86.R_AX; - M.x86.R_AX = M.x86.R_DX; - M.x86.R_DX = (u16)tmp; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x93 -****************************************************************************/ -static void x86emuOp_xchg_word_AX_BX(u8 X86EMU_UNUSED(op1)) -{ - u32 tmp; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("XCHG\tEAX,EBX\n"); - } else { - DECODE_PRINTF("XCHG\tAX,BX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - tmp = M.x86.R_EAX; - M.x86.R_EAX = M.x86.R_EBX; - M.x86.R_EBX = tmp; - } else { - tmp = M.x86.R_AX; - M.x86.R_AX = M.x86.R_BX; - M.x86.R_BX = (u16)tmp; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x94 -****************************************************************************/ -static void x86emuOp_xchg_word_AX_SP(u8 X86EMU_UNUSED(op1)) -{ - u32 tmp; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("XCHG\tEAX,ESP\n"); - } else { - DECODE_PRINTF("XCHG\tAX,SP\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - tmp = M.x86.R_EAX; - M.x86.R_EAX = M.x86.R_ESP; - M.x86.R_ESP = tmp; - } else { - tmp = M.x86.R_AX; - M.x86.R_AX = M.x86.R_SP; - M.x86.R_SP = (u16)tmp; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x95 -****************************************************************************/ -static void x86emuOp_xchg_word_AX_BP(u8 X86EMU_UNUSED(op1)) -{ - u32 tmp; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("XCHG\tEAX,EBP\n"); - } else { - DECODE_PRINTF("XCHG\tAX,BP\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - tmp = M.x86.R_EAX; - M.x86.R_EAX = M.x86.R_EBP; - M.x86.R_EBP = tmp; - } else { - tmp = M.x86.R_AX; - M.x86.R_AX = M.x86.R_BP; - M.x86.R_BP = (u16)tmp; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x96 -****************************************************************************/ -static void x86emuOp_xchg_word_AX_SI(u8 X86EMU_UNUSED(op1)) -{ - u32 tmp; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("XCHG\tEAX,ESI\n"); - } else { - DECODE_PRINTF("XCHG\tAX,SI\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - tmp = M.x86.R_EAX; - M.x86.R_EAX = M.x86.R_ESI; - M.x86.R_ESI = tmp; - } else { - tmp = M.x86.R_AX; - M.x86.R_AX = M.x86.R_SI; - M.x86.R_SI = (u16)tmp; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x97 -****************************************************************************/ -static void x86emuOp_xchg_word_AX_DI(u8 X86EMU_UNUSED(op1)) -{ - u32 tmp; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("XCHG\tEAX,EDI\n"); - } else { - DECODE_PRINTF("XCHG\tAX,DI\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - tmp = M.x86.R_EAX; - M.x86.R_EAX = M.x86.R_EDI; - M.x86.R_EDI = tmp; - } else { - tmp = M.x86.R_AX; - M.x86.R_AX = M.x86.R_DI; - M.x86.R_DI = (u16)tmp; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x98 -****************************************************************************/ -static void x86emuOp_cbw(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("CWDE\n"); - } else { - DECODE_PRINTF("CBW\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - if (M.x86.R_AX & 0x8000) { - M.x86.R_EAX |= 0xffff0000; - } else { - M.x86.R_EAX &= 0x0000ffff; - } - } else { - if (M.x86.R_AL & 0x80) { - M.x86.R_AH = 0xff; - } else { - M.x86.R_AH = 0x0; - } - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x99 -****************************************************************************/ -static void x86emuOp_cwd(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("CDQ\n"); - } else { - DECODE_PRINTF("CWD\n"); - } - DECODE_PRINTF("CWD\n"); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - if (M.x86.R_EAX & 0x80000000) { - M.x86.R_EDX = 0xffffffff; - } else { - M.x86.R_EDX = 0x0; - } - } else { - if (M.x86.R_AX & 0x8000) { - M.x86.R_DX = 0xffff; - } else { - M.x86.R_DX = 0x0; - } - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x9a -****************************************************************************/ -static void x86emuOp_call_far_IMM(u8 X86EMU_UNUSED(op1)) -{ - u16 farseg, faroff; - - START_OF_INSTR(); - DECODE_PRINTF("CALL\t"); - faroff = fetch_word_imm(); - farseg = fetch_word_imm(); - DECODE_PRINTF2("%04x:", farseg); - DECODE_PRINTF2("%04x\n", faroff); - CALL_TRACE(M.x86.saved_cs, M.x86.saved_ip, farseg, faroff, "FAR "); - - /* XXX - * - * Hooked interrupt vectors calling into our "BIOS" will cause - * problems unless all intersegment stuff is checked for BIOS - * access. Check needed here. For moment, let it alone. - */ - TRACE_AND_STEP(); - push_word(M.x86.R_CS); - M.x86.R_CS = farseg; - push_word(M.x86.R_IP); - M.x86.R_IP = faroff; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x9b -****************************************************************************/ -static void x86emuOp_wait(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("WAIT"); - TRACE_AND_STEP(); - /* NADA. */ - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x9c -****************************************************************************/ -static void x86emuOp_pushf_word(u8 X86EMU_UNUSED(op1)) -{ - u32 flags; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("PUSHFD\n"); - } else { - DECODE_PRINTF("PUSHF\n"); - } - TRACE_AND_STEP(); - - /* clear out *all* bits not representing flags, and turn on real bits */ - flags = (M.x86.R_EFLG & F_MSK) | F_ALWAYS_ON; - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - push_long(flags); - } else { - push_word((u16)flags); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x9d -****************************************************************************/ -static void x86emuOp_popf_word(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("POPFD\n"); - } else { - DECODE_PRINTF("POPF\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EFLG = pop_long(); - } else { - M.x86.R_FLG = pop_word(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x9e -****************************************************************************/ -static void x86emuOp_sahf(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("SAHF\n"); - TRACE_AND_STEP(); - /* clear the lower bits of the flag register */ - M.x86.R_FLG &= 0xffffff00; - /* or in the AH register into the flags register */ - M.x86.R_FLG |= M.x86.R_AH; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x9f -****************************************************************************/ -static void x86emuOp_lahf(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("LAHF\n"); - TRACE_AND_STEP(); - M.x86.R_AH = (u8)(M.x86.R_FLG & 0xff); - /*undocumented TC++ behavior??? Nope. It's documented, but - you have too look real hard to notice it. */ - M.x86.R_AH |= 0x2; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xa0 -****************************************************************************/ -static void x86emuOp_mov_AL_M_IMM(u8 X86EMU_UNUSED(op1)) -{ - u16 offset; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\tAL,"); - offset = fetch_word_imm(); - DECODE_PRINTF2("[%04x]\n", offset); - TRACE_AND_STEP(); - M.x86.R_AL = fetch_data_byte(offset); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xa1 -****************************************************************************/ -static void x86emuOp_mov_AX_M_IMM(u8 X86EMU_UNUSED(op1)) -{ - u16 offset; - - START_OF_INSTR(); - offset = fetch_word_imm(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF2("MOV\tEAX,[%04x]\n", offset); - } else { - DECODE_PRINTF2("MOV\tAX,[%04x]\n", offset); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = fetch_data_long(offset); - } else { - M.x86.R_AX = fetch_data_word(offset); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xa2 -****************************************************************************/ -static void x86emuOp_mov_M_AL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u16 offset; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\t"); - offset = fetch_word_imm(); - DECODE_PRINTF2("[%04x],AL\n", offset); - TRACE_AND_STEP(); - store_data_byte(offset, M.x86.R_AL); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xa3 -****************************************************************************/ -static void x86emuOp_mov_M_AX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u16 offset; - - START_OF_INSTR(); - offset = fetch_word_imm(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF2("MOV\t[%04x],EAX\n", offset); - } else { - DECODE_PRINTF2("MOV\t[%04x],AX\n", offset); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - store_data_long(offset, M.x86.R_EAX); - } else { - store_data_word(offset, M.x86.R_AX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xa4 -****************************************************************************/ -static void x86emuOp_movs_byte(u8 X86EMU_UNUSED(op1)) -{ - u8 val; - u32 count; - int inc; - - START_OF_INSTR(); - DECODE_PRINTF("MOVS\tBYTE\n"); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -1; - else - inc = 1; - TRACE_AND_STEP(); - count = 1; - if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) { - /* dont care whether REPE or REPNE */ - /* move them until CX is ZERO. */ - count = M.x86.R_CX; - M.x86.R_CX = 0; - M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE); - } - while (count--) { - val = fetch_data_byte(M.x86.R_SI); - store_data_byte_abs(M.x86.R_ES, M.x86.R_DI, val); - M.x86.R_SI += inc; - M.x86.R_DI += inc; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xa5 -****************************************************************************/ -static void x86emuOp_movs_word(u8 X86EMU_UNUSED(op1)) -{ - u32 val; - int inc; - u32 count; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("MOVS\tDWORD\n"); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -4; - else - inc = 4; - } else { - DECODE_PRINTF("MOVS\tWORD\n"); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -2; - else - inc = 2; - } - TRACE_AND_STEP(); - count = 1; - if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) { - /* dont care whether REPE or REPNE */ - /* move them until CX is ZERO. */ - count = M.x86.R_CX; - M.x86.R_CX = 0; - M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE); - } - while (count--) { - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - val = fetch_data_long(M.x86.R_SI); - store_data_long_abs(M.x86.R_ES, M.x86.R_DI, val); - } else { - val = fetch_data_word(M.x86.R_SI); - store_data_word_abs(M.x86.R_ES, M.x86.R_DI, (u16)val); - } - M.x86.R_SI += inc; - M.x86.R_DI += inc; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xa6 -****************************************************************************/ -static void x86emuOp_cmps_byte(u8 X86EMU_UNUSED(op1)) -{ - s8 val1, val2; - int inc; - - START_OF_INSTR(); - DECODE_PRINTF("CMPS\tBYTE\n"); - TRACE_AND_STEP(); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -1; - else - inc = 1; - - if (M.x86.mode & SYSMODE_PREFIX_REPE) { - /* REPE */ - /* move them until CX is ZERO. */ - while (M.x86.R_CX != 0) { - val1 = fetch_data_byte(M.x86.R_SI); - val2 = fetch_data_byte_abs(M.x86.R_ES, M.x86.R_DI); - cmp_byte(val1, val2); - M.x86.R_CX -= 1; - M.x86.R_SI += inc; - M.x86.R_DI += inc; - if (ACCESS_FLAG(F_ZF) == 0) - break; - } - M.x86.mode &= ~SYSMODE_PREFIX_REPE; - } else if (M.x86.mode & SYSMODE_PREFIX_REPNE) { - /* REPNE */ - /* move them until CX is ZERO. */ - while (M.x86.R_CX != 0) { - val1 = fetch_data_byte(M.x86.R_SI); - val2 = fetch_data_byte_abs(M.x86.R_ES, M.x86.R_DI); - cmp_byte(val1, val2); - M.x86.R_CX -= 1; - M.x86.R_SI += inc; - M.x86.R_DI += inc; - if (ACCESS_FLAG(F_ZF)) - break; /* zero flag set means equal */ - } - M.x86.mode &= ~SYSMODE_PREFIX_REPNE; - } else { - val1 = fetch_data_byte(M.x86.R_SI); - val2 = fetch_data_byte_abs(M.x86.R_ES, M.x86.R_DI); - cmp_byte(val1, val2); - M.x86.R_SI += inc; - M.x86.R_DI += inc; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xa7 -****************************************************************************/ -static void x86emuOp_cmps_word(u8 X86EMU_UNUSED(op1)) -{ - u32 val1,val2; - int inc; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("CMPS\tDWORD\n"); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -4; - else - inc = 4; - } else { - DECODE_PRINTF("CMPS\tWORD\n"); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -2; - else - inc = 2; - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_REPE) { - /* REPE */ - /* move them until CX is ZERO. */ - while (M.x86.R_CX != 0) { - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - val1 = fetch_data_long(M.x86.R_SI); - val2 = fetch_data_long_abs(M.x86.R_ES, M.x86.R_DI); - cmp_long(val1, val2); - } else { - val1 = fetch_data_word(M.x86.R_SI); - val2 = fetch_data_word_abs(M.x86.R_ES, M.x86.R_DI); - cmp_word((u16)val1, (u16)val2); - } - M.x86.R_CX -= 1; - M.x86.R_SI += inc; - M.x86.R_DI += inc; - if (ACCESS_FLAG(F_ZF) == 0) - break; - } - M.x86.mode &= ~SYSMODE_PREFIX_REPE; - } else if (M.x86.mode & SYSMODE_PREFIX_REPNE) { - /* REPNE */ - /* move them until CX is ZERO. */ - while (M.x86.R_CX != 0) { - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - val1 = fetch_data_long(M.x86.R_SI); - val2 = fetch_data_long_abs(M.x86.R_ES, M.x86.R_DI); - cmp_long(val1, val2); - } else { - val1 = fetch_data_word(M.x86.R_SI); - val2 = fetch_data_word_abs(M.x86.R_ES, M.x86.R_DI); - cmp_word((u16)val1, (u16)val2); - } - M.x86.R_CX -= 1; - M.x86.R_SI += inc; - M.x86.R_DI += inc; - if (ACCESS_FLAG(F_ZF)) - break; /* zero flag set means equal */ - } - M.x86.mode &= ~SYSMODE_PREFIX_REPNE; - } else { - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - val1 = fetch_data_long(M.x86.R_SI); - val2 = fetch_data_long_abs(M.x86.R_ES, M.x86.R_DI); - cmp_long(val1, val2); - } else { - val1 = fetch_data_word(M.x86.R_SI); - val2 = fetch_data_word_abs(M.x86.R_ES, M.x86.R_DI); - cmp_word((u16)val1, (u16)val2); - } - M.x86.R_SI += inc; - M.x86.R_DI += inc; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xa8 -****************************************************************************/ -static void x86emuOp_test_AL_IMM(u8 X86EMU_UNUSED(op1)) -{ - int imm; - - START_OF_INSTR(); - DECODE_PRINTF("TEST\tAL,"); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%04x\n", imm); - TRACE_AND_STEP(); - test_byte(M.x86.R_AL, (u8)imm); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xa9 -****************************************************************************/ -static void x86emuOp_test_AX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("TEST\tEAX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("TEST\tAX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - test_long(M.x86.R_EAX, srcval); - } else { - test_word(M.x86.R_AX, (u16)srcval); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xaa -****************************************************************************/ -static void x86emuOp_stos_byte(u8 X86EMU_UNUSED(op1)) -{ - int inc; - - START_OF_INSTR(); - DECODE_PRINTF("STOS\tBYTE\n"); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -1; - else - inc = 1; - TRACE_AND_STEP(); - if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) { - /* dont care whether REPE or REPNE */ - /* move them until CX is ZERO. */ - while (M.x86.R_CX != 0) { - store_data_byte_abs(M.x86.R_ES, M.x86.R_DI, M.x86.R_AL); - M.x86.R_CX -= 1; - M.x86.R_DI += inc; - } - M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE); - } else { - store_data_byte_abs(M.x86.R_ES, M.x86.R_DI, M.x86.R_AL); - M.x86.R_DI += inc; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xab -****************************************************************************/ -static void x86emuOp_stos_word(u8 X86EMU_UNUSED(op1)) -{ - int inc; - u32 count; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("STOS\tDWORD\n"); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -4; - else - inc = 4; - } else { - DECODE_PRINTF("STOS\tWORD\n"); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -2; - else - inc = 2; - } - TRACE_AND_STEP(); - count = 1; - if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) { - /* dont care whether REPE or REPNE */ - /* move them until CX is ZERO. */ - count = M.x86.R_CX; - M.x86.R_CX = 0; - M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE); - } - while (count--) { - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - store_data_long_abs(M.x86.R_ES, M.x86.R_DI, M.x86.R_EAX); - } else { - store_data_word_abs(M.x86.R_ES, M.x86.R_DI, M.x86.R_AX); - } - M.x86.R_DI += inc; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xac -****************************************************************************/ -static void x86emuOp_lods_byte(u8 X86EMU_UNUSED(op1)) -{ - int inc; - - START_OF_INSTR(); - DECODE_PRINTF("LODS\tBYTE\n"); - TRACE_AND_STEP(); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -1; - else - inc = 1; - if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) { - /* dont care whether REPE or REPNE */ - /* move them until CX is ZERO. */ - while (M.x86.R_CX != 0) { - M.x86.R_AL = fetch_data_byte(M.x86.R_SI); - M.x86.R_CX -= 1; - M.x86.R_SI += inc; - } - M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE); - } else { - M.x86.R_AL = fetch_data_byte(M.x86.R_SI); - M.x86.R_SI += inc; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xad -****************************************************************************/ -static void x86emuOp_lods_word(u8 X86EMU_UNUSED(op1)) -{ - int inc; - u32 count; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("LODS\tDWORD\n"); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -4; - else - inc = 4; - } else { - DECODE_PRINTF("LODS\tWORD\n"); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -2; - else - inc = 2; - } - TRACE_AND_STEP(); - count = 1; - if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) { - /* dont care whether REPE or REPNE */ - /* move them until CX is ZERO. */ - count = M.x86.R_CX; - M.x86.R_CX = 0; - M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE); - } - while (count--) { - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = fetch_data_long(M.x86.R_SI); - } else { - M.x86.R_AX = fetch_data_word(M.x86.R_SI); - } - M.x86.R_SI += inc; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xae -****************************************************************************/ -static void x86emuOp_scas_byte(u8 X86EMU_UNUSED(op1)) -{ - s8 val2; - int inc; - - START_OF_INSTR(); - DECODE_PRINTF("SCAS\tBYTE\n"); - TRACE_AND_STEP(); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -1; - else - inc = 1; - if (M.x86.mode & SYSMODE_PREFIX_REPE) { - /* REPE */ - /* move them until CX is ZERO. */ - while (M.x86.R_CX != 0) { - val2 = fetch_data_byte_abs(M.x86.R_ES, M.x86.R_DI); - cmp_byte(M.x86.R_AL, val2); - M.x86.R_CX -= 1; - M.x86.R_DI += inc; - if (ACCESS_FLAG(F_ZF) == 0) - break; - } - M.x86.mode &= ~SYSMODE_PREFIX_REPE; - } else if (M.x86.mode & SYSMODE_PREFIX_REPNE) { - /* REPNE */ - /* move them until CX is ZERO. */ - while (M.x86.R_CX != 0) { - val2 = fetch_data_byte_abs(M.x86.R_ES, M.x86.R_DI); - cmp_byte(M.x86.R_AL, val2); - M.x86.R_CX -= 1; - M.x86.R_DI += inc; - if (ACCESS_FLAG(F_ZF)) - break; /* zero flag set means equal */ - } - M.x86.mode &= ~SYSMODE_PREFIX_REPNE; - } else { - val2 = fetch_data_byte_abs(M.x86.R_ES, M.x86.R_DI); - cmp_byte(M.x86.R_AL, val2); - M.x86.R_DI += inc; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xaf -****************************************************************************/ -static void x86emuOp_scas_word(u8 X86EMU_UNUSED(op1)) -{ - int inc; - u32 val; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("SCAS\tDWORD\n"); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -4; - else - inc = 4; - } else { - DECODE_PRINTF("SCAS\tWORD\n"); - if (ACCESS_FLAG(F_DF)) /* down */ - inc = -2; - else - inc = 2; - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_REPE) { - /* REPE */ - /* move them until CX is ZERO. */ - while (M.x86.R_CX != 0) { - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - val = fetch_data_long_abs(M.x86.R_ES, M.x86.R_DI); - cmp_long(M.x86.R_EAX, val); - } else { - val = fetch_data_word_abs(M.x86.R_ES, M.x86.R_DI); - cmp_word(M.x86.R_AX, (u16)val); - } - M.x86.R_CX -= 1; - M.x86.R_DI += inc; - if (ACCESS_FLAG(F_ZF) == 0) - break; - } - M.x86.mode &= ~SYSMODE_PREFIX_REPE; - } else if (M.x86.mode & SYSMODE_PREFIX_REPNE) { - /* REPNE */ - /* move them until CX is ZERO. */ - while (M.x86.R_CX != 0) { - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - val = fetch_data_long_abs(M.x86.R_ES, M.x86.R_DI); - cmp_long(M.x86.R_EAX, val); - } else { - val = fetch_data_word_abs(M.x86.R_ES, M.x86.R_DI); - cmp_word(M.x86.R_AX, (u16)val); - } - M.x86.R_CX -= 1; - M.x86.R_DI += inc; - if (ACCESS_FLAG(F_ZF)) - break; /* zero flag set means equal */ - } - M.x86.mode &= ~SYSMODE_PREFIX_REPNE; - } else { - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - val = fetch_data_long_abs(M.x86.R_ES, M.x86.R_DI); - cmp_long(M.x86.R_EAX, val); - } else { - val = fetch_data_word_abs(M.x86.R_ES, M.x86.R_DI); - cmp_word(M.x86.R_AX, (u16)val); - } - M.x86.R_DI += inc; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xb0 -****************************************************************************/ -static void x86emuOp_mov_byte_AL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 imm; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\tAL,"); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - M.x86.R_AL = imm; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xb1 -****************************************************************************/ -static void x86emuOp_mov_byte_CL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 imm; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\tCL,"); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - M.x86.R_CL = imm; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xb2 -****************************************************************************/ -static void x86emuOp_mov_byte_DL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 imm; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\tDL,"); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - M.x86.R_DL = imm; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xb3 -****************************************************************************/ -static void x86emuOp_mov_byte_BL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 imm; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\tBL,"); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - M.x86.R_BL = imm; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xb4 -****************************************************************************/ -static void x86emuOp_mov_byte_AH_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 imm; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\tAH,"); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - M.x86.R_AH = imm; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xb5 -****************************************************************************/ -static void x86emuOp_mov_byte_CH_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 imm; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\tCH,"); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - M.x86.R_CH = imm; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xb6 -****************************************************************************/ -static void x86emuOp_mov_byte_DH_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 imm; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\tDH,"); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - M.x86.R_DH = imm; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xb7 -****************************************************************************/ -static void x86emuOp_mov_byte_BH_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 imm; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\tBH,"); - imm = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", imm); - TRACE_AND_STEP(); - M.x86.R_BH = imm; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xb8 -****************************************************************************/ -static void x86emuOp_mov_word_AX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("MOV\tEAX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("MOV\tAX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = srcval; - } else { - M.x86.R_AX = (u16)srcval; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xb9 -****************************************************************************/ -static void x86emuOp_mov_word_CX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("MOV\tECX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("MOV\tCX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ECX = srcval; - } else { - M.x86.R_CX = (u16)srcval; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xba -****************************************************************************/ -static void x86emuOp_mov_word_DX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("MOV\tEDX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("MOV\tDX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EDX = srcval; - } else { - M.x86.R_DX = (u16)srcval; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xbb -****************************************************************************/ -static void x86emuOp_mov_word_BX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("MOV\tEBX,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("MOV\tBX,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EBX = srcval; - } else { - M.x86.R_BX = (u16)srcval; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xbc -****************************************************************************/ -static void x86emuOp_mov_word_SP_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("MOV\tESP,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("MOV\tSP,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ESP = srcval; - } else { - M.x86.R_SP = (u16)srcval; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xbd -****************************************************************************/ -static void x86emuOp_mov_word_BP_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("MOV\tEBP,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("MOV\tBP,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EBP = srcval; - } else { - M.x86.R_BP = (u16)srcval; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xbe -****************************************************************************/ -static void x86emuOp_mov_word_SI_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("MOV\tESI,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("MOV\tSI,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ESI = srcval; - } else { - M.x86.R_SI = (u16)srcval; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xbf -****************************************************************************/ -static void x86emuOp_mov_word_DI_IMM(u8 X86EMU_UNUSED(op1)) -{ - u32 srcval; - - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("MOV\tEDI,"); - srcval = fetch_long_imm(); - } else { - DECODE_PRINTF("MOV\tDI,"); - srcval = fetch_word_imm(); - } - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EDI = srcval; - } else { - M.x86.R_DI = (u16)srcval; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/* used by opcodes c0, d0, and d2. */ -static u8(*opcD0_byte_operation[])(u8 d, u8 s) = -{ - rol_byte, - ror_byte, - rcl_byte, - rcr_byte, - shl_byte, - shr_byte, - shl_byte, /* sal_byte === shl_byte by definition */ - sar_byte, -}; - -/**************************************************************************** -REMARKS: -Handles opcode 0xc0 -****************************************************************************/ -static void x86emuOp_opcC0_byte_RM_MEM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg; - uint destoffset; - u8 destval; - u8 amt; - - /* - * Yet another weirdo special case instruction format. Part of - * the opcode held below in "RH". Doubly nested case would - * result, except that the decoded instruction - */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (DEBUG_DECODE()) { - /* XXX DECODE_PRINTF may be changed to something more - general, so that it is important to leave the strings - in the same format, even though the result is that the - above test is done twice. */ - - switch (rh) { - case 0: - DECODE_PRINTF("ROL\t"); - break; - case 1: - DECODE_PRINTF("ROR\t"); - break; - case 2: - DECODE_PRINTF("RCL\t"); - break; - case 3: - DECODE_PRINTF("RCR\t"); - break; - case 4: - DECODE_PRINTF("SHL\t"); - break; - case 5: - DECODE_PRINTF("SHR\t"); - break; - case 6: - DECODE_PRINTF("SAL\t"); - break; - case 7: - DECODE_PRINTF("SAR\t"); - break; - } - } -#endif - /* know operation, decode the mod byte to find the addressing - mode. */ - switch (mod) { - case 0: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm00_address(rl); - amt = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", amt); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = (*opcD0_byte_operation[rh]) (destval, amt); - store_data_byte(destoffset, destval); - break; - case 1: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm01_address(rl); - amt = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", amt); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = (*opcD0_byte_operation[rh]) (destval, amt); - store_data_byte(destoffset, destval); - break; - case 2: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm10_address(rl); - amt = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", amt); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = (*opcD0_byte_operation[rh]) (destval, amt); - store_data_byte(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - amt = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", amt); - TRACE_AND_STEP(); - destval = (*opcD0_byte_operation[rh]) (*destreg, amt); - *destreg = destval; - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/* used by opcodes c1, d1, and d3. */ -static u16(*opcD1_word_operation[])(u16 s, u8 d) = -{ - rol_word, - ror_word, - rcl_word, - rcr_word, - shl_word, - shr_word, - shl_word, /* sal_byte === shl_byte by definition */ - sar_word, -}; - -/* used by opcodes c1, d1, and d3. */ -static u32 (*opcD1_long_operation[])(u32 s, u8 d) = -{ - rol_long, - ror_long, - rcl_long, - rcr_long, - shl_long, - shr_long, - shl_long, /* sal_byte === shl_byte by definition */ - sar_long, -}; - -/**************************************************************************** -REMARKS: -Handles opcode 0xc1 -****************************************************************************/ -static void x86emuOp_opcC1_word_RM_MEM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - u8 amt; - - /* - * Yet another weirdo special case instruction format. Part of - * the opcode held below in "RH". Doubly nested case would - * result, except that the decoded instruction - */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (DEBUG_DECODE()) { - /* XXX DECODE_PRINTF may be changed to something more - general, so that it is important to leave the strings - in the same format, even though the result is that the - above test is done twice. */ - - switch (rh) { - case 0: - DECODE_PRINTF("ROL\t"); - break; - case 1: - DECODE_PRINTF("ROR\t"); - break; - case 2: - DECODE_PRINTF("RCL\t"); - break; - case 3: - DECODE_PRINTF("RCR\t"); - break; - case 4: - DECODE_PRINTF("SHL\t"); - break; - case 5: - DECODE_PRINTF("SHR\t"); - break; - case 6: - DECODE_PRINTF("SAL\t"); - break; - case 7: - DECODE_PRINTF("SAR\t"); - break; - } - } -#endif - /* know operation, decode the mod byte to find the addressing - mode. */ - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm00_address(rl); - amt = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", amt); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_long_operation[rh]) (destval, amt); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm00_address(rl); - amt = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", amt); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_word_operation[rh]) (destval, amt); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm01_address(rl); - amt = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", amt); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_long_operation[rh]) (destval, amt); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm01_address(rl); - amt = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", amt); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_word_operation[rh]) (destval, amt); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm10_address(rl); - amt = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", amt); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_long_operation[rh]) (destval, amt); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm10_address(rl); - amt = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", amt); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_word_operation[rh]) (destval, amt); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - amt = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", amt); - TRACE_AND_STEP(); - *destreg = (*opcD1_long_operation[rh]) (*destreg, amt); - } else { - u16 *destreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - amt = fetch_byte_imm(); - DECODE_PRINTF2(",%x\n", amt); - TRACE_AND_STEP(); - *destreg = (*opcD1_word_operation[rh]) (*destreg, amt); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xc2 -****************************************************************************/ -static void x86emuOp_ret_near_IMM(u8 X86EMU_UNUSED(op1)) -{ - u16 imm; - - START_OF_INSTR(); - DECODE_PRINTF("RET\t"); - imm = fetch_word_imm(); - DECODE_PRINTF2("%x\n", imm); - RETURN_TRACE("RET",M.x86.saved_cs,M.x86.saved_ip); - TRACE_AND_STEP(); - M.x86.R_IP = pop_word(); - M.x86.R_SP += imm; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xc3 -****************************************************************************/ -static void x86emuOp_ret_near(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("RET\n"); - RETURN_TRACE("RET",M.x86.saved_cs,M.x86.saved_ip); - TRACE_AND_STEP(); - M.x86.R_IP = pop_word(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xc4 -****************************************************************************/ -static void x86emuOp_les_R_IMM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rh, rl; - u16 *dstreg; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("LES\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_ES = fetch_data_word(srcoffset + 2); - break; - case 1: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_ES = fetch_data_word(srcoffset + 2); - break; - case 2: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_ES = fetch_data_word(srcoffset + 2); - break; - case 3: /* register to register */ - /* UNDEFINED! */ - TRACE_AND_STEP(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xc5 -****************************************************************************/ -static void x86emuOp_lds_R_IMM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rh, rl; - u16 *dstreg; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("LDS\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_DS = fetch_data_word(srcoffset + 2); - break; - case 1: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_DS = fetch_data_word(srcoffset + 2); - break; - case 2: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_DS = fetch_data_word(srcoffset + 2); - break; - case 3: /* register to register */ - /* UNDEFINED! */ - TRACE_AND_STEP(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xc6 -****************************************************************************/ -static void x86emuOp_mov_byte_RM_IMM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg; - uint destoffset; - u8 imm; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - if (rh != 0) { - DECODE_PRINTF("ILLEGAL DECODE OF OPCODE c6\n"); - HALT_SYS(); - } - switch (mod) { - case 0: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm00_address(rl); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%2x\n", imm); - TRACE_AND_STEP(); - store_data_byte(destoffset, imm); - break; - case 1: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm01_address(rl); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%2x\n", imm); - TRACE_AND_STEP(); - store_data_byte(destoffset, imm); - break; - case 2: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm10_address(rl); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%2x\n", imm); - TRACE_AND_STEP(); - store_data_byte(destoffset, imm); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - imm = fetch_byte_imm(); - DECODE_PRINTF2(",%2x\n", imm); - TRACE_AND_STEP(); - *destreg = imm; - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xc7 -****************************************************************************/ -static void x86emuOp_mov_word_RM_IMM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("MOV\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - if (rh != 0) { - DECODE_PRINTF("ILLEGAL DECODE OF OPCODE 8F\n"); - HALT_SYS(); - } - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 imm; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm00_address(rl); - imm = fetch_long_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - store_data_long(destoffset, imm); - } else { - u16 imm; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm00_address(rl); - imm = fetch_word_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - store_data_word(destoffset, imm); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 imm; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm01_address(rl); - imm = fetch_long_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - store_data_long(destoffset, imm); - } else { - u16 imm; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm01_address(rl); - imm = fetch_word_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - store_data_word(destoffset, imm); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 imm; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm10_address(rl); - imm = fetch_long_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - store_data_long(destoffset, imm); - } else { - u16 imm; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm10_address(rl); - imm = fetch_word_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - store_data_word(destoffset, imm); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 imm; - - destreg = DECODE_RM_LONG_REGISTER(rl); - imm = fetch_long_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - *destreg = imm; - } else { - u16 *destreg; - u16 imm; - - destreg = DECODE_RM_WORD_REGISTER(rl); - imm = fetch_word_imm(); - DECODE_PRINTF2(",%x\n", imm); - TRACE_AND_STEP(); - *destreg = imm; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xc8 -****************************************************************************/ -static void x86emuOp_enter(u8 X86EMU_UNUSED(op1)) -{ - u16 local,frame_pointer; - u8 nesting; - int i; - - START_OF_INSTR(); - local = fetch_word_imm(); - nesting = fetch_byte_imm(); - DECODE_PRINTF2("ENTER %x\n", local); - DECODE_PRINTF2(",%x\n", nesting); - TRACE_AND_STEP(); - push_word(M.x86.R_BP); - frame_pointer = M.x86.R_SP; - if (nesting > 0) { - for (i = 1; i < nesting; i++) { - M.x86.R_BP -= 2; - push_word(fetch_data_word_abs(M.x86.R_SS, M.x86.R_BP)); - } - push_word(frame_pointer); - } - M.x86.R_BP = frame_pointer; - M.x86.R_SP = (u16)(M.x86.R_SP - local); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xc9 -****************************************************************************/ -static void x86emuOp_leave(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("LEAVE\n"); - TRACE_AND_STEP(); - M.x86.R_SP = M.x86.R_BP; - M.x86.R_BP = pop_word(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xca -****************************************************************************/ -static void x86emuOp_ret_far_IMM(u8 X86EMU_UNUSED(op1)) -{ - u16 imm; - - START_OF_INSTR(); - DECODE_PRINTF("RETF\t"); - imm = fetch_word_imm(); - DECODE_PRINTF2("%x\n", imm); - RETURN_TRACE("RETF",M.x86.saved_cs,M.x86.saved_ip); - TRACE_AND_STEP(); - M.x86.R_IP = pop_word(); - M.x86.R_CS = pop_word(); - M.x86.R_SP += imm; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xcb -****************************************************************************/ -static void x86emuOp_ret_far(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("RETF\n"); - RETURN_TRACE("RETF",M.x86.saved_cs,M.x86.saved_ip); - TRACE_AND_STEP(); - M.x86.R_IP = pop_word(); - M.x86.R_CS = pop_word(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xcc -****************************************************************************/ -static void x86emuOp_int3(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("INT 3\n"); - TRACE_AND_STEP(); - if (_X86EMU_intrTab[3]) { - (*_X86EMU_intrTab[3])(3); - } else { - push_word((u16)M.x86.R_FLG); - CLEAR_FLAG(F_IF); - CLEAR_FLAG(F_TF); - push_word(M.x86.R_CS); - M.x86.R_CS = mem_access_word(3 * 4 + 2); - push_word(M.x86.R_IP); - M.x86.R_IP = mem_access_word(3 * 4); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xcd -****************************************************************************/ -static void x86emuOp_int_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 intnum; - - START_OF_INSTR(); - DECODE_PRINTF("INT\t"); - intnum = fetch_byte_imm(); - DECODE_PRINTF2("%x\n", intnum); - TRACE_AND_STEP(); - if (_X86EMU_intrTab[intnum]) { - (*_X86EMU_intrTab[intnum])(intnum); - } else { - push_word((u16)M.x86.R_FLG); - CLEAR_FLAG(F_IF); - CLEAR_FLAG(F_TF); - push_word(M.x86.R_CS); - M.x86.R_CS = mem_access_word(intnum * 4 + 2); - push_word(M.x86.R_IP); - M.x86.R_IP = mem_access_word(intnum * 4); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xce -****************************************************************************/ -static void x86emuOp_into(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("INTO\n"); - TRACE_AND_STEP(); - if (ACCESS_FLAG(F_OF)) { - if (_X86EMU_intrTab[4]) { - (*_X86EMU_intrTab[4])(4); - } else { - push_word((u16)M.x86.R_FLG); - CLEAR_FLAG(F_IF); - CLEAR_FLAG(F_TF); - push_word(M.x86.R_CS); - M.x86.R_CS = mem_access_word(4 * 4 + 2); - push_word(M.x86.R_IP); - M.x86.R_IP = mem_access_word(4 * 4); - } - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xcf -****************************************************************************/ -static void x86emuOp_iret(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("IRET\n"); - - TRACE_AND_STEP(); - - M.x86.R_IP = pop_word(); - M.x86.R_CS = pop_word(); - M.x86.R_FLG = pop_word(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xd0 -****************************************************************************/ -static void x86emuOp_opcD0_byte_RM_1(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg; - uint destoffset; - u8 destval; - - /* - * Yet another weirdo special case instruction format. Part of - * the opcode held below in "RH". Doubly nested case would - * result, except that the decoded instruction - */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (DEBUG_DECODE()) { - /* XXX DECODE_PRINTF may be changed to something more - general, so that it is important to leave the strings - in the same format, even though the result is that the - above test is done twice. */ - switch (rh) { - case 0: - DECODE_PRINTF("ROL\t"); - break; - case 1: - DECODE_PRINTF("ROR\t"); - break; - case 2: - DECODE_PRINTF("RCL\t"); - break; - case 3: - DECODE_PRINTF("RCR\t"); - break; - case 4: - DECODE_PRINTF("SHL\t"); - break; - case 5: - DECODE_PRINTF("SHR\t"); - break; - case 6: - DECODE_PRINTF("SAL\t"); - break; - case 7: - DECODE_PRINTF("SAR\t"); - break; - } - } -#endif - /* know operation, decode the mod byte to find the addressing - mode. */ - switch (mod) { - case 0: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(",1\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = (*opcD0_byte_operation[rh]) (destval, 1); - store_data_byte(destoffset, destval); - break; - case 1: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(",1\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = (*opcD0_byte_operation[rh]) (destval, 1); - store_data_byte(destoffset, destval); - break; - case 2: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(",1\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = (*opcD0_byte_operation[rh]) (destval, 1); - store_data_byte(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(",1\n"); - TRACE_AND_STEP(); - destval = (*opcD0_byte_operation[rh]) (*destreg, 1); - *destreg = destval; - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xd1 -****************************************************************************/ -static void x86emuOp_opcD1_word_RM_1(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - /* - * Yet another weirdo special case instruction format. Part of - * the opcode held below in "RH". Doubly nested case would - * result, except that the decoded instruction - */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (DEBUG_DECODE()) { - /* XXX DECODE_PRINTF may be changed to something more - general, so that it is important to leave the strings - in the same format, even though the result is that the - above test is done twice. */ - switch (rh) { - case 0: - DECODE_PRINTF("ROL\t"); - break; - case 1: - DECODE_PRINTF("ROR\t"); - break; - case 2: - DECODE_PRINTF("RCL\t"); - break; - case 3: - DECODE_PRINTF("RCR\t"); - break; - case 4: - DECODE_PRINTF("SHL\t"); - break; - case 5: - DECODE_PRINTF("SHR\t"); - break; - case 6: - DECODE_PRINTF("SAL\t"); - break; - case 7: - DECODE_PRINTF("SAR\t"); - break; - } - } -#endif - /* know operation, decode the mod byte to find the addressing - mode. */ - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(",1\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_long_operation[rh]) (destval, 1); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(",1\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_word_operation[rh]) (destval, 1); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(",1\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_long_operation[rh]) (destval, 1); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(",1\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_word_operation[rh]) (destval, 1); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(",1\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_long_operation[rh]) (destval, 1); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(",1\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_word_operation[rh]) (destval, 1); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *destreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(",1\n"); - TRACE_AND_STEP(); - destval = (*opcD1_long_operation[rh]) (*destreg, 1); - *destreg = destval; - } else { - u16 destval; - u16 *destreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(",1\n"); - TRACE_AND_STEP(); - destval = (*opcD1_word_operation[rh]) (*destreg, 1); - *destreg = destval; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xd2 -****************************************************************************/ -static void x86emuOp_opcD2_byte_RM_CL(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg; - uint destoffset; - u8 destval; - u8 amt; - - /* - * Yet another weirdo special case instruction format. Part of - * the opcode held below in "RH". Doubly nested case would - * result, except that the decoded instruction - */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (DEBUG_DECODE()) { - /* XXX DECODE_PRINTF may be changed to something more - general, so that it is important to leave the strings - in the same format, even though the result is that the - above test is done twice. */ - switch (rh) { - case 0: - DECODE_PRINTF("ROL\t"); - break; - case 1: - DECODE_PRINTF("ROR\t"); - break; - case 2: - DECODE_PRINTF("RCL\t"); - break; - case 3: - DECODE_PRINTF("RCR\t"); - break; - case 4: - DECODE_PRINTF("SHL\t"); - break; - case 5: - DECODE_PRINTF("SHR\t"); - break; - case 6: - DECODE_PRINTF("SAL\t"); - break; - case 7: - DECODE_PRINTF("SAR\t"); - break; - } - } -#endif - /* know operation, decode the mod byte to find the addressing - mode. */ - amt = M.x86.R_CL; - switch (mod) { - case 0: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(",CL\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = (*opcD0_byte_operation[rh]) (destval, amt); - store_data_byte(destoffset, destval); - break; - case 1: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(",CL\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = (*opcD0_byte_operation[rh]) (destval, amt); - store_data_byte(destoffset, destval); - break; - case 2: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(",CL\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = (*opcD0_byte_operation[rh]) (destval, amt); - store_data_byte(destoffset, destval); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = (*opcD0_byte_operation[rh]) (*destreg, amt); - *destreg = destval; - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xd3 -****************************************************************************/ -static void x86emuOp_opcD3_word_RM_CL(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - u8 amt; - - /* - * Yet another weirdo special case instruction format. Part of - * the opcode held below in "RH". Doubly nested case would - * result, except that the decoded instruction - */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (DEBUG_DECODE()) { - /* XXX DECODE_PRINTF may be changed to something more - general, so that it is important to leave the strings - in the same format, even though the result is that the - above test is done twice. */ - switch (rh) { - case 0: - DECODE_PRINTF("ROL\t"); - break; - case 1: - DECODE_PRINTF("ROR\t"); - break; - case 2: - DECODE_PRINTF("RCL\t"); - break; - case 3: - DECODE_PRINTF("RCR\t"); - break; - case 4: - DECODE_PRINTF("SHL\t"); - break; - case 5: - DECODE_PRINTF("SHR\t"); - break; - case 6: - DECODE_PRINTF("SAL\t"); - break; - case 7: - DECODE_PRINTF("SAR\t"); - break; - } - } -#endif - /* know operation, decode the mod byte to find the addressing - mode. */ - amt = M.x86.R_CL; - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(",CL\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_long_operation[rh]) (destval, amt); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(",CL\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_word_operation[rh]) (destval, amt); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(",CL\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_long_operation[rh]) (destval, amt); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(",CL\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_word_operation[rh]) (destval, amt); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("DWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(",CL\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_long_operation[rh]) (destval, amt); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("WORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(",CL\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = (*opcD1_word_operation[rh]) (destval, amt); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - *destreg = (*opcD1_long_operation[rh]) (*destreg, amt); - } else { - u16 *destreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - *destreg = (*opcD1_word_operation[rh]) (*destreg, amt); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xd4 -****************************************************************************/ -static void x86emuOp_aam(u8 X86EMU_UNUSED(op1)) -{ - u8 a; - - START_OF_INSTR(); - DECODE_PRINTF("AAM\n"); - a = fetch_byte_imm(); /* this is a stupid encoding. */ - if (a != 10) { - /* fix: add base decoding - aam_word(u8 val, int base a) */ - DECODE_PRINTF("ERROR DECODING AAM\n"); - TRACE_REGS(); - HALT_SYS(); - } - TRACE_AND_STEP(); - /* note the type change here --- returning AL and AH in AX. */ - M.x86.R_AX = aam_word(M.x86.R_AL); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xd5 -****************************************************************************/ -static void x86emuOp_aad(u8 X86EMU_UNUSED(op1)) -{ - u8 a; - - START_OF_INSTR(); - DECODE_PRINTF("AAD\n"); - a = fetch_byte_imm(); - if (a != 10) { - /* fix: add base decoding - aad_word(u16 val, int base a) */ - DECODE_PRINTF("ERROR DECODING AAM\n"); - TRACE_REGS(); - HALT_SYS(); - } - TRACE_AND_STEP(); - M.x86.R_AX = aad_word(M.x86.R_AX); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/* opcode 0xd6 ILLEGAL OPCODE */ - -/**************************************************************************** -REMARKS: -Handles opcode 0xd7 -****************************************************************************/ -static void x86emuOp_xlat(u8 X86EMU_UNUSED(op1)) -{ - u16 addr; - - START_OF_INSTR(); - DECODE_PRINTF("XLAT\n"); - TRACE_AND_STEP(); - addr = (u16)(M.x86.R_BX + (u8)M.x86.R_AL); - M.x86.R_AL = fetch_data_byte(addr); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/* instuctions D8 .. DF are in i87_ops.c */ - -/**************************************************************************** -REMARKS: -Handles opcode 0xe0 -****************************************************************************/ -static void x86emuOp_loopne(u8 X86EMU_UNUSED(op1)) -{ - s16 ip; - - START_OF_INSTR(); - DECODE_PRINTF("LOOPNE\t"); - ip = (s8) fetch_byte_imm(); - ip += (s16) M.x86.R_IP; - DECODE_PRINTF2("%04x\n", ip); - TRACE_AND_STEP(); - M.x86.R_CX -= 1; - if (M.x86.R_CX != 0 && !ACCESS_FLAG(F_ZF)) /* CX != 0 and !ZF */ - M.x86.R_IP = ip; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xe1 -****************************************************************************/ -static void x86emuOp_loope(u8 X86EMU_UNUSED(op1)) -{ - s16 ip; - - START_OF_INSTR(); - DECODE_PRINTF("LOOPE\t"); - ip = (s8) fetch_byte_imm(); - ip += (s16) M.x86.R_IP; - DECODE_PRINTF2("%04x\n", ip); - TRACE_AND_STEP(); - M.x86.R_CX -= 1; - if (M.x86.R_CX != 0 && ACCESS_FLAG(F_ZF)) /* CX != 0 and ZF */ - M.x86.R_IP = ip; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xe2 -****************************************************************************/ -static void x86emuOp_loop(u8 X86EMU_UNUSED(op1)) -{ - s16 ip; - - START_OF_INSTR(); - DECODE_PRINTF("LOOP\t"); - ip = (s8) fetch_byte_imm(); - ip += (s16) M.x86.R_IP; - DECODE_PRINTF2("%04x\n", ip); - TRACE_AND_STEP(); - M.x86.R_CX -= 1; - if (M.x86.R_CX != 0) - M.x86.R_IP = ip; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xe3 -****************************************************************************/ -static void x86emuOp_jcxz(u8 X86EMU_UNUSED(op1)) -{ - u16 target; - s8 offset; - - /* jump to byte offset if overflow flag is set */ - START_OF_INSTR(); - DECODE_PRINTF("JCXZ\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - if (M.x86.R_CX == 0) - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xe4 -****************************************************************************/ -static void x86emuOp_in_byte_AL_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 port; - - START_OF_INSTR(); - DECODE_PRINTF("IN\t"); - port = (u8) fetch_byte_imm(); - DECODE_PRINTF2("%x,AL\n", port); - TRACE_AND_STEP(); - M.x86.R_AL = (*sys_inb)(port); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xe5 -****************************************************************************/ -static void x86emuOp_in_word_AX_IMM(u8 X86EMU_UNUSED(op1)) -{ - u8 port; - - START_OF_INSTR(); - DECODE_PRINTF("IN\t"); - port = (u8) fetch_byte_imm(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF2("EAX,%x\n", port); - } else { - DECODE_PRINTF2("AX,%x\n", port); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = (*sys_inl)(port); - } else { - M.x86.R_AX = (*sys_inw)(port); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xe6 -****************************************************************************/ -static void x86emuOp_out_byte_IMM_AL(u8 X86EMU_UNUSED(op1)) -{ - u8 port; - - START_OF_INSTR(); - DECODE_PRINTF("OUT\t"); - port = (u8) fetch_byte_imm(); - DECODE_PRINTF2("%x,AL\n", port); - TRACE_AND_STEP(); - (*sys_outb)(port, M.x86.R_AL); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xe7 -****************************************************************************/ -static void x86emuOp_out_word_IMM_AX(u8 X86EMU_UNUSED(op1)) -{ - u8 port; - - START_OF_INSTR(); - DECODE_PRINTF("OUT\t"); - port = (u8) fetch_byte_imm(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF2("%x,EAX\n", port); - } else { - DECODE_PRINTF2("%x,AX\n", port); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - (*sys_outl)(port, M.x86.R_EAX); - } else { - (*sys_outw)(port, M.x86.R_AX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xe8 -****************************************************************************/ -static void x86emuOp_call_near_IMM(u8 X86EMU_UNUSED(op1)) -{ - s16 ip; - - START_OF_INSTR(); - DECODE_PRINTF("CALL\t"); - ip = (s16) fetch_word_imm(); - ip += (s16) M.x86.R_IP; /* CHECK SIGN */ - DECODE_PRINTF2("%04x\n", (u16)ip); - CALL_TRACE(M.x86.saved_cs, M.x86.saved_ip, M.x86.R_CS, ip, ""); - TRACE_AND_STEP(); - push_word(M.x86.R_IP); - M.x86.R_IP = ip; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xe9 -****************************************************************************/ -static void x86emuOp_jump_near_IMM(u8 X86EMU_UNUSED(op1)) -{ - int ip; - - START_OF_INSTR(); - DECODE_PRINTF("JMP\t"); - ip = (s16)fetch_word_imm(); - ip += (s16)M.x86.R_IP; - DECODE_PRINTF2("%04x\n", (u16)ip); - TRACE_AND_STEP(); - M.x86.R_IP = (u16)ip; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xea -****************************************************************************/ -static void x86emuOp_jump_far_IMM(u8 X86EMU_UNUSED(op1)) -{ - u16 cs, ip; - - START_OF_INSTR(); - DECODE_PRINTF("JMP\tFAR "); - ip = fetch_word_imm(); - cs = fetch_word_imm(); - DECODE_PRINTF2("%04x:", cs); - DECODE_PRINTF2("%04x\n", ip); - TRACE_AND_STEP(); - M.x86.R_IP = ip; - M.x86.R_CS = cs; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xeb -****************************************************************************/ -static void x86emuOp_jump_byte_IMM(u8 X86EMU_UNUSED(op1)) -{ - u16 target; - s8 offset; - - START_OF_INSTR(); - DECODE_PRINTF("JMP\t"); - offset = (s8)fetch_byte_imm(); - target = (u16)(M.x86.R_IP + offset); - DECODE_PRINTF2("%x\n", target); - TRACE_AND_STEP(); - M.x86.R_IP = target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xec -****************************************************************************/ -static void x86emuOp_in_byte_AL_DX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("IN\tAL,DX\n"); - TRACE_AND_STEP(); - M.x86.R_AL = (*sys_inb)(M.x86.R_DX); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xed -****************************************************************************/ -static void x86emuOp_in_word_AX_DX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("IN\tEAX,DX\n"); - } else { - DECODE_PRINTF("IN\tAX,DX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_EAX = (*sys_inl)(M.x86.R_DX); - } else { - M.x86.R_AX = (*sys_inw)(M.x86.R_DX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xee -****************************************************************************/ -static void x86emuOp_out_byte_DX_AL(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("OUT\tDX,AL\n"); - TRACE_AND_STEP(); - (*sys_outb)(M.x86.R_DX, M.x86.R_AL); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xef -****************************************************************************/ -static void x86emuOp_out_word_DX_AX(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("OUT\tDX,EAX\n"); - } else { - DECODE_PRINTF("OUT\tDX,AX\n"); - } - TRACE_AND_STEP(); - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - (*sys_outl)(M.x86.R_DX, M.x86.R_EAX); - } else { - (*sys_outw)(M.x86.R_DX, M.x86.R_AX); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xf0 -****************************************************************************/ -static void x86emuOp_lock(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("LOCK:\n"); - TRACE_AND_STEP(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/*opcode 0xf1 ILLEGAL OPERATION */ - -/**************************************************************************** -REMARKS: -Handles opcode 0xf2 -****************************************************************************/ -static void x86emuOp_repne(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("REPNE\n"); - TRACE_AND_STEP(); - M.x86.mode |= SYSMODE_PREFIX_REPNE; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xf3 -****************************************************************************/ -static void x86emuOp_repe(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("REPE\n"); - TRACE_AND_STEP(); - M.x86.mode |= SYSMODE_PREFIX_REPE; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xf4 -****************************************************************************/ -static void x86emuOp_halt(u8 X86EMU_UNUSED(op1)) -{ - START_OF_INSTR(); - DECODE_PRINTF("HALT\n"); - TRACE_AND_STEP(); - HALT_SYS(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xf5 -****************************************************************************/ -static void x86emuOp_cmc(u8 X86EMU_UNUSED(op1)) -{ - /* complement the carry flag. */ - START_OF_INSTR(); - DECODE_PRINTF("CMC\n"); - TRACE_AND_STEP(); - TOGGLE_FLAG(F_CF); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xf6 -****************************************************************************/ -static void x86emuOp_opcF6_byte_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - u8 *destreg; - uint destoffset; - u8 destval, srcval; - - /* long, drawn out code follows. Double switch for a total - of 32 cases. */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: /* mod=00 */ - switch (rh) { - case 0: /* test byte imm */ - DECODE_PRINTF("TEST\tBYTE PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - srcval = fetch_byte_imm(); - DECODE_PRINTF2("%02x\n", srcval); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - test_byte(destval, srcval); - break; - case 1: - DECODE_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F6\n"); - HALT_SYS(); - break; - case 2: - DECODE_PRINTF("NOT\tBYTE PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = not_byte(destval); - store_data_byte(destoffset, destval); - break; - case 3: - DECODE_PRINTF("NEG\tBYTE PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = neg_byte(destval); - store_data_byte(destoffset, destval); - break; - case 4: - DECODE_PRINTF("MUL\tBYTE PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - mul_byte(destval); - break; - case 5: - DECODE_PRINTF("IMUL\tBYTE PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - imul_byte(destval); - break; - case 6: - DECODE_PRINTF("DIV\tBYTE PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - div_byte(destval); - break; - case 7: - DECODE_PRINTF("IDIV\tBYTE PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - idiv_byte(destval); - break; - } - break; /* end mod==00 */ - case 1: /* mod=01 */ - switch (rh) { - case 0: /* test byte imm */ - DECODE_PRINTF("TEST\tBYTE PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - srcval = fetch_byte_imm(); - DECODE_PRINTF2("%02x\n", srcval); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - test_byte(destval, srcval); - break; - case 1: - DECODE_PRINTF("ILLEGAL OP MOD=01 RH=01 OP=F6\n"); - HALT_SYS(); - break; - case 2: - DECODE_PRINTF("NOT\tBYTE PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = not_byte(destval); - store_data_byte(destoffset, destval); - break; - case 3: - DECODE_PRINTF("NEG\tBYTE PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = neg_byte(destval); - store_data_byte(destoffset, destval); - break; - case 4: - DECODE_PRINTF("MUL\tBYTE PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - mul_byte(destval); - break; - case 5: - DECODE_PRINTF("IMUL\tBYTE PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - imul_byte(destval); - break; - case 6: - DECODE_PRINTF("DIV\tBYTE PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - div_byte(destval); - break; - case 7: - DECODE_PRINTF("IDIV\tBYTE PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - idiv_byte(destval); - break; - } - break; /* end mod==01 */ - case 2: /* mod=10 */ - switch (rh) { - case 0: /* test byte imm */ - DECODE_PRINTF("TEST\tBYTE PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - srcval = fetch_byte_imm(); - DECODE_PRINTF2("%02x\n", srcval); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - test_byte(destval, srcval); - break; - case 1: - DECODE_PRINTF("ILLEGAL OP MOD=10 RH=01 OP=F6\n"); - HALT_SYS(); - break; - case 2: - DECODE_PRINTF("NOT\tBYTE PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = not_byte(destval); - store_data_byte(destoffset, destval); - break; - case 3: - DECODE_PRINTF("NEG\tBYTE PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = neg_byte(destval); - store_data_byte(destoffset, destval); - break; - case 4: - DECODE_PRINTF("MUL\tBYTE PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - mul_byte(destval); - break; - case 5: - DECODE_PRINTF("IMUL\tBYTE PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - imul_byte(destval); - break; - case 6: - DECODE_PRINTF("DIV\tBYTE PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - div_byte(destval); - break; - case 7: - DECODE_PRINTF("IDIV\tBYTE PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - idiv_byte(destval); - break; - } - break; /* end mod==10 */ - case 3: /* mod=11 */ - switch (rh) { - case 0: /* test byte imm */ - DECODE_PRINTF("TEST\t"); - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF(","); - srcval = fetch_byte_imm(); - DECODE_PRINTF2("%02x\n", srcval); - TRACE_AND_STEP(); - test_byte(*destreg, srcval); - break; - case 1: - DECODE_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F6\n"); - HALT_SYS(); - break; - case 2: - DECODE_PRINTF("NOT\t"); - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = not_byte(*destreg); - break; - case 3: - DECODE_PRINTF("NEG\t"); - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = neg_byte(*destreg); - break; - case 4: - DECODE_PRINTF("MUL\t"); - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - mul_byte(*destreg); /*!!! */ - break; - case 5: - DECODE_PRINTF("IMUL\t"); - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - imul_byte(*destreg); - break; - case 6: - DECODE_PRINTF("DIV\t"); - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - div_byte(*destreg); - break; - case 7: - DECODE_PRINTF("IDIV\t"); - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - idiv_byte(*destreg); - break; - } - break; /* end mod==11 */ - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xf7 -****************************************************************************/ -static void x86emuOp_opcF7_word_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rl, rh; - uint destoffset; - - /* long, drawn out code follows. Double switch for a total - of 32 cases. */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: /* mod=00 */ - switch (rh) { - case 0: /* test word imm */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval,srcval; - - DECODE_PRINTF("TEST\tDWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - srcval = fetch_long_imm(); - DECODE_PRINTF2("%x\n", srcval); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - test_long(destval, srcval); - } else { - u16 destval,srcval; - - DECODE_PRINTF("TEST\tWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - srcval = fetch_word_imm(); - DECODE_PRINTF2("%x\n", srcval); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - test_word(destval, srcval); - } - break; - case 1: - DECODE_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F7\n"); - HALT_SYS(); - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("NOT\tDWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = not_long(destval); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("NOT\tWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = not_word(destval); - store_data_word(destoffset, destval); - } - break; - case 3: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("NEG\tDWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = neg_long(destval); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("NEG\tWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = neg_word(destval); - store_data_word(destoffset, destval); - } - break; - case 4: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("MUL\tDWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - mul_long(destval); - } else { - u16 destval; - - DECODE_PRINTF("MUL\tWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - mul_word(destval); - } - break; - case 5: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("IMUL\tDWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - imul_long(destval); - } else { - u16 destval; - - DECODE_PRINTF("IMUL\tWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - imul_word(destval); - } - break; - case 6: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("DIV\tDWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - div_long(destval); - } else { - u16 destval; - - DECODE_PRINTF("DIV\tWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - div_word(destval); - } - break; - case 7: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("IDIV\tDWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - idiv_long(destval); - } else { - u16 destval; - - DECODE_PRINTF("IDIV\tWORD PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - idiv_word(destval); - } - break; - } - break; /* end mod==00 */ - case 1: /* mod=01 */ - switch (rh) { - case 0: /* test word imm */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval,srcval; - - DECODE_PRINTF("TEST\tDWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - srcval = fetch_long_imm(); - DECODE_PRINTF2("%x\n", srcval); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - test_long(destval, srcval); - } else { - u16 destval,srcval; - - DECODE_PRINTF("TEST\tWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - srcval = fetch_word_imm(); - DECODE_PRINTF2("%x\n", srcval); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - test_word(destval, srcval); - } - break; - case 1: - DECODE_PRINTF("ILLEGAL OP MOD=01 RH=01 OP=F6\n"); - HALT_SYS(); - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("NOT\tDWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = not_long(destval); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("NOT\tWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = not_word(destval); - store_data_word(destoffset, destval); - } - break; - case 3: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("NEG\tDWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = neg_long(destval); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("NEG\tWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = neg_word(destval); - store_data_word(destoffset, destval); - } - break; - case 4: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("MUL\tDWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - mul_long(destval); - } else { - u16 destval; - - DECODE_PRINTF("MUL\tWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - mul_word(destval); - } - break; - case 5: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("IMUL\tDWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - imul_long(destval); - } else { - u16 destval; - - DECODE_PRINTF("IMUL\tWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - imul_word(destval); - } - break; - case 6: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("DIV\tDWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - div_long(destval); - } else { - u16 destval; - - DECODE_PRINTF("DIV\tWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - div_word(destval); - } - break; - case 7: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("IDIV\tDWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - idiv_long(destval); - } else { - u16 destval; - - DECODE_PRINTF("IDIV\tWORD PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - idiv_word(destval); - } - break; - } - break; /* end mod==01 */ - case 2: /* mod=10 */ - switch (rh) { - case 0: /* test word imm */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval,srcval; - - DECODE_PRINTF("TEST\tDWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - srcval = fetch_long_imm(); - DECODE_PRINTF2("%x\n", srcval); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - test_long(destval, srcval); - } else { - u16 destval,srcval; - - DECODE_PRINTF("TEST\tWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - srcval = fetch_word_imm(); - DECODE_PRINTF2("%x\n", srcval); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - test_word(destval, srcval); - } - break; - case 1: - DECODE_PRINTF("ILLEGAL OP MOD=10 RH=01 OP=F6\n"); - HALT_SYS(); - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("NOT\tDWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = not_long(destval); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("NOT\tWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = not_word(destval); - store_data_word(destoffset, destval); - } - break; - case 3: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("NEG\tDWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = neg_long(destval); - store_data_long(destoffset, destval); - } else { - u16 destval; - - DECODE_PRINTF("NEG\tWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = neg_word(destval); - store_data_word(destoffset, destval); - } - break; - case 4: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("MUL\tDWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - mul_long(destval); - } else { - u16 destval; - - DECODE_PRINTF("MUL\tWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - mul_word(destval); - } - break; - case 5: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("IMUL\tDWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - imul_long(destval); - } else { - u16 destval; - - DECODE_PRINTF("IMUL\tWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - imul_word(destval); - } - break; - case 6: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("DIV\tDWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - div_long(destval); - } else { - u16 destval; - - DECODE_PRINTF("DIV\tWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - div_word(destval); - } - break; - case 7: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - DECODE_PRINTF("IDIV\tDWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - idiv_long(destval); - } else { - u16 destval; - - DECODE_PRINTF("IDIV\tWORD PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - idiv_word(destval); - } - break; - } - break; /* end mod==10 */ - case 3: /* mod=11 */ - switch (rh) { - case 0: /* test word imm */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - DECODE_PRINTF("TEST\t"); - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - srcval = fetch_long_imm(); - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - test_long(*destreg, srcval); - } else { - u16 *destreg; - u16 srcval; - - DECODE_PRINTF("TEST\t"); - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - srcval = fetch_word_imm(); - DECODE_PRINTF2("%x\n", srcval); - TRACE_AND_STEP(); - test_word(*destreg, srcval); - } - break; - case 1: - DECODE_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F6\n"); - HALT_SYS(); - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - - DECODE_PRINTF("NOT\t"); - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = not_long(*destreg); - } else { - u16 *destreg; - - DECODE_PRINTF("NOT\t"); - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = not_word(*destreg); - } - break; - case 3: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - - DECODE_PRINTF("NEG\t"); - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = neg_long(*destreg); - } else { - u16 *destreg; - - DECODE_PRINTF("NEG\t"); - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = neg_word(*destreg); - } - break; - case 4: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - - DECODE_PRINTF("MUL\t"); - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - mul_long(*destreg); /*!!! */ - } else { - u16 *destreg; - - DECODE_PRINTF("MUL\t"); - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - mul_word(*destreg); /*!!! */ - } - break; - case 5: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - - DECODE_PRINTF("IMUL\t"); - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - imul_long(*destreg); - } else { - u16 *destreg; - - DECODE_PRINTF("IMUL\t"); - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - imul_word(*destreg); - } - break; - case 6: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - - DECODE_PRINTF("DIV\t"); - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - div_long(*destreg); - } else { - u16 *destreg; - - DECODE_PRINTF("DIV\t"); - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - div_word(*destreg); - } - break; - case 7: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - - DECODE_PRINTF("IDIV\t"); - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - idiv_long(*destreg); - } else { - u16 *destreg; - - DECODE_PRINTF("IDIV\t"); - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - idiv_word(*destreg); - } - break; - } - break; /* end mod==11 */ - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xf8 -****************************************************************************/ -static void x86emuOp_clc(u8 X86EMU_UNUSED(op1)) -{ - /* clear the carry flag. */ - START_OF_INSTR(); - DECODE_PRINTF("CLC\n"); - TRACE_AND_STEP(); - CLEAR_FLAG(F_CF); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xf9 -****************************************************************************/ -static void x86emuOp_stc(u8 X86EMU_UNUSED(op1)) -{ - /* set the carry flag. */ - START_OF_INSTR(); - DECODE_PRINTF("STC\n"); - TRACE_AND_STEP(); - SET_FLAG(F_CF); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xfa -****************************************************************************/ -static void x86emuOp_cli(u8 X86EMU_UNUSED(op1)) -{ - /* clear interrupts. */ - START_OF_INSTR(); - DECODE_PRINTF("CLI\n"); - TRACE_AND_STEP(); - CLEAR_FLAG(F_IF); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xfb -****************************************************************************/ -static void x86emuOp_sti(u8 X86EMU_UNUSED(op1)) -{ - /* enable interrupts. */ - START_OF_INSTR(); - DECODE_PRINTF("STI\n"); - TRACE_AND_STEP(); - SET_FLAG(F_IF); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xfc -****************************************************************************/ -static void x86emuOp_cld(u8 X86EMU_UNUSED(op1)) -{ - /* clear interrupts. */ - START_OF_INSTR(); - DECODE_PRINTF("CLD\n"); - TRACE_AND_STEP(); - CLEAR_FLAG(F_DF); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xfd -****************************************************************************/ -static void x86emuOp_std(u8 X86EMU_UNUSED(op1)) -{ - /* clear interrupts. */ - START_OF_INSTR(); - DECODE_PRINTF("STD\n"); - TRACE_AND_STEP(); - SET_FLAG(F_DF); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xfe -****************************************************************************/ -static void x86emuOp_opcFE_byte_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rh, rl; - u8 destval; - uint destoffset; - u8 *destreg; - - /* Yet another special case instruction. */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (DEBUG_DECODE()) { - /* XXX DECODE_PRINTF may be changed to something more - general, so that it is important to leave the strings - in the same format, even though the result is that the - above test is done twice. */ - - switch (rh) { - case 0: - DECODE_PRINTF("INC\t"); - break; - case 1: - DECODE_PRINTF("DEC\t"); - break; - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - DECODE_PRINTF2("ILLEGAL OP MAJOR OP 0xFE MINOR OP %x \n", mod); - HALT_SYS(); - break; - } - } -#endif - switch (mod) { - case 0: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - switch (rh) { - case 0: /* inc word ptr ... */ - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = inc_byte(destval); - store_data_byte(destoffset, destval); - break; - case 1: /* dec word ptr ... */ - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = dec_byte(destval); - store_data_byte(destoffset, destval); - break; - } - break; - case 1: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - switch (rh) { - case 0: - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = inc_byte(destval); - store_data_byte(destoffset, destval); - break; - case 1: - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = dec_byte(destval); - store_data_byte(destoffset, destval); - break; - } - break; - case 2: - DECODE_PRINTF("BYTE PTR "); - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - switch (rh) { - case 0: - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = inc_byte(destval); - store_data_byte(destoffset, destval); - break; - case 1: - destval = fetch_data_byte(destoffset); - TRACE_AND_STEP(); - destval = dec_byte(destval); - store_data_byte(destoffset, destval); - break; - } - break; - case 3: - destreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - switch (rh) { - case 0: - TRACE_AND_STEP(); - *destreg = inc_byte(*destreg); - break; - case 1: - TRACE_AND_STEP(); - *destreg = dec_byte(*destreg); - break; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0xff -****************************************************************************/ -static void x86emuOp_opcFF_word_RM(u8 X86EMU_UNUSED(op1)) -{ - int mod, rh, rl; - uint destoffset = 0; - u16 *destreg; - u16 destval,destval2; - - /* Yet another special case instruction. */ - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); -#ifdef DEBUG - if (DEBUG_DECODE()) { - /* XXX DECODE_PRINTF may be changed to something more - general, so that it is important to leave the strings - in the same format, even though the result is that the - above test is done twice. */ - - switch (rh) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("INC\tDWORD PTR "); - } else { - DECODE_PRINTF("INC\tWORD PTR "); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - DECODE_PRINTF("DEC\tDWORD PTR "); - } else { - DECODE_PRINTF("DEC\tWORD PTR "); - } - break; - case 2: - DECODE_PRINTF("CALL\t"); - break; - case 3: - DECODE_PRINTF("CALL\tFAR "); - break; - case 4: - DECODE_PRINTF("JMP\t"); - break; - case 5: - DECODE_PRINTF("JMP\tFAR "); - break; - case 6: - DECODE_PRINTF("PUSH\t"); - break; - case 7: - DECODE_PRINTF("ILLEGAL DECODING OF OPCODE FF\t"); - HALT_SYS(); - break; - } - } -#endif - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - switch (rh) { - case 0: /* inc word ptr ... */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = inc_long(destval); - store_data_long(destoffset, destval); - } else { - u16 destval; - - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = inc_word(destval); - store_data_word(destoffset, destval); - } - break; - case 1: /* dec word ptr ... */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = dec_long(destval); - store_data_long(destoffset, destval); - } else { - u16 destval; - - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = dec_word(destval); - store_data_word(destoffset, destval); - } - break; - case 2: /* call word ptr ... */ - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - push_word(M.x86.R_IP); - M.x86.R_IP = destval; - break; - case 3: /* call far ptr ... */ - destval = fetch_data_word(destoffset); - destval2 = fetch_data_word(destoffset + 2); - TRACE_AND_STEP(); - push_word(M.x86.R_CS); - M.x86.R_CS = destval2; - push_word(M.x86.R_IP); - M.x86.R_IP = destval; - break; - case 4: /* jmp word ptr ... */ - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - M.x86.R_IP = destval; - break; - case 5: /* jmp far ptr ... */ - destval = fetch_data_word(destoffset); - destval2 = fetch_data_word(destoffset + 2); - TRACE_AND_STEP(); - M.x86.R_IP = destval; - M.x86.R_CS = destval2; - break; - case 6: /* push word ptr ... */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - push_long(destval); - } else { - u16 destval; - - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - push_word(destval); - } - break; - } - break; - case 1: - destoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - switch (rh) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = inc_long(destval); - store_data_long(destoffset, destval); - } else { - u16 destval; - - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = inc_word(destval); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = dec_long(destval); - store_data_long(destoffset, destval); - } else { - u16 destval; - - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = dec_word(destval); - store_data_word(destoffset, destval); - } - break; - case 2: /* call word ptr ... */ - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - push_word(M.x86.R_IP); - M.x86.R_IP = destval; - break; - case 3: /* call far ptr ... */ - destval = fetch_data_word(destoffset); - destval2 = fetch_data_word(destoffset + 2); - TRACE_AND_STEP(); - push_word(M.x86.R_CS); - M.x86.R_CS = destval2; - push_word(M.x86.R_IP); - M.x86.R_IP = destval; - break; - case 4: /* jmp word ptr ... */ - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - M.x86.R_IP = destval; - break; - case 5: /* jmp far ptr ... */ - destval = fetch_data_word(destoffset); - destval2 = fetch_data_word(destoffset + 2); - TRACE_AND_STEP(); - M.x86.R_IP = destval; - M.x86.R_CS = destval2; - break; - case 6: /* push word ptr ... */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - push_long(destval); - } else { - u16 destval; - - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - push_word(destval); - } - break; - } - break; - case 2: - destoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - switch (rh) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = inc_long(destval); - store_data_long(destoffset, destval); - } else { - u16 destval; - - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = inc_word(destval); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - destval = dec_long(destval); - store_data_long(destoffset, destval); - } else { - u16 destval; - - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - destval = dec_word(destval); - store_data_word(destoffset, destval); - } - break; - case 2: /* call word ptr ... */ - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - push_word(M.x86.R_IP); - M.x86.R_IP = destval; - break; - case 3: /* call far ptr ... */ - destval = fetch_data_word(destoffset); - destval2 = fetch_data_word(destoffset + 2); - TRACE_AND_STEP(); - push_word(M.x86.R_CS); - M.x86.R_CS = destval2; - push_word(M.x86.R_IP); - M.x86.R_IP = destval; - break; - case 4: /* jmp word ptr ... */ - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - M.x86.R_IP = destval; - break; - case 5: /* jmp far ptr ... */ - destval = fetch_data_word(destoffset); - destval2 = fetch_data_word(destoffset + 2); - TRACE_AND_STEP(); - M.x86.R_IP = destval; - M.x86.R_CS = destval2; - break; - case 6: /* push word ptr ... */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - - destval = fetch_data_long(destoffset); - TRACE_AND_STEP(); - push_long(destval); - } else { - u16 destval; - - destval = fetch_data_word(destoffset); - TRACE_AND_STEP(); - push_word(destval); - } - break; - } - break; - case 3: - switch (rh) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = inc_long(*destreg); - } else { - u16 *destreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = inc_word(*destreg); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = dec_long(*destreg); - } else { - u16 *destreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = dec_word(*destreg); - } - break; - case 2: /* call word ptr ... */ - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - push_word(M.x86.R_IP); - M.x86.R_IP = *destreg; - break; - case 3: /* jmp far ptr ... */ - DECODE_PRINTF("OPERATION UNDEFINED 0XFF \n"); - TRACE_AND_STEP(); - HALT_SYS(); - break; - - case 4: /* jmp ... */ - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - M.x86.R_IP = (u16) (*destreg); - break; - case 5: /* jmp far ptr ... */ - DECODE_PRINTF("OPERATION UNDEFINED 0XFF \n"); - TRACE_AND_STEP(); - HALT_SYS(); - break; - case 6: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - push_long(*destreg); - } else { - u16 *destreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - push_word(*destreg); - } - break; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/*************************************************************************** - * Single byte operation code table: - **************************************************************************/ -void (*x86emu_optab[256])(u8) = -{ -/* 0x00 */ x86emuOp_add_byte_RM_R, -/* 0x01 */ x86emuOp_add_word_RM_R, -/* 0x02 */ x86emuOp_add_byte_R_RM, -/* 0x03 */ x86emuOp_add_word_R_RM, -/* 0x04 */ x86emuOp_add_byte_AL_IMM, -/* 0x05 */ x86emuOp_add_word_AX_IMM, -/* 0x06 */ x86emuOp_push_ES, -/* 0x07 */ x86emuOp_pop_ES, - -/* 0x08 */ x86emuOp_or_byte_RM_R, -/* 0x09 */ x86emuOp_or_word_RM_R, -/* 0x0a */ x86emuOp_or_byte_R_RM, -/* 0x0b */ x86emuOp_or_word_R_RM, -/* 0x0c */ x86emuOp_or_byte_AL_IMM, -/* 0x0d */ x86emuOp_or_word_AX_IMM, -/* 0x0e */ x86emuOp_push_CS, -/* 0x0f */ x86emuOp_two_byte, - -/* 0x10 */ x86emuOp_adc_byte_RM_R, -/* 0x11 */ x86emuOp_adc_word_RM_R, -/* 0x12 */ x86emuOp_adc_byte_R_RM, -/* 0x13 */ x86emuOp_adc_word_R_RM, -/* 0x14 */ x86emuOp_adc_byte_AL_IMM, -/* 0x15 */ x86emuOp_adc_word_AX_IMM, -/* 0x16 */ x86emuOp_push_SS, -/* 0x17 */ x86emuOp_pop_SS, - -/* 0x18 */ x86emuOp_sbb_byte_RM_R, -/* 0x19 */ x86emuOp_sbb_word_RM_R, -/* 0x1a */ x86emuOp_sbb_byte_R_RM, -/* 0x1b */ x86emuOp_sbb_word_R_RM, -/* 0x1c */ x86emuOp_sbb_byte_AL_IMM, -/* 0x1d */ x86emuOp_sbb_word_AX_IMM, -/* 0x1e */ x86emuOp_push_DS, -/* 0x1f */ x86emuOp_pop_DS, - -/* 0x20 */ x86emuOp_and_byte_RM_R, -/* 0x21 */ x86emuOp_and_word_RM_R, -/* 0x22 */ x86emuOp_and_byte_R_RM, -/* 0x23 */ x86emuOp_and_word_R_RM, -/* 0x24 */ x86emuOp_and_byte_AL_IMM, -/* 0x25 */ x86emuOp_and_word_AX_IMM, -/* 0x26 */ x86emuOp_segovr_ES, -/* 0x27 */ x86emuOp_daa, - -/* 0x28 */ x86emuOp_sub_byte_RM_R, -/* 0x29 */ x86emuOp_sub_word_RM_R, -/* 0x2a */ x86emuOp_sub_byte_R_RM, -/* 0x2b */ x86emuOp_sub_word_R_RM, -/* 0x2c */ x86emuOp_sub_byte_AL_IMM, -/* 0x2d */ x86emuOp_sub_word_AX_IMM, -/* 0x2e */ x86emuOp_segovr_CS, -/* 0x2f */ x86emuOp_das, - -/* 0x30 */ x86emuOp_xor_byte_RM_R, -/* 0x31 */ x86emuOp_xor_word_RM_R, -/* 0x32 */ x86emuOp_xor_byte_R_RM, -/* 0x33 */ x86emuOp_xor_word_R_RM, -/* 0x34 */ x86emuOp_xor_byte_AL_IMM, -/* 0x35 */ x86emuOp_xor_word_AX_IMM, -/* 0x36 */ x86emuOp_segovr_SS, -/* 0x37 */ x86emuOp_aaa, - -/* 0x38 */ x86emuOp_cmp_byte_RM_R, -/* 0x39 */ x86emuOp_cmp_word_RM_R, -/* 0x3a */ x86emuOp_cmp_byte_R_RM, -/* 0x3b */ x86emuOp_cmp_word_R_RM, -/* 0x3c */ x86emuOp_cmp_byte_AL_IMM, -/* 0x3d */ x86emuOp_cmp_word_AX_IMM, -/* 0x3e */ x86emuOp_segovr_DS, -/* 0x3f */ x86emuOp_aas, - -/* 0x40 */ x86emuOp_inc_AX, -/* 0x41 */ x86emuOp_inc_CX, -/* 0x42 */ x86emuOp_inc_DX, -/* 0x43 */ x86emuOp_inc_BX, -/* 0x44 */ x86emuOp_inc_SP, -/* 0x45 */ x86emuOp_inc_BP, -/* 0x46 */ x86emuOp_inc_SI, -/* 0x47 */ x86emuOp_inc_DI, - -/* 0x48 */ x86emuOp_dec_AX, -/* 0x49 */ x86emuOp_dec_CX, -/* 0x4a */ x86emuOp_dec_DX, -/* 0x4b */ x86emuOp_dec_BX, -/* 0x4c */ x86emuOp_dec_SP, -/* 0x4d */ x86emuOp_dec_BP, -/* 0x4e */ x86emuOp_dec_SI, -/* 0x4f */ x86emuOp_dec_DI, - -/* 0x50 */ x86emuOp_push_AX, -/* 0x51 */ x86emuOp_push_CX, -/* 0x52 */ x86emuOp_push_DX, -/* 0x53 */ x86emuOp_push_BX, -/* 0x54 */ x86emuOp_push_SP, -/* 0x55 */ x86emuOp_push_BP, -/* 0x56 */ x86emuOp_push_SI, -/* 0x57 */ x86emuOp_push_DI, - -/* 0x58 */ x86emuOp_pop_AX, -/* 0x59 */ x86emuOp_pop_CX, -/* 0x5a */ x86emuOp_pop_DX, -/* 0x5b */ x86emuOp_pop_BX, -/* 0x5c */ x86emuOp_pop_SP, -/* 0x5d */ x86emuOp_pop_BP, -/* 0x5e */ x86emuOp_pop_SI, -/* 0x5f */ x86emuOp_pop_DI, - -/* 0x60 */ x86emuOp_push_all, -/* 0x61 */ x86emuOp_pop_all, -/* 0x62 */ x86emuOp_illegal_op, /* bound */ -/* 0x63 */ x86emuOp_illegal_op, /* arpl */ -/* 0x64 */ x86emuOp_segovr_FS, -/* 0x65 */ x86emuOp_segovr_GS, -/* 0x66 */ x86emuOp_prefix_data, -/* 0x67 */ x86emuOp_prefix_addr, - -/* 0x68 */ x86emuOp_push_word_IMM, -/* 0x69 */ x86emuOp_imul_word_IMM, -/* 0x6a */ x86emuOp_push_byte_IMM, -/* 0x6b */ x86emuOp_imul_byte_IMM, -/* 0x6c */ x86emuOp_ins_byte, -/* 0x6d */ x86emuOp_ins_word, -/* 0x6e */ x86emuOp_outs_byte, -/* 0x6f */ x86emuOp_outs_word, - -/* 0x70 */ x86emuOp_jump_near_O, -/* 0x71 */ x86emuOp_jump_near_NO, -/* 0x72 */ x86emuOp_jump_near_B, -/* 0x73 */ x86emuOp_jump_near_NB, -/* 0x74 */ x86emuOp_jump_near_Z, -/* 0x75 */ x86emuOp_jump_near_NZ, -/* 0x76 */ x86emuOp_jump_near_BE, -/* 0x77 */ x86emuOp_jump_near_NBE, - -/* 0x78 */ x86emuOp_jump_near_S, -/* 0x79 */ x86emuOp_jump_near_NS, -/* 0x7a */ x86emuOp_jump_near_P, -/* 0x7b */ x86emuOp_jump_near_NP, -/* 0x7c */ x86emuOp_jump_near_L, -/* 0x7d */ x86emuOp_jump_near_NL, -/* 0x7e */ x86emuOp_jump_near_LE, -/* 0x7f */ x86emuOp_jump_near_NLE, - -/* 0x80 */ x86emuOp_opc80_byte_RM_IMM, -/* 0x81 */ x86emuOp_opc81_word_RM_IMM, -/* 0x82 */ x86emuOp_opc82_byte_RM_IMM, -/* 0x83 */ x86emuOp_opc83_word_RM_IMM, -/* 0x84 */ x86emuOp_test_byte_RM_R, -/* 0x85 */ x86emuOp_test_word_RM_R, -/* 0x86 */ x86emuOp_xchg_byte_RM_R, -/* 0x87 */ x86emuOp_xchg_word_RM_R, - -/* 0x88 */ x86emuOp_mov_byte_RM_R, -/* 0x89 */ x86emuOp_mov_word_RM_R, -/* 0x8a */ x86emuOp_mov_byte_R_RM, -/* 0x8b */ x86emuOp_mov_word_R_RM, -/* 0x8c */ x86emuOp_mov_word_RM_SR, -/* 0x8d */ x86emuOp_lea_word_R_M, -/* 0x8e */ x86emuOp_mov_word_SR_RM, -/* 0x8f */ x86emuOp_pop_RM, - -/* 0x90 */ x86emuOp_nop, -/* 0x91 */ x86emuOp_xchg_word_AX_CX, -/* 0x92 */ x86emuOp_xchg_word_AX_DX, -/* 0x93 */ x86emuOp_xchg_word_AX_BX, -/* 0x94 */ x86emuOp_xchg_word_AX_SP, -/* 0x95 */ x86emuOp_xchg_word_AX_BP, -/* 0x96 */ x86emuOp_xchg_word_AX_SI, -/* 0x97 */ x86emuOp_xchg_word_AX_DI, - -/* 0x98 */ x86emuOp_cbw, -/* 0x99 */ x86emuOp_cwd, -/* 0x9a */ x86emuOp_call_far_IMM, -/* 0x9b */ x86emuOp_wait, -/* 0x9c */ x86emuOp_pushf_word, -/* 0x9d */ x86emuOp_popf_word, -/* 0x9e */ x86emuOp_sahf, -/* 0x9f */ x86emuOp_lahf, - -/* 0xa0 */ x86emuOp_mov_AL_M_IMM, -/* 0xa1 */ x86emuOp_mov_AX_M_IMM, -/* 0xa2 */ x86emuOp_mov_M_AL_IMM, -/* 0xa3 */ x86emuOp_mov_M_AX_IMM, -/* 0xa4 */ x86emuOp_movs_byte, -/* 0xa5 */ x86emuOp_movs_word, -/* 0xa6 */ x86emuOp_cmps_byte, -/* 0xa7 */ x86emuOp_cmps_word, -/* 0xa8 */ x86emuOp_test_AL_IMM, -/* 0xa9 */ x86emuOp_test_AX_IMM, -/* 0xaa */ x86emuOp_stos_byte, -/* 0xab */ x86emuOp_stos_word, -/* 0xac */ x86emuOp_lods_byte, -/* 0xad */ x86emuOp_lods_word, -/* 0xac */ x86emuOp_scas_byte, -/* 0xad */ x86emuOp_scas_word, - - -/* 0xb0 */ x86emuOp_mov_byte_AL_IMM, -/* 0xb1 */ x86emuOp_mov_byte_CL_IMM, -/* 0xb2 */ x86emuOp_mov_byte_DL_IMM, -/* 0xb3 */ x86emuOp_mov_byte_BL_IMM, -/* 0xb4 */ x86emuOp_mov_byte_AH_IMM, -/* 0xb5 */ x86emuOp_mov_byte_CH_IMM, -/* 0xb6 */ x86emuOp_mov_byte_DH_IMM, -/* 0xb7 */ x86emuOp_mov_byte_BH_IMM, - -/* 0xb8 */ x86emuOp_mov_word_AX_IMM, -/* 0xb9 */ x86emuOp_mov_word_CX_IMM, -/* 0xba */ x86emuOp_mov_word_DX_IMM, -/* 0xbb */ x86emuOp_mov_word_BX_IMM, -/* 0xbc */ x86emuOp_mov_word_SP_IMM, -/* 0xbd */ x86emuOp_mov_word_BP_IMM, -/* 0xbe */ x86emuOp_mov_word_SI_IMM, -/* 0xbf */ x86emuOp_mov_word_DI_IMM, - -/* 0xc0 */ x86emuOp_opcC0_byte_RM_MEM, -/* 0xc1 */ x86emuOp_opcC1_word_RM_MEM, -/* 0xc2 */ x86emuOp_ret_near_IMM, -/* 0xc3 */ x86emuOp_ret_near, -/* 0xc4 */ x86emuOp_les_R_IMM, -/* 0xc5 */ x86emuOp_lds_R_IMM, -/* 0xc6 */ x86emuOp_mov_byte_RM_IMM, -/* 0xc7 */ x86emuOp_mov_word_RM_IMM, -/* 0xc8 */ x86emuOp_enter, -/* 0xc9 */ x86emuOp_leave, -/* 0xca */ x86emuOp_ret_far_IMM, -/* 0xcb */ x86emuOp_ret_far, -/* 0xcc */ x86emuOp_int3, -/* 0xcd */ x86emuOp_int_IMM, -/* 0xce */ x86emuOp_into, -/* 0xcf */ x86emuOp_iret, - -/* 0xd0 */ x86emuOp_opcD0_byte_RM_1, -/* 0xd1 */ x86emuOp_opcD1_word_RM_1, -/* 0xd2 */ x86emuOp_opcD2_byte_RM_CL, -/* 0xd3 */ x86emuOp_opcD3_word_RM_CL, -/* 0xd4 */ x86emuOp_aam, -/* 0xd5 */ x86emuOp_aad, -/* 0xd6 */ x86emuOp_illegal_op, /* Undocumented SETALC instruction */ -/* 0xd7 */ x86emuOp_xlat, -/* 0xd8 */ x86emuOp_esc_coprocess_d8, -/* 0xd9 */ x86emuOp_esc_coprocess_d9, -/* 0xda */ x86emuOp_esc_coprocess_da, -/* 0xdb */ x86emuOp_esc_coprocess_db, -/* 0xdc */ x86emuOp_esc_coprocess_dc, -/* 0xdd */ x86emuOp_esc_coprocess_dd, -/* 0xde */ x86emuOp_esc_coprocess_de, -/* 0xdf */ x86emuOp_esc_coprocess_df, - -/* 0xe0 */ x86emuOp_loopne, -/* 0xe1 */ x86emuOp_loope, -/* 0xe2 */ x86emuOp_loop, -/* 0xe3 */ x86emuOp_jcxz, -/* 0xe4 */ x86emuOp_in_byte_AL_IMM, -/* 0xe5 */ x86emuOp_in_word_AX_IMM, -/* 0xe6 */ x86emuOp_out_byte_IMM_AL, -/* 0xe7 */ x86emuOp_out_word_IMM_AX, - -/* 0xe8 */ x86emuOp_call_near_IMM, -/* 0xe9 */ x86emuOp_jump_near_IMM, -/* 0xea */ x86emuOp_jump_far_IMM, -/* 0xeb */ x86emuOp_jump_byte_IMM, -/* 0xec */ x86emuOp_in_byte_AL_DX, -/* 0xed */ x86emuOp_in_word_AX_DX, -/* 0xee */ x86emuOp_out_byte_DX_AL, -/* 0xef */ x86emuOp_out_word_DX_AX, - -/* 0xf0 */ x86emuOp_lock, -/* 0xf1 */ x86emuOp_illegal_op, -/* 0xf2 */ x86emuOp_repne, -/* 0xf3 */ x86emuOp_repe, -/* 0xf4 */ x86emuOp_halt, -/* 0xf5 */ x86emuOp_cmc, -/* 0xf6 */ x86emuOp_opcF6_byte_RM, -/* 0xf7 */ x86emuOp_opcF7_word_RM, - -/* 0xf8 */ x86emuOp_clc, -/* 0xf9 */ x86emuOp_stc, -/* 0xfa */ x86emuOp_cli, -/* 0xfb */ x86emuOp_sti, -/* 0xfc */ x86emuOp_cld, -/* 0xfd */ x86emuOp_std, -/* 0xfe */ x86emuOp_opcFE_byte_RM, -/* 0xff */ x86emuOp_opcFF_word_RM, -}; diff --git a/src/hwinfo/src/x86emu/ops2.c b/src/hwinfo/src/x86emu/ops2.c deleted file mode 100644 index 7cb585bc89..0000000000 --- a/src/hwinfo/src/x86emu/ops2.c +++ /dev/null @@ -1,2805 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: This file includes subroutines to implement the decoding -* and emulation of all the x86 extended two-byte processor -* instructions. -* -****************************************************************************/ -/* $XFree86: xc/extras/x86emu/src/x86emu/ops2.c,v 1.6tsi Exp $ */ - -#include "x86emu/x86emui.h" - -/*----------------------------- Implementation ----------------------------*/ - -/**************************************************************************** -PARAMETERS: -op1 - Instruction op code - -REMARKS: -Handles illegal opcodes. -****************************************************************************/ -static void x86emuOp2_illegal_op( - u8 op2) -{ - START_OF_INSTR(); - DECODE_PRINTF("ILLEGAL EXTENDED X86 OPCODE\n"); - TRACE_REGS(); - printk("%04x:%04x: %02X ILLEGAL EXTENDED X86 OPCODE!\n", - M.x86.R_CS, M.x86.R_IP-2,op2); - HALT_SYS(); - END_OF_INSTR(); -} - -#define xorl(a,b) ((a) && !(b)) || (!(a) && (b)) - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0x80-0x8F -****************************************************************************/ -static void x86emuOp2_long_jump(u8 op2) -{ - s32 target; - char *name = 0; - int cond = 0; - - /* conditional jump to word offset. */ - START_OF_INSTR(); - switch (op2) { - case 0x80: - name = "JO\t"; - cond = ACCESS_FLAG(F_OF); - break; - case 0x81: - name = "JNO\t"; - cond = !ACCESS_FLAG(F_OF); - break; - case 0x82: - name = "JB\t"; - cond = ACCESS_FLAG(F_CF); - break; - case 0x83: - name = "JNB\t"; - cond = !ACCESS_FLAG(F_CF); - break; - case 0x84: - name = "JZ\t"; - cond = ACCESS_FLAG(F_ZF); - break; - case 0x85: - name = "JNZ\t"; - cond = !ACCESS_FLAG(F_ZF); - break; - case 0x86: - name = "JBE\t"; - cond = ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF); - break; - case 0x87: - name = "JNBE\t"; - cond = !(ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF)); - break; - case 0x88: - name = "JS\t"; - cond = ACCESS_FLAG(F_SF); - break; - case 0x89: - name = "JNS\t"; - cond = !ACCESS_FLAG(F_SF); - break; - case 0x8a: - name = "JP\t"; - cond = ACCESS_FLAG(F_PF); - break; - case 0x8b: - name = "JNP\t"; - cond = !ACCESS_FLAG(F_PF); - break; - case 0x8c: - name = "JL\t"; - cond = xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)); - break; - case 0x8d: - name = "JNL\t"; - cond = xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)); - break; - case 0x8e: - name = "JLE\t"; - cond = (xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)) || - ACCESS_FLAG(F_ZF)); - break; - case 0x8f: - name = "JNLE\t"; - cond = !(xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)) || - ACCESS_FLAG(F_ZF)); - break; - } - DECODE_PRINTF(name); - (void)name; - target = (s16) fetch_word_imm(); - target += (s16) M.x86.R_IP; - DECODE_PRINTF2("%04x\n", target); - TRACE_AND_STEP(); - if (cond) - M.x86.R_IP = (u16)target; - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0x90-0x9F -****************************************************************************/ -static void x86emuOp2_set_byte(u8 op2) -{ - int mod, rl, rh; - uint destoffset; - u8 *destreg; - char *name = 0; - int cond = 0; - - START_OF_INSTR(); - switch (op2) { - case 0x90: - name = "SETO\t"; - cond = ACCESS_FLAG(F_OF); - break; - case 0x91: - name = "SETNO\t"; - cond = !ACCESS_FLAG(F_OF); - break; - case 0x92: - name = "SETB\t"; - cond = ACCESS_FLAG(F_CF); - break; - case 0x93: - name = "SETNB\t"; - cond = !ACCESS_FLAG(F_CF); - break; - case 0x94: - name = "SETZ\t"; - cond = ACCESS_FLAG(F_ZF); - break; - case 0x95: - name = "SETNZ\t"; - cond = !ACCESS_FLAG(F_ZF); - break; - case 0x96: - name = "SETBE\t"; - cond = ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF); - break; - case 0x97: - name = "SETNBE\t"; - cond = !(ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF)); - break; - case 0x98: - name = "SETS\t"; - cond = ACCESS_FLAG(F_SF); - break; - case 0x99: - name = "SETNS\t"; - cond = !ACCESS_FLAG(F_SF); - break; - case 0x9a: - name = "SETP\t"; - cond = ACCESS_FLAG(F_PF); - break; - case 0x9b: - name = "SETNP\t"; - cond = !ACCESS_FLAG(F_PF); - break; - case 0x9c: - name = "SETL\t"; - cond = xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)); - break; - case 0x9d: - name = "SETNL\t"; - cond = xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)); - break; - case 0x9e: - name = "SETLE\t"; - cond = (xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)) || - ACCESS_FLAG(F_ZF)); - break; - case 0x9f: - name = "SETNLE\t"; - cond = !(xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)) || - ACCESS_FLAG(F_ZF)); - break; - } - DECODE_PRINTF(name); - (void)name; - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destoffset = decode_rm00_address(rl); - TRACE_AND_STEP(); - store_data_byte(destoffset, cond ? 0x01 : 0x00); - break; - case 1: - destoffset = decode_rm01_address(rl); - TRACE_AND_STEP(); - store_data_byte(destoffset, cond ? 0x01 : 0x00); - break; - case 2: - destoffset = decode_rm10_address(rl); - TRACE_AND_STEP(); - store_data_byte(destoffset, cond ? 0x01 : 0x00); - break; - case 3: /* register to register */ - destreg = DECODE_RM_BYTE_REGISTER(rl); - TRACE_AND_STEP(); - *destreg = cond ? 0x01 : 0x00; - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xa0 -****************************************************************************/ -static void x86emuOp2_push_FS(u8 X86EMU_UNUSED(op2)) -{ - START_OF_INSTR(); - DECODE_PRINTF("PUSH\tFS\n"); - TRACE_AND_STEP(); - push_word(M.x86.R_FS); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xa1 -****************************************************************************/ -static void x86emuOp2_pop_FS(u8 X86EMU_UNUSED(op2)) -{ - START_OF_INSTR(); - DECODE_PRINTF("POP\tFS\n"); - TRACE_AND_STEP(); - M.x86.R_FS = pop_word(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xa3 -****************************************************************************/ -static void x86emuOp2_bt_R(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint srcoffset; - int bit,disp; - - START_OF_INSTR(); - DECODE_PRINTF("BT\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval; - u32 *shiftreg; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - disp = (s16)*shiftreg >> 5; - srcval = fetch_data_long(srcoffset+disp); - CONDITIONAL_SET_FLAG(srcval & (0x1 << bit),F_CF); - } else { - u16 srcval; - u16 *shiftreg; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - disp = (s16)*shiftreg >> 4; - srcval = fetch_data_word(srcoffset+disp); - CONDITIONAL_SET_FLAG(srcval & (0x1 << bit),F_CF); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval; - u32 *shiftreg; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - disp = (s16)*shiftreg >> 5; - srcval = fetch_data_long(srcoffset+disp); - CONDITIONAL_SET_FLAG(srcval & (0x1 << bit),F_CF); - } else { - u16 srcval; - u16 *shiftreg; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - disp = (s16)*shiftreg >> 4; - srcval = fetch_data_word(srcoffset+disp); - CONDITIONAL_SET_FLAG(srcval & (0x1 << bit),F_CF); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval; - u32 *shiftreg; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - disp = (s16)*shiftreg >> 5; - srcval = fetch_data_long(srcoffset+disp); - CONDITIONAL_SET_FLAG(srcval & (0x1 << bit),F_CF); - } else { - u16 srcval; - u16 *shiftreg; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - disp = (s16)*shiftreg >> 4; - srcval = fetch_data_word(srcoffset+disp); - CONDITIONAL_SET_FLAG(srcval & (0x1 << bit),F_CF); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg,*shiftreg; - - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - CONDITIONAL_SET_FLAG(*srcreg & (0x1 << bit),F_CF); - } else { - u16 *srcreg,*shiftreg; - - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - CONDITIONAL_SET_FLAG(*srcreg & (0x1 << bit),F_CF); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xa4 -****************************************************************************/ -static void x86emuOp2_shld_IMM(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint destoffset; - u8 shift; - - START_OF_INSTR(); - DECODE_PRINTF("SHLD\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *shiftreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - destval = fetch_data_long(destoffset); - destval = shld_long(destval,*shiftreg,shift); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *shiftreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - destval = fetch_data_word(destoffset); - destval = shld_word(destval,*shiftreg,shift); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *shiftreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - destval = fetch_data_long(destoffset); - destval = shld_long(destval,*shiftreg,shift); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *shiftreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - destval = fetch_data_word(destoffset); - destval = shld_word(destval,*shiftreg,shift); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *shiftreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - destval = fetch_data_long(destoffset); - destval = shld_long(destval,*shiftreg,shift); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *shiftreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - destval = fetch_data_word(destoffset); - destval = shld_word(destval,*shiftreg,shift); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*shiftreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - *destreg = shld_long(*destreg,*shiftreg,shift); - } else { - u16 *destreg,*shiftreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - *destreg = shld_word(*destreg,*shiftreg,shift); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xa5 -****************************************************************************/ -static void x86emuOp2_shld_CL(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("SHLD\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *shiftreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = fetch_data_long(destoffset); - destval = shld_long(destval,*shiftreg,M.x86.R_CL); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *shiftreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = fetch_data_word(destoffset); - destval = shld_word(destval,*shiftreg,M.x86.R_CL); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *shiftreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = fetch_data_long(destoffset); - destval = shld_long(destval,*shiftreg,M.x86.R_CL); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *shiftreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = fetch_data_word(destoffset); - destval = shld_word(destval,*shiftreg,M.x86.R_CL); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *shiftreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = fetch_data_long(destoffset); - destval = shld_long(destval,*shiftreg,M.x86.R_CL); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *shiftreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = fetch_data_word(destoffset); - destval = shld_word(destval,*shiftreg,M.x86.R_CL); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*shiftreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - *destreg = shld_long(*destreg,*shiftreg,M.x86.R_CL); - } else { - u16 *destreg,*shiftreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - *destreg = shld_word(*destreg,*shiftreg,M.x86.R_CL); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xa8 -****************************************************************************/ -static void x86emuOp2_push_GS(u8 X86EMU_UNUSED(op2)) -{ - START_OF_INSTR(); - DECODE_PRINTF("PUSH\tGS\n"); - TRACE_AND_STEP(); - push_word(M.x86.R_GS); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xa9 -****************************************************************************/ -static void x86emuOp2_pop_GS(u8 X86EMU_UNUSED(op2)) -{ - START_OF_INSTR(); - DECODE_PRINTF("POP\tGS\n"); - TRACE_AND_STEP(); - M.x86.R_GS = pop_word(); - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -#if 0 -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xaa -****************************************************************************/ -static void x86emuOp2_bts_R(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint srcoffset; - int bit,disp; - - START_OF_INSTR(); - DECODE_PRINTF("BTS\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval,mask; - u32 *shiftreg; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - disp = (s16)*shiftreg >> 5; - srcval = fetch_data_long(srcoffset+disp); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_long(srcoffset+disp, srcval | mask); - } else { - u16 srcval,mask; - u16 *shiftreg; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - disp = (s16)*shiftreg >> 4; - srcval = fetch_data_word(srcoffset+disp); - mask = (u16)(0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_word(srcoffset+disp, srcval | mask); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval,mask; - u32 *shiftreg; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - disp = (s16)*shiftreg >> 5; - srcval = fetch_data_long(srcoffset+disp); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_long(srcoffset+disp, srcval | mask); - } else { - u16 srcval,mask; - u16 *shiftreg; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - disp = (s16)*shiftreg >> 4; - srcval = fetch_data_word(srcoffset+disp); - mask = (u16)(0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_word(srcoffset+disp, srcval | mask); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval,mask; - u32 *shiftreg; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - disp = (s16)*shiftreg >> 5; - srcval = fetch_data_long(srcoffset+disp); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_long(srcoffset+disp, srcval | mask); - } else { - u16 srcval,mask; - u16 *shiftreg; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - disp = (s16)*shiftreg >> 4; - srcval = fetch_data_word(srcoffset+disp); - mask = (u16)(0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_word(srcoffset+disp, srcval | mask); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg,*shiftreg; - u32 mask; - - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(*srcreg & mask,F_CF); - *srcreg |= mask; - } else { - u16 *srcreg,*shiftreg; - u16 mask; - - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - mask = (u16)(0x1 << bit); - CONDITIONAL_SET_FLAG(*srcreg & mask,F_CF); - *srcreg |= mask; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} -#endif - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xac -****************************************************************************/ -static void x86emuOp2_shrd_IMM(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint destoffset; - u8 shift; - - START_OF_INSTR(); - DECODE_PRINTF("SHLD\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *shiftreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - destval = fetch_data_long(destoffset); - destval = shrd_long(destval,*shiftreg,shift); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *shiftreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - destval = fetch_data_word(destoffset); - destval = shrd_word(destval,*shiftreg,shift); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *shiftreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - destval = fetch_data_long(destoffset); - destval = shrd_long(destval,*shiftreg,shift); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *shiftreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - destval = fetch_data_word(destoffset); - destval = shrd_word(destval,*shiftreg,shift); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *shiftreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - destval = fetch_data_long(destoffset); - destval = shrd_long(destval,*shiftreg,shift); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *shiftreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - destval = fetch_data_word(destoffset); - destval = shrd_word(destval,*shiftreg,shift); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*shiftreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - *destreg = shrd_long(*destreg,*shiftreg,shift); - } else { - u16 *destreg,*shiftreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - DECODE_PRINTF2("%d\n", shift); - TRACE_AND_STEP(); - *destreg = shrd_word(*destreg,*shiftreg,shift); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xad -****************************************************************************/ -static void x86emuOp2_shrd_CL(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint destoffset; - - START_OF_INSTR(); - DECODE_PRINTF("SHLD\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *shiftreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = fetch_data_long(destoffset); - destval = shrd_long(destval,*shiftreg,M.x86.R_CL); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *shiftreg; - - destoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = fetch_data_word(destoffset); - destval = shrd_word(destval,*shiftreg,M.x86.R_CL); - store_data_word(destoffset, destval); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *shiftreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = fetch_data_long(destoffset); - destval = shrd_long(destval,*shiftreg,M.x86.R_CL); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *shiftreg; - - destoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = fetch_data_word(destoffset); - destval = shrd_word(destval,*shiftreg,M.x86.R_CL); - store_data_word(destoffset, destval); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 destval; - u32 *shiftreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = fetch_data_long(destoffset); - destval = shrd_long(destval,*shiftreg,M.x86.R_CL); - store_data_long(destoffset, destval); - } else { - u16 destval; - u16 *shiftreg; - - destoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - destval = fetch_data_word(destoffset); - destval = shrd_word(destval,*shiftreg,M.x86.R_CL); - store_data_word(destoffset, destval); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*shiftreg; - - destreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - *destreg = shrd_long(*destreg,*shiftreg,M.x86.R_CL); - } else { - u16 *destreg,*shiftreg; - - destreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(",CL\n"); - TRACE_AND_STEP(); - *destreg = shrd_word(*destreg,*shiftreg,M.x86.R_CL); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xaf -****************************************************************************/ -static void x86emuOp2_imul_R_RM(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("IMUL\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - u32 res_lo,res_hi; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_long(srcoffset); - TRACE_AND_STEP(); - imul_long_direct(&res_lo,&res_hi,(s32)*destreg,(s32)srcval); - if (res_hi != 0) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u32)res_lo; - } else { - u16 *destreg; - u16 srcval; - u32 res; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - TRACE_AND_STEP(); - res = (s16)*destreg * (s16)srcval; - if (res > 0xFFFF) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u16)res; - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - u32 res_lo,res_hi; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_long(srcoffset); - TRACE_AND_STEP(); - imul_long_direct(&res_lo,&res_hi,(s32)*destreg,(s32)srcval); - if (res_hi != 0) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u32)res_lo; - } else { - u16 *destreg; - u16 srcval; - u32 res; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - TRACE_AND_STEP(); - res = (s16)*destreg * (s16)srcval; - if (res > 0xFFFF) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u16)res; - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - u32 res_lo,res_hi; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_long(srcoffset); - TRACE_AND_STEP(); - imul_long_direct(&res_lo,&res_hi,(s32)*destreg,(s32)srcval); - if (res_hi != 0) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u32)res_lo; - } else { - u16 *destreg; - u16 srcval; - u32 res; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - TRACE_AND_STEP(); - res = (s16)*destreg * (s16)srcval; - if (res > 0xFFFF) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u16)res; - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg,*srcreg; - u32 res_lo,res_hi; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_LONG_REGISTER(rl); - TRACE_AND_STEP(); - imul_long_direct(&res_lo,&res_hi,(s32)*destreg,(s32)*srcreg); - if (res_hi != 0) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u32)res_lo; - } else { - u16 *destreg,*srcreg; - u32 res; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - res = (s16)*destreg * (s16)*srcreg; - if (res > 0xFFFF) { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } - *destreg = (u16)res; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xb2 -****************************************************************************/ -static void x86emuOp2_lss_R_IMM(u8 X86EMU_UNUSED(op2)) -{ - int mod, rh, rl; - u16 *dstreg; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("LSS\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_SS = fetch_data_word(srcoffset + 2); - break; - case 1: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_SS = fetch_data_word(srcoffset + 2); - break; - case 2: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_SS = fetch_data_word(srcoffset + 2); - break; - case 3: /* register to register */ - /* UNDEFINED! */ - TRACE_AND_STEP(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xb3 -****************************************************************************/ -static void x86emuOp2_btr_R(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint srcoffset; - int bit,disp; - - START_OF_INSTR(); - DECODE_PRINTF("BTR\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval,mask; - u32 *shiftreg; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - disp = (s16)*shiftreg >> 5; - srcval = fetch_data_long(srcoffset+disp); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_long(srcoffset+disp, srcval & ~mask); - } else { - u16 srcval,mask; - u16 *shiftreg; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - disp = (s16)*shiftreg >> 4; - srcval = fetch_data_word(srcoffset+disp); - mask = (u16)(0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_word(srcoffset+disp, (u16)(srcval & ~mask)); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval,mask; - u32 *shiftreg; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - disp = (s16)*shiftreg >> 5; - srcval = fetch_data_long(srcoffset+disp); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_long(srcoffset+disp, srcval & ~mask); - } else { - u16 srcval,mask; - u16 *shiftreg; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - disp = (s16)*shiftreg >> 4; - srcval = fetch_data_word(srcoffset+disp); - mask = (u16)(0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_word(srcoffset+disp, (u16)(srcval & ~mask)); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval,mask; - u32 *shiftreg; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - disp = (s16)*shiftreg >> 5; - srcval = fetch_data_long(srcoffset+disp); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_long(srcoffset+disp, srcval & ~mask); - } else { - u16 srcval,mask; - u16 *shiftreg; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - disp = (s16)*shiftreg >> 4; - srcval = fetch_data_word(srcoffset+disp); - mask = (u16)(0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_word(srcoffset+disp, (u16)(srcval & ~mask)); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg,*shiftreg; - u32 mask; - - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(*srcreg & mask,F_CF); - *srcreg &= ~mask; - } else { - u16 *srcreg,*shiftreg; - u16 mask; - - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - mask = (u16)(0x1 << bit); - CONDITIONAL_SET_FLAG(*srcreg & mask,F_CF); - *srcreg &= ~mask; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xb4 -****************************************************************************/ -static void x86emuOp2_lfs_R_IMM(u8 X86EMU_UNUSED(op2)) -{ - int mod, rh, rl; - u16 *dstreg; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("LFS\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_FS = fetch_data_word(srcoffset + 2); - break; - case 1: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_FS = fetch_data_word(srcoffset + 2); - break; - case 2: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_FS = fetch_data_word(srcoffset + 2); - break; - case 3: /* register to register */ - /* UNDEFINED! */ - TRACE_AND_STEP(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xb5 -****************************************************************************/ -static void x86emuOp2_lgs_R_IMM(u8 X86EMU_UNUSED(op2)) -{ - int mod, rh, rl; - u16 *dstreg; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("LGS\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_GS = fetch_data_word(srcoffset + 2); - break; - case 1: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_GS = fetch_data_word(srcoffset + 2); - break; - case 2: - dstreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *dstreg = fetch_data_word(srcoffset); - M.x86.R_GS = fetch_data_word(srcoffset + 2); - break; - case 3: /* register to register */ - /* UNDEFINED! */ - TRACE_AND_STEP(); - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xb6 -****************************************************************************/ -static void x86emuOp2_movzx_byte_R_RM(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("MOVZX\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_byte(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u8 *srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = *srcreg; - } else { - u16 *destreg; - u8 *srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = *srcreg; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xb7 -****************************************************************************/ -static void x86emuOp2_movzx_word_R_RM(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint srcoffset; - u32 *destreg; - u32 srcval; - u16 *srcreg; - - START_OF_INSTR(); - DECODE_PRINTF("MOVZX\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - break; - case 1: - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - break; - case 2: - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = fetch_data_word(srcoffset); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - break; - case 3: /* register to register */ - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = *srcreg; - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xba -****************************************************************************/ -static void x86emuOp2_btX_I(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint srcoffset; - int bit; - - START_OF_INSTR(); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (rh) { - case 4: - DECODE_PRINTF("BT\t"); - break; - case 5: - DECODE_PRINTF("BTS\t"); - break; - case 6: - DECODE_PRINTF("BTR\t"); - break; - case 7: - DECODE_PRINTF("BTC\t"); - break; - default: - DECODE_PRINTF("ILLEGAL EXTENDED X86 OPCODE\n"); - TRACE_REGS(); - printk("%04x:%04x: %02X%02X ILLEGAL EXTENDED X86 OPCODE EXTENSION!\n", - M.x86.R_CS, M.x86.R_IP-3,op2, (mod<<6)|(rh<<3)|rl); - HALT_SYS(); - } - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval, mask; - u8 shift; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - TRACE_AND_STEP(); - bit = shift & 0x1F; - srcval = fetch_data_long(srcoffset); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - switch (rh) { - case 5: - store_data_long(srcoffset, srcval | mask); - break; - case 6: - store_data_long(srcoffset, srcval & ~mask); - break; - case 7: - store_data_long(srcoffset, srcval ^ mask); - break; - default: - break; - } - } else { - u16 srcval, mask; - u8 shift; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - TRACE_AND_STEP(); - bit = shift & 0xF; - srcval = fetch_data_word(srcoffset); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - switch (rh) { - case 5: - store_data_word(srcoffset, srcval | mask); - break; - case 6: - store_data_word(srcoffset, srcval & ~mask); - break; - case 7: - store_data_word(srcoffset, srcval ^ mask); - break; - default: - break; - } - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval, mask; - u8 shift; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - TRACE_AND_STEP(); - bit = shift & 0x1F; - srcval = fetch_data_long(srcoffset); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - switch (rh) { - case 5: - store_data_long(srcoffset, srcval | mask); - break; - case 6: - store_data_long(srcoffset, srcval & ~mask); - break; - case 7: - store_data_long(srcoffset, srcval ^ mask); - break; - default: - break; - } - } else { - u16 srcval, mask; - u8 shift; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - TRACE_AND_STEP(); - bit = shift & 0xF; - srcval = fetch_data_word(srcoffset); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - switch (rh) { - case 5: - store_data_word(srcoffset, srcval | mask); - break; - case 6: - store_data_word(srcoffset, srcval & ~mask); - break; - case 7: - store_data_word(srcoffset, srcval ^ mask); - break; - default: - break; - } - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval, mask; - u8 shift; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - TRACE_AND_STEP(); - bit = shift & 0x1F; - srcval = fetch_data_long(srcoffset); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - switch (rh) { - case 5: - store_data_long(srcoffset, srcval | mask); - break; - case 6: - store_data_long(srcoffset, srcval & ~mask); - break; - case 7: - store_data_long(srcoffset, srcval ^ mask); - break; - default: - break; - } - } else { - u16 srcval, mask; - u8 shift; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - TRACE_AND_STEP(); - bit = shift & 0xF; - srcval = fetch_data_word(srcoffset); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - switch (rh) { - case 5: - store_data_word(srcoffset, srcval | mask); - break; - case 6: - store_data_word(srcoffset, srcval & ~mask); - break; - case 7: - store_data_word(srcoffset, srcval ^ mask); - break; - default: - break; - } - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg; - u32 mask; - u8 shift; - - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - TRACE_AND_STEP(); - bit = shift & 0x1F; - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(*srcreg & mask,F_CF); - switch (rh) { - case 5: - *srcreg |= mask; - break; - case 6: - *srcreg &= ~mask; - break; - case 7: - *srcreg ^= mask; - break; - default: - break; - } - } else { - u16 *srcreg; - u16 mask; - u8 shift; - - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - shift = fetch_byte_imm(); - TRACE_AND_STEP(); - bit = shift & 0xF; - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(*srcreg & mask,F_CF); - switch (rh) { - case 5: - *srcreg |= mask; - break; - case 6: - *srcreg &= ~mask; - break; - case 7: - *srcreg ^= mask; - break; - default: - break; - } - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xbb -****************************************************************************/ -static void x86emuOp2_btc_R(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint srcoffset; - int bit,disp; - - START_OF_INSTR(); - DECODE_PRINTF("BTC\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval,mask; - u32 *shiftreg; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - disp = (s16)*shiftreg >> 5; - srcval = fetch_data_long(srcoffset+disp); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_long(srcoffset+disp, srcval ^ mask); - } else { - u16 srcval,mask; - u16 *shiftreg; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - disp = (s16)*shiftreg >> 4; - srcval = fetch_data_word(srcoffset+disp); - mask = (u16)(0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_word(srcoffset+disp, (u16)(srcval ^ mask)); - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval,mask; - u32 *shiftreg; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - disp = (s16)*shiftreg >> 5; - srcval = fetch_data_long(srcoffset+disp); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_long(srcoffset+disp, srcval ^ mask); - } else { - u16 srcval,mask; - u16 *shiftreg; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - disp = (s16)*shiftreg >> 4; - srcval = fetch_data_word(srcoffset+disp); - mask = (u16)(0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_word(srcoffset+disp, (u16)(srcval ^ mask)); - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval,mask; - u32 *shiftreg; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - disp = (s16)*shiftreg >> 5; - srcval = fetch_data_long(srcoffset+disp); - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_long(srcoffset+disp, srcval ^ mask); - } else { - u16 srcval,mask; - u16 *shiftreg; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - disp = (s16)*shiftreg >> 4; - srcval = fetch_data_word(srcoffset+disp); - mask = (u16)(0x1 << bit); - CONDITIONAL_SET_FLAG(srcval & mask,F_CF); - store_data_word(srcoffset+disp, (u16)(srcval ^ mask)); - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg,*shiftreg; - u32 mask; - - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0x1F; - mask = (0x1 << bit); - CONDITIONAL_SET_FLAG(*srcreg & mask,F_CF); - *srcreg ^= mask; - } else { - u16 *srcreg,*shiftreg; - u16 mask; - - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - shiftreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - bit = *shiftreg & 0xF; - mask = (u16)(0x1 << bit); - CONDITIONAL_SET_FLAG(*srcreg & mask,F_CF); - *srcreg ^= mask; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xbc -****************************************************************************/ -static void x86emuOp2_bsf(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("BSF\n"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch(mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval, *dstreg; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - srcval = fetch_data_long(srcoffset); - CONDITIONAL_SET_FLAG(srcval == 0, F_ZF); - for(*dstreg = 0; *dstreg < 32; (*dstreg)++) - if ((srcval >> *dstreg) & 1) break; - } else { - u16 srcval, *dstreg; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - srcval = fetch_data_word(srcoffset); - CONDITIONAL_SET_FLAG(srcval == 0, F_ZF); - for(*dstreg = 0; *dstreg < 16; (*dstreg)++) - if ((srcval >> *dstreg) & 1) break; - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval, *dstreg; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - srcval = fetch_data_long(srcoffset); - CONDITIONAL_SET_FLAG(srcval == 0, F_ZF); - for(*dstreg = 0; *dstreg < 32; (*dstreg)++) - if ((srcval >> *dstreg) & 1) break; - } else { - u16 srcval, *dstreg; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - srcval = fetch_data_word(srcoffset); - CONDITIONAL_SET_FLAG(srcval == 0, F_ZF); - for(*dstreg = 0; *dstreg < 16; (*dstreg)++) - if ((srcval >> *dstreg) & 1) break; - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval, *dstreg; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - srcval = fetch_data_long(srcoffset); - CONDITIONAL_SET_FLAG(srcval == 0, F_ZF); - for(*dstreg = 0; *dstreg < 32; (*dstreg)++) - if ((srcval >> *dstreg) & 1) break; - } else { - u16 srcval, *dstreg; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - srcval = fetch_data_word(srcoffset); - CONDITIONAL_SET_FLAG(srcval == 0, F_ZF); - for(*dstreg = 0; *dstreg < 16; (*dstreg)++) - if ((srcval >> *dstreg) & 1) break; - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg, *dstreg; - - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF); - for(*dstreg = 0; *dstreg < 32; (*dstreg)++) - if ((*srcreg >> *dstreg) & 1) break; - } else { - u16 *srcreg, *dstreg; - - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF); - for(*dstreg = 0; *dstreg < 16; (*dstreg)++) - if ((*srcreg >> *dstreg) & 1) break; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xbd -****************************************************************************/ -static void x86emuOp2_bsr(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("BSF\n"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch(mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval, *dstreg; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - srcval = fetch_data_long(srcoffset); - CONDITIONAL_SET_FLAG(srcval == 0, F_ZF); - for(*dstreg = 31; *dstreg > 0; (*dstreg)--) - if ((srcval >> *dstreg) & 1) break; - } else { - u16 srcval, *dstreg; - - srcoffset = decode_rm00_address(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - srcval = fetch_data_word(srcoffset); - CONDITIONAL_SET_FLAG(srcval == 0, F_ZF); - for(*dstreg = 15; *dstreg > 0; (*dstreg)--) - if ((srcval >> *dstreg) & 1) break; - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval, *dstreg; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - srcval = fetch_data_long(srcoffset); - CONDITIONAL_SET_FLAG(srcval == 0, F_ZF); - for(*dstreg = 31; *dstreg > 0; (*dstreg)--) - if ((srcval >> *dstreg) & 1) break; - } else { - u16 srcval, *dstreg; - - srcoffset = decode_rm01_address(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - srcval = fetch_data_word(srcoffset); - CONDITIONAL_SET_FLAG(srcval == 0, F_ZF); - for(*dstreg = 15; *dstreg > 0; (*dstreg)--) - if ((srcval >> *dstreg) & 1) break; - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 srcval, *dstreg; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - srcval = fetch_data_long(srcoffset); - CONDITIONAL_SET_FLAG(srcval == 0, F_ZF); - for(*dstreg = 31; *dstreg > 0; (*dstreg)--) - if ((srcval >> *dstreg) & 1) break; - } else { - u16 srcval, *dstreg; - - srcoffset = decode_rm10_address(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - srcval = fetch_data_word(srcoffset); - CONDITIONAL_SET_FLAG(srcval == 0, F_ZF); - for(*dstreg = 15; *dstreg > 0; (*dstreg)--) - if ((srcval >> *dstreg) & 1) break; - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *srcreg, *dstreg; - - srcreg = DECODE_RM_LONG_REGISTER(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_LONG_REGISTER(rh); - TRACE_AND_STEP(); - CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF); - for(*dstreg = 31; *dstreg > 0; (*dstreg)--) - if ((*srcreg >> *dstreg) & 1) break; - } else { - u16 *srcreg, *dstreg; - - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF(","); - dstreg = DECODE_RM_WORD_REGISTER(rh); - TRACE_AND_STEP(); - CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF); - for(*dstreg = 15; *dstreg > 0; (*dstreg)--) - if ((*srcreg >> *dstreg) & 1) break; - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xbe -****************************************************************************/ -static void x86emuOp2_movsx_byte_R_RM(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint srcoffset; - - START_OF_INSTR(); - DECODE_PRINTF("MOVSX\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = (s32)((s8)fetch_data_byte(srcoffset)); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = (s16)((s8)fetch_data_byte(srcoffset)); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } - break; - case 1: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = (s32)((s8)fetch_data_byte(srcoffset)); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = (s16)((s8)fetch_data_byte(srcoffset)); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } - break; - case 2: - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u32 srcval; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = (s32)((s8)fetch_data_byte(srcoffset)); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } else { - u16 *destreg; - u16 srcval; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = (s16)((s8)fetch_data_byte(srcoffset)); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - } - break; - case 3: /* register to register */ - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - u32 *destreg; - u8 *srcreg; - - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = (s32)((s8)*srcreg); - } else { - u16 *destreg; - u8 *srcreg; - - destreg = DECODE_RM_WORD_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_BYTE_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = (s16)((s8)*srcreg); - } - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/**************************************************************************** -REMARKS: -Handles opcode 0x0f,0xbf -****************************************************************************/ -static void x86emuOp2_movsx_word_R_RM(u8 X86EMU_UNUSED(op2)) -{ - int mod, rl, rh; - uint srcoffset; - u32 *destreg; - u32 srcval; - u16 *srcreg; - - START_OF_INSTR(); - DECODE_PRINTF("MOVSX\t"); - FETCH_DECODE_MODRM(mod, rh, rl); - switch (mod) { - case 0: - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm00_address(rl); - srcval = (s32)((s16)fetch_data_word(srcoffset)); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - break; - case 1: - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm01_address(rl); - srcval = (s32)((s16)fetch_data_word(srcoffset)); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - break; - case 2: - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcoffset = decode_rm10_address(rl); - srcval = (s32)((s16)fetch_data_word(srcoffset)); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = srcval; - break; - case 3: /* register to register */ - destreg = DECODE_RM_LONG_REGISTER(rh); - DECODE_PRINTF(","); - srcreg = DECODE_RM_WORD_REGISTER(rl); - DECODE_PRINTF("\n"); - TRACE_AND_STEP(); - *destreg = (s32)((s16)*srcreg); - break; - } - DECODE_CLEAR_SEGOVR(); - END_OF_INSTR(); -} - -/*************************************************************************** - * Double byte operation code table: - **************************************************************************/ -void (*x86emu_optab2[256])(u8) = -{ -/* 0x00 */ x86emuOp2_illegal_op, /* Group F (ring 0 PM) */ -/* 0x01 */ x86emuOp2_illegal_op, /* Group G (ring 0 PM) */ -/* 0x02 */ x86emuOp2_illegal_op, /* lar (ring 0 PM) */ -/* 0x03 */ x86emuOp2_illegal_op, /* lsl (ring 0 PM) */ -/* 0x04 */ x86emuOp2_illegal_op, -/* 0x05 */ x86emuOp2_illegal_op, /* loadall (undocumented) */ -/* 0x06 */ x86emuOp2_illegal_op, /* clts (ring 0 PM) */ -/* 0x07 */ x86emuOp2_illegal_op, /* loadall (undocumented) */ -/* 0x08 */ x86emuOp2_illegal_op, /* invd (ring 0 PM) */ -/* 0x09 */ x86emuOp2_illegal_op, /* wbinvd (ring 0 PM) */ -/* 0x0a */ x86emuOp2_illegal_op, -/* 0x0b */ x86emuOp2_illegal_op, -/* 0x0c */ x86emuOp2_illegal_op, -/* 0x0d */ x86emuOp2_illegal_op, -/* 0x0e */ x86emuOp2_illegal_op, -/* 0x0f */ x86emuOp2_illegal_op, - -/* 0x10 */ x86emuOp2_illegal_op, -/* 0x11 */ x86emuOp2_illegal_op, -/* 0x12 */ x86emuOp2_illegal_op, -/* 0x13 */ x86emuOp2_illegal_op, -/* 0x14 */ x86emuOp2_illegal_op, -/* 0x15 */ x86emuOp2_illegal_op, -/* 0x16 */ x86emuOp2_illegal_op, -/* 0x17 */ x86emuOp2_illegal_op, -/* 0x18 */ x86emuOp2_illegal_op, -/* 0x19 */ x86emuOp2_illegal_op, -/* 0x1a */ x86emuOp2_illegal_op, -/* 0x1b */ x86emuOp2_illegal_op, -/* 0x1c */ x86emuOp2_illegal_op, -/* 0x1d */ x86emuOp2_illegal_op, -/* 0x1e */ x86emuOp2_illegal_op, -/* 0x1f */ x86emuOp2_illegal_op, - -/* 0x20 */ x86emuOp2_illegal_op, /* mov reg32,creg (ring 0 PM) */ -/* 0x21 */ x86emuOp2_illegal_op, /* mov reg32,dreg (ring 0 PM) */ -/* 0x22 */ x86emuOp2_illegal_op, /* mov creg,reg32 (ring 0 PM) */ -/* 0x23 */ x86emuOp2_illegal_op, /* mov dreg,reg32 (ring 0 PM) */ -/* 0x24 */ x86emuOp2_illegal_op, /* mov reg32,treg (ring 0 PM) */ -/* 0x25 */ x86emuOp2_illegal_op, -/* 0x26 */ x86emuOp2_illegal_op, /* mov treg,reg32 (ring 0 PM) */ -/* 0x27 */ x86emuOp2_illegal_op, -/* 0x28 */ x86emuOp2_illegal_op, -/* 0x29 */ x86emuOp2_illegal_op, -/* 0x2a */ x86emuOp2_illegal_op, -/* 0x2b */ x86emuOp2_illegal_op, -/* 0x2c */ x86emuOp2_illegal_op, -/* 0x2d */ x86emuOp2_illegal_op, -/* 0x2e */ x86emuOp2_illegal_op, -/* 0x2f */ x86emuOp2_illegal_op, - -/* 0x30 */ x86emuOp2_illegal_op, -/* 0x31 */ x86emuOp2_illegal_op, -/* 0x32 */ x86emuOp2_illegal_op, -/* 0x33 */ x86emuOp2_illegal_op, -/* 0x34 */ x86emuOp2_illegal_op, -/* 0x35 */ x86emuOp2_illegal_op, -/* 0x36 */ x86emuOp2_illegal_op, -/* 0x37 */ x86emuOp2_illegal_op, -/* 0x38 */ x86emuOp2_illegal_op, -/* 0x39 */ x86emuOp2_illegal_op, -/* 0x3a */ x86emuOp2_illegal_op, -/* 0x3b */ x86emuOp2_illegal_op, -/* 0x3c */ x86emuOp2_illegal_op, -/* 0x3d */ x86emuOp2_illegal_op, -/* 0x3e */ x86emuOp2_illegal_op, -/* 0x3f */ x86emuOp2_illegal_op, - -/* 0x40 */ x86emuOp2_illegal_op, -/* 0x41 */ x86emuOp2_illegal_op, -/* 0x42 */ x86emuOp2_illegal_op, -/* 0x43 */ x86emuOp2_illegal_op, -/* 0x44 */ x86emuOp2_illegal_op, -/* 0x45 */ x86emuOp2_illegal_op, -/* 0x46 */ x86emuOp2_illegal_op, -/* 0x47 */ x86emuOp2_illegal_op, -/* 0x48 */ x86emuOp2_illegal_op, -/* 0x49 */ x86emuOp2_illegal_op, -/* 0x4a */ x86emuOp2_illegal_op, -/* 0x4b */ x86emuOp2_illegal_op, -/* 0x4c */ x86emuOp2_illegal_op, -/* 0x4d */ x86emuOp2_illegal_op, -/* 0x4e */ x86emuOp2_illegal_op, -/* 0x4f */ x86emuOp2_illegal_op, - -/* 0x50 */ x86emuOp2_illegal_op, -/* 0x51 */ x86emuOp2_illegal_op, -/* 0x52 */ x86emuOp2_illegal_op, -/* 0x53 */ x86emuOp2_illegal_op, -/* 0x54 */ x86emuOp2_illegal_op, -/* 0x55 */ x86emuOp2_illegal_op, -/* 0x56 */ x86emuOp2_illegal_op, -/* 0x57 */ x86emuOp2_illegal_op, -/* 0x58 */ x86emuOp2_illegal_op, -/* 0x59 */ x86emuOp2_illegal_op, -/* 0x5a */ x86emuOp2_illegal_op, -/* 0x5b */ x86emuOp2_illegal_op, -/* 0x5c */ x86emuOp2_illegal_op, -/* 0x5d */ x86emuOp2_illegal_op, -/* 0x5e */ x86emuOp2_illegal_op, -/* 0x5f */ x86emuOp2_illegal_op, - -/* 0x60 */ x86emuOp2_illegal_op, -/* 0x61 */ x86emuOp2_illegal_op, -/* 0x62 */ x86emuOp2_illegal_op, -/* 0x63 */ x86emuOp2_illegal_op, -/* 0x64 */ x86emuOp2_illegal_op, -/* 0x65 */ x86emuOp2_illegal_op, -/* 0x66 */ x86emuOp2_illegal_op, -/* 0x67 */ x86emuOp2_illegal_op, -/* 0x68 */ x86emuOp2_illegal_op, -/* 0x69 */ x86emuOp2_illegal_op, -/* 0x6a */ x86emuOp2_illegal_op, -/* 0x6b */ x86emuOp2_illegal_op, -/* 0x6c */ x86emuOp2_illegal_op, -/* 0x6d */ x86emuOp2_illegal_op, -/* 0x6e */ x86emuOp2_illegal_op, -/* 0x6f */ x86emuOp2_illegal_op, - -/* 0x70 */ x86emuOp2_illegal_op, -/* 0x71 */ x86emuOp2_illegal_op, -/* 0x72 */ x86emuOp2_illegal_op, -/* 0x73 */ x86emuOp2_illegal_op, -/* 0x74 */ x86emuOp2_illegal_op, -/* 0x75 */ x86emuOp2_illegal_op, -/* 0x76 */ x86emuOp2_illegal_op, -/* 0x77 */ x86emuOp2_illegal_op, -/* 0x78 */ x86emuOp2_illegal_op, -/* 0x79 */ x86emuOp2_illegal_op, -/* 0x7a */ x86emuOp2_illegal_op, -/* 0x7b */ x86emuOp2_illegal_op, -/* 0x7c */ x86emuOp2_illegal_op, -/* 0x7d */ x86emuOp2_illegal_op, -/* 0x7e */ x86emuOp2_illegal_op, -/* 0x7f */ x86emuOp2_illegal_op, - -/* 0x80 */ x86emuOp2_long_jump, -/* 0x81 */ x86emuOp2_long_jump, -/* 0x82 */ x86emuOp2_long_jump, -/* 0x83 */ x86emuOp2_long_jump, -/* 0x84 */ x86emuOp2_long_jump, -/* 0x85 */ x86emuOp2_long_jump, -/* 0x86 */ x86emuOp2_long_jump, -/* 0x87 */ x86emuOp2_long_jump, -/* 0x88 */ x86emuOp2_long_jump, -/* 0x89 */ x86emuOp2_long_jump, -/* 0x8a */ x86emuOp2_long_jump, -/* 0x8b */ x86emuOp2_long_jump, -/* 0x8c */ x86emuOp2_long_jump, -/* 0x8d */ x86emuOp2_long_jump, -/* 0x8e */ x86emuOp2_long_jump, -/* 0x8f */ x86emuOp2_long_jump, - -/* 0x90 */ x86emuOp2_set_byte, -/* 0x91 */ x86emuOp2_set_byte, -/* 0x92 */ x86emuOp2_set_byte, -/* 0x93 */ x86emuOp2_set_byte, -/* 0x94 */ x86emuOp2_set_byte, -/* 0x95 */ x86emuOp2_set_byte, -/* 0x96 */ x86emuOp2_set_byte, -/* 0x97 */ x86emuOp2_set_byte, -/* 0x98 */ x86emuOp2_set_byte, -/* 0x99 */ x86emuOp2_set_byte, -/* 0x9a */ x86emuOp2_set_byte, -/* 0x9b */ x86emuOp2_set_byte, -/* 0x9c */ x86emuOp2_set_byte, -/* 0x9d */ x86emuOp2_set_byte, -/* 0x9e */ x86emuOp2_set_byte, -/* 0x9f */ x86emuOp2_set_byte, - -/* 0xa0 */ x86emuOp2_push_FS, -/* 0xa1 */ x86emuOp2_pop_FS, -/* 0xa2 */ x86emuOp2_illegal_op, -/* 0xa3 */ x86emuOp2_bt_R, -/* 0xa4 */ x86emuOp2_shld_IMM, -/* 0xa5 */ x86emuOp2_shld_CL, -/* 0xa6 */ x86emuOp2_illegal_op, -/* 0xa7 */ x86emuOp2_illegal_op, -/* 0xa8 */ x86emuOp2_push_GS, -/* 0xa9 */ x86emuOp2_pop_GS, -/* 0xaa */ x86emuOp2_illegal_op, -/* 0xab */ x86emuOp2_bt_R, -/* 0xac */ x86emuOp2_shrd_IMM, -/* 0xad */ x86emuOp2_shrd_CL, -/* 0xae */ x86emuOp2_illegal_op, -/* 0xaf */ x86emuOp2_imul_R_RM, - -/* 0xb0 */ x86emuOp2_illegal_op, /* TODO: cmpxchg */ -/* 0xb1 */ x86emuOp2_illegal_op, /* TODO: cmpxchg */ -/* 0xb2 */ x86emuOp2_lss_R_IMM, -/* 0xb3 */ x86emuOp2_btr_R, -/* 0xb4 */ x86emuOp2_lfs_R_IMM, -/* 0xb5 */ x86emuOp2_lgs_R_IMM, -/* 0xb6 */ x86emuOp2_movzx_byte_R_RM, -/* 0xb7 */ x86emuOp2_movzx_word_R_RM, -/* 0xb8 */ x86emuOp2_illegal_op, -/* 0xb9 */ x86emuOp2_illegal_op, -/* 0xba */ x86emuOp2_btX_I, -/* 0xbb */ x86emuOp2_btc_R, -/* 0xbc */ x86emuOp2_bsf, -/* 0xbd */ x86emuOp2_bsr, -/* 0xbe */ x86emuOp2_movsx_byte_R_RM, -/* 0xbf */ x86emuOp2_movsx_word_R_RM, - -/* 0xc0 */ x86emuOp2_illegal_op, /* TODO: xadd */ -/* 0xc1 */ x86emuOp2_illegal_op, /* TODO: xadd */ -/* 0xc2 */ x86emuOp2_illegal_op, -/* 0xc3 */ x86emuOp2_illegal_op, -/* 0xc4 */ x86emuOp2_illegal_op, -/* 0xc5 */ x86emuOp2_illegal_op, -/* 0xc6 */ x86emuOp2_illegal_op, -/* 0xc7 */ x86emuOp2_illegal_op, -/* 0xc8 */ x86emuOp2_illegal_op, /* TODO: bswap */ -/* 0xc9 */ x86emuOp2_illegal_op, /* TODO: bswap */ -/* 0xca */ x86emuOp2_illegal_op, /* TODO: bswap */ -/* 0xcb */ x86emuOp2_illegal_op, /* TODO: bswap */ -/* 0xcc */ x86emuOp2_illegal_op, /* TODO: bswap */ -/* 0xcd */ x86emuOp2_illegal_op, /* TODO: bswap */ -/* 0xce */ x86emuOp2_illegal_op, /* TODO: bswap */ -/* 0xcf */ x86emuOp2_illegal_op, /* TODO: bswap */ - -/* 0xd0 */ x86emuOp2_illegal_op, -/* 0xd1 */ x86emuOp2_illegal_op, -/* 0xd2 */ x86emuOp2_illegal_op, -/* 0xd3 */ x86emuOp2_illegal_op, -/* 0xd4 */ x86emuOp2_illegal_op, -/* 0xd5 */ x86emuOp2_illegal_op, -/* 0xd6 */ x86emuOp2_illegal_op, -/* 0xd7 */ x86emuOp2_illegal_op, -/* 0xd8 */ x86emuOp2_illegal_op, -/* 0xd9 */ x86emuOp2_illegal_op, -/* 0xda */ x86emuOp2_illegal_op, -/* 0xdb */ x86emuOp2_illegal_op, -/* 0xdc */ x86emuOp2_illegal_op, -/* 0xdd */ x86emuOp2_illegal_op, -/* 0xde */ x86emuOp2_illegal_op, -/* 0xdf */ x86emuOp2_illegal_op, - -/* 0xe0 */ x86emuOp2_illegal_op, -/* 0xe1 */ x86emuOp2_illegal_op, -/* 0xe2 */ x86emuOp2_illegal_op, -/* 0xe3 */ x86emuOp2_illegal_op, -/* 0xe4 */ x86emuOp2_illegal_op, -/* 0xe5 */ x86emuOp2_illegal_op, -/* 0xe6 */ x86emuOp2_illegal_op, -/* 0xe7 */ x86emuOp2_illegal_op, -/* 0xe8 */ x86emuOp2_illegal_op, -/* 0xe9 */ x86emuOp2_illegal_op, -/* 0xea */ x86emuOp2_illegal_op, -/* 0xeb */ x86emuOp2_illegal_op, -/* 0xec */ x86emuOp2_illegal_op, -/* 0xed */ x86emuOp2_illegal_op, -/* 0xee */ x86emuOp2_illegal_op, -/* 0xef */ x86emuOp2_illegal_op, - -/* 0xf0 */ x86emuOp2_illegal_op, -/* 0xf1 */ x86emuOp2_illegal_op, -/* 0xf2 */ x86emuOp2_illegal_op, -/* 0xf3 */ x86emuOp2_illegal_op, -/* 0xf4 */ x86emuOp2_illegal_op, -/* 0xf5 */ x86emuOp2_illegal_op, -/* 0xf6 */ x86emuOp2_illegal_op, -/* 0xf7 */ x86emuOp2_illegal_op, -/* 0xf8 */ x86emuOp2_illegal_op, -/* 0xf9 */ x86emuOp2_illegal_op, -/* 0xfa */ x86emuOp2_illegal_op, -/* 0xfb */ x86emuOp2_illegal_op, -/* 0xfc */ x86emuOp2_illegal_op, -/* 0xfd */ x86emuOp2_illegal_op, -/* 0xfe */ x86emuOp2_illegal_op, -/* 0xff */ x86emuOp2_illegal_op, -}; diff --git a/src/hwinfo/src/x86emu/prim_ops.c b/src/hwinfo/src/x86emu/prim_ops.c deleted file mode 100644 index 56ab8cc9ac..0000000000 --- a/src/hwinfo/src/x86emu/prim_ops.c +++ /dev/null @@ -1,2654 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: This file contains the code to implement the primitive -* machine operations used by the emulation code in ops.c -* -* Carry Chain Calculation -* -* This represents a somewhat expensive calculation which is -* apparently required to emulate the setting of the OF and AF flag. -* The latter is not so important, but the former is. The overflow -* flag is the XOR of the top two bits of the carry chain for an -* addition (similar for subtraction). Since we do not want to -* simulate the addition in a bitwise manner, we try to calculate the -* carry chain given the two operands and the result. -* -* So, given the following table, which represents the addition of two -* bits, we can derive a formula for the carry chain. -* -* a b cin r cout -* 0 0 0 0 0 -* 0 0 1 1 0 -* 0 1 0 1 0 -* 0 1 1 0 1 -* 1 0 0 1 0 -* 1 0 1 0 1 -* 1 1 0 0 1 -* 1 1 1 1 1 -* -* Construction of table for cout: -* -* ab -* r \ 00 01 11 10 -* |------------------ -* 0 | 0 1 1 1 -* 1 | 0 0 1 0 -* -* By inspection, one gets: cc = ab + r'(a + b) -* -* That represents alot of operations, but NO CHOICE.... -* -* Borrow Chain Calculation. -* -* The following table represents the subtraction of two bits, from -* which we can derive a formula for the borrow chain. -* -* a b bin r bout -* 0 0 0 0 0 -* 0 0 1 1 1 -* 0 1 0 1 1 -* 0 1 1 0 1 -* 1 0 0 1 0 -* 1 0 1 0 0 -* 1 1 0 0 0 -* 1 1 1 1 1 -* -* Construction of table for cout: -* -* ab -* r \ 00 01 11 10 -* |------------------ -* 0 | 0 1 0 0 -* 1 | 1 1 1 0 -* -* By inspection, one gets: bc = a'b + r(a' + b) -* -****************************************************************************/ - -#define PRIM_OPS_NO_REDEFINE_ASM -#include "x86emu/x86emui.h" - -/*------------------------- Global Variables ------------------------------*/ - -static u32 x86emu_parity_tab[8] = -{ - 0x96696996, - 0x69969669, - 0x69969669, - 0x96696996, - 0x69969669, - 0x96696996, - 0x96696996, - 0x69969669, -}; - -#define PARITY(x) (((x86emu_parity_tab[(x) / 32] >> ((x) % 32)) & 1) == 0) -#define XOR2(x) (((x) ^ ((x)>>1)) & 0x1) - -/*----------------------------- Implementation ----------------------------*/ - -/**************************************************************************** -REMARKS: -Implements the AAA instruction and side effects. -****************************************************************************/ -u16 aaa_word(u16 d) -{ - u16 res; - if ((d & 0xf) > 0x9 || ACCESS_FLAG(F_AF)) { - d += 0x6; - d += 0x100; - SET_FLAG(F_AF); - SET_FLAG(F_CF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - } - res = (u16)(d & 0xFF0F); - CLEAR_FLAG(F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the AAA instruction and side effects. -****************************************************************************/ -u16 aas_word(u16 d) -{ - u16 res; - if ((d & 0xf) > 0x9 || ACCESS_FLAG(F_AF)) { - d -= 0x6; - d -= 0x100; - SET_FLAG(F_AF); - SET_FLAG(F_CF); - } else { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - } - res = (u16)(d & 0xFF0F); - CLEAR_FLAG(F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the AAD instruction and side effects. -****************************************************************************/ -u16 aad_word(u16 d) -{ - u16 l; - u8 hb, lb; - - hb = (u8)((d >> 8) & 0xff); - lb = (u8)((d & 0xff)); - l = (u16)((lb + 10 * hb) & 0xFF); - - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - CLEAR_FLAG(F_OF); - CONDITIONAL_SET_FLAG(l & 0x80, F_SF); - CONDITIONAL_SET_FLAG(l == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(l & 0xff), F_PF); - return l; -} - -/**************************************************************************** -REMARKS: -Implements the AAM instruction and side effects. -****************************************************************************/ -u16 aam_word(u8 d) -{ - u16 h, l; - - h = (u16)(d / 10); - l = (u16)(d % 10); - l |= (u16)(h << 8); - - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - CLEAR_FLAG(F_OF); - CONDITIONAL_SET_FLAG(l & 0x80, F_SF); - CONDITIONAL_SET_FLAG(l == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(l & 0xff), F_PF); - return l; -} - -/**************************************************************************** -REMARKS: -Implements the ADC instruction and side effects. -****************************************************************************/ -u8 adc_byte(u8 d, u8 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 cc; - - if (ACCESS_FLAG(F_CF)) - res = 1 + d + s; - else - res = d + s; - - CONDITIONAL_SET_FLAG(res & 0x100, F_CF); - CONDITIONAL_SET_FLAG((res & 0xff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the carry chain SEE NOTE AT TOP. */ - cc = (s & d) | ((~res) & (s | d)); - CONDITIONAL_SET_FLAG(XOR2(cc >> 6), F_OF); - CONDITIONAL_SET_FLAG(cc & 0x8, F_AF); - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the ADC instruction and side effects. -****************************************************************************/ -u16 adc_word(u16 d, u16 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 cc; - - if (ACCESS_FLAG(F_CF)) - res = 1 + d + s; - else - res = d + s; - - CONDITIONAL_SET_FLAG(res & 0x10000, F_CF); - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the carry chain SEE NOTE AT TOP. */ - cc = (s & d) | ((~res) & (s | d)); - CONDITIONAL_SET_FLAG(XOR2(cc >> 14), F_OF); - CONDITIONAL_SET_FLAG(cc & 0x8, F_AF); - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the ADC instruction and side effects. -****************************************************************************/ -u32 adc_long(u32 d, u32 s) -{ - register u32 lo; /* all operands in native machine order */ - register u32 hi; - register u32 res; - register u32 cc; - - if (ACCESS_FLAG(F_CF)) { - lo = 1 + (d & 0xFFFF) + (s & 0xFFFF); - res = 1 + d + s; - } - else { - lo = (d & 0xFFFF) + (s & 0xFFFF); - res = d + s; - } - hi = (lo >> 16) + (d >> 16) + (s >> 16); - - CONDITIONAL_SET_FLAG(hi & 0x10000, F_CF); - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the carry chain SEE NOTE AT TOP. */ - cc = (s & d) | ((~res) & (s | d)); - CONDITIONAL_SET_FLAG(XOR2(cc >> 30), F_OF); - CONDITIONAL_SET_FLAG(cc & 0x8, F_AF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the ADD instruction and side effects. -****************************************************************************/ -u8 add_byte(u8 d, u8 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 cc; - - res = d + s; - CONDITIONAL_SET_FLAG(res & 0x100, F_CF); - CONDITIONAL_SET_FLAG((res & 0xff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the carry chain SEE NOTE AT TOP. */ - cc = (s & d) | ((~res) & (s | d)); - CONDITIONAL_SET_FLAG(XOR2(cc >> 6), F_OF); - CONDITIONAL_SET_FLAG(cc & 0x8, F_AF); - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the ADD instruction and side effects. -****************************************************************************/ -u16 add_word(u16 d, u16 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 cc; - - res = d + s; - CONDITIONAL_SET_FLAG(res & 0x10000, F_CF); - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the carry chain SEE NOTE AT TOP. */ - cc = (s & d) | ((~res) & (s | d)); - CONDITIONAL_SET_FLAG(XOR2(cc >> 14), F_OF); - CONDITIONAL_SET_FLAG(cc & 0x8, F_AF); - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the ADD instruction and side effects. -****************************************************************************/ -u32 add_long(u32 d, u32 s) -{ - register u32 lo; /* all operands in native machine order */ - register u32 hi; - register u32 res; - register u32 cc; - - lo = (d & 0xFFFF) + (s & 0xFFFF); - res = d + s; - hi = (lo >> 16) + (d >> 16) + (s >> 16); - - CONDITIONAL_SET_FLAG(hi & 0x10000, F_CF); - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the carry chain SEE NOTE AT TOP. */ - cc = (s & d) | ((~res) & (s | d)); - CONDITIONAL_SET_FLAG(XOR2(cc >> 30), F_OF); - CONDITIONAL_SET_FLAG(cc & 0x8, F_AF); - - return res; -} - -/**************************************************************************** -REMARKS: -Implements the AND instruction and side effects. -****************************************************************************/ -u8 and_byte(u8 d, u8 s) -{ - register u8 res; /* all operands in native machine order */ - - res = d & s; - - /* set the flags */ - CLEAR_FLAG(F_OF); - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res), F_PF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the AND instruction and side effects. -****************************************************************************/ -u16 and_word(u16 d, u16 s) -{ - register u16 res; /* all operands in native machine order */ - - res = d & s; - - /* set the flags */ - CLEAR_FLAG(F_OF); - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the AND instruction and side effects. -****************************************************************************/ -u32 and_long(u32 d, u32 s) -{ - register u32 res; /* all operands in native machine order */ - - res = d & s; - - /* set the flags */ - CLEAR_FLAG(F_OF); - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the CMP instruction and side effects. -****************************************************************************/ -u8 cmp_byte(u8 d, u8 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 bc; - - res = d - s; - CLEAR_FLAG(F_CF); - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG((res & 0xff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain. See note at top */ - bc = (res & (~d | s)) | (~d & s); - CONDITIONAL_SET_FLAG(bc & 0x80, F_CF); - CONDITIONAL_SET_FLAG(XOR2(bc >> 6), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return d; -} - -/**************************************************************************** -REMARKS: -Implements the CMP instruction and side effects. -****************************************************************************/ -u16 cmp_word(u16 d, u16 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 bc; - - res = d - s; - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain. See note at top */ - bc = (res & (~d | s)) | (~d & s); - CONDITIONAL_SET_FLAG(bc & 0x8000, F_CF); - CONDITIONAL_SET_FLAG(XOR2(bc >> 14), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return d; -} - -/**************************************************************************** -REMARKS: -Implements the CMP instruction and side effects. -****************************************************************************/ -u32 cmp_long(u32 d, u32 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 bc; - - res = d - s; - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain. See note at top */ - bc = (res & (~d | s)) | (~d & s); - CONDITIONAL_SET_FLAG(bc & 0x80000000, F_CF); - CONDITIONAL_SET_FLAG(XOR2(bc >> 30), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return d; -} - -/**************************************************************************** -REMARKS: -Implements the DAA instruction and side effects. -****************************************************************************/ -u8 daa_byte(u8 d) -{ - u32 res = d; - if ((d & 0xf) > 9 || ACCESS_FLAG(F_AF)) { - res += 6; - SET_FLAG(F_AF); - } - if (res > 0x9F || ACCESS_FLAG(F_CF)) { - res += 0x60; - SET_FLAG(F_CF); - } - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG((res & 0xFF) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the DAS instruction and side effects. -****************************************************************************/ -u8 das_byte(u8 d) -{ - if ((d & 0xf) > 9 || ACCESS_FLAG(F_AF)) { - d -= 6; - SET_FLAG(F_AF); - } - if (d > 0x9F || ACCESS_FLAG(F_CF)) { - d -= 0x60; - SET_FLAG(F_CF); - } - CONDITIONAL_SET_FLAG(d & 0x80, F_SF); - CONDITIONAL_SET_FLAG(d == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(d & 0xff), F_PF); - return d; -} - -/**************************************************************************** -REMARKS: -Implements the DEC instruction and side effects. -****************************************************************************/ -u8 dec_byte(u8 d) -{ - register u32 res; /* all operands in native machine order */ - register u32 bc; - - res = d - 1; - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG((res & 0xff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain. See note at top */ - /* based on sub_byte, uses s==1. */ - bc = (res & (~d | 1)) | (~d & 1); - /* carry flag unchanged */ - CONDITIONAL_SET_FLAG(XOR2(bc >> 6), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the DEC instruction and side effects. -****************************************************************************/ -u16 dec_word(u16 d) -{ - register u32 res; /* all operands in native machine order */ - register u32 bc; - - res = d - 1; - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain. See note at top */ - /* based on the sub_byte routine, with s==1 */ - bc = (res & (~d | 1)) | (~d & 1); - /* carry flag unchanged */ - CONDITIONAL_SET_FLAG(XOR2(bc >> 14), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the DEC instruction and side effects. -****************************************************************************/ -u32 dec_long(u32 d) -{ - register u32 res; /* all operands in native machine order */ - register u32 bc; - - res = d - 1; - - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain. See note at top */ - bc = (res & (~d | 1)) | (~d & 1); - /* carry flag unchanged */ - CONDITIONAL_SET_FLAG(XOR2(bc >> 30), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the INC instruction and side effects. -****************************************************************************/ -u8 inc_byte(u8 d) -{ - register u32 res; /* all operands in native machine order */ - register u32 cc; - - res = d + 1; - CONDITIONAL_SET_FLAG((res & 0xff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the carry chain SEE NOTE AT TOP. */ - cc = ((1 & d) | (~res)) & (1 | d); - CONDITIONAL_SET_FLAG(XOR2(cc >> 6), F_OF); - CONDITIONAL_SET_FLAG(cc & 0x8, F_AF); - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the INC instruction and side effects. -****************************************************************************/ -u16 inc_word(u16 d) -{ - register u32 res; /* all operands in native machine order */ - register u32 cc; - - res = d + 1; - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the carry chain SEE NOTE AT TOP. */ - cc = (1 & d) | ((~res) & (1 | d)); - CONDITIONAL_SET_FLAG(XOR2(cc >> 14), F_OF); - CONDITIONAL_SET_FLAG(cc & 0x8, F_AF); - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the INC instruction and side effects. -****************************************************************************/ -u32 inc_long(u32 d) -{ - register u32 res; /* all operands in native machine order */ - register u32 cc; - - res = d + 1; - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the carry chain SEE NOTE AT TOP. */ - cc = (1 & d) | ((~res) & (1 | d)); - CONDITIONAL_SET_FLAG(XOR2(cc >> 30), F_OF); - CONDITIONAL_SET_FLAG(cc & 0x8, F_AF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the OR instruction and side effects. -****************************************************************************/ -u8 or_byte(u8 d, u8 s) -{ - register u8 res; /* all operands in native machine order */ - - res = d | s; - CLEAR_FLAG(F_OF); - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res), F_PF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the OR instruction and side effects. -****************************************************************************/ -u16 or_word(u16 d, u16 s) -{ - register u16 res; /* all operands in native machine order */ - - res = d | s; - /* set the carry flag to be bit 8 */ - CLEAR_FLAG(F_OF); - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the OR instruction and side effects. -****************************************************************************/ -u32 or_long(u32 d, u32 s) -{ - register u32 res; /* all operands in native machine order */ - - res = d | s; - - /* set the carry flag to be bit 8 */ - CLEAR_FLAG(F_OF); - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the OR instruction and side effects. -****************************************************************************/ -u8 neg_byte(u8 s) -{ - register u8 res; - register u8 bc; - - CONDITIONAL_SET_FLAG(s != 0, F_CF); - res = (u8)-s; - CONDITIONAL_SET_FLAG((res & 0xff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res), F_PF); - /* calculate the borrow chain --- modified such that d=0. - substitutiing d=0 into bc= res&(~d|s)|(~d&s); - (the one used for sub) and simplifying, since ~d=0xff..., - ~d|s == 0xffff..., and res&0xfff... == res. Similarly - ~d&s == s. So the simplified result is: */ - bc = res | s; - CONDITIONAL_SET_FLAG(XOR2(bc >> 6), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the OR instruction and side effects. -****************************************************************************/ -u16 neg_word(u16 s) -{ - register u16 res; - register u16 bc; - - CONDITIONAL_SET_FLAG(s != 0, F_CF); - res = (u16)-s; - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain --- modified such that d=0. - substitutiing d=0 into bc= res&(~d|s)|(~d&s); - (the one used for sub) and simplifying, since ~d=0xff..., - ~d|s == 0xffff..., and res&0xfff... == res. Similarly - ~d&s == s. So the simplified result is: */ - bc = res | s; - CONDITIONAL_SET_FLAG(XOR2(bc >> 14), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the OR instruction and side effects. -****************************************************************************/ -u32 neg_long(u32 s) -{ - register u32 res; - register u32 bc; - - CONDITIONAL_SET_FLAG(s != 0, F_CF); - res = (u32)-s; - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain --- modified such that d=0. - substitutiing d=0 into bc= res&(~d|s)|(~d&s); - (the one used for sub) and simplifying, since ~d=0xff..., - ~d|s == 0xffff..., and res&0xfff... == res. Similarly - ~d&s == s. So the simplified result is: */ - bc = res | s; - CONDITIONAL_SET_FLAG(XOR2(bc >> 30), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the NOT instruction and side effects. -****************************************************************************/ -u8 not_byte(u8 s) -{ - return ~s; -} - -/**************************************************************************** -REMARKS: -Implements the NOT instruction and side effects. -****************************************************************************/ -u16 not_word(u16 s) -{ - return ~s; -} - -/**************************************************************************** -REMARKS: -Implements the NOT instruction and side effects. -****************************************************************************/ -u32 not_long(u32 s) -{ - return ~s; -} - -/**************************************************************************** -REMARKS: -Implements the RCL instruction and side effects. -****************************************************************************/ -u8 rcl_byte(u8 d, u8 s) -{ - register unsigned int res, cnt, mask, cf; - - /* s is the rotate distance. It varies from 0 - 8. */ - /* have - - CF B_7 B_6 B_5 B_4 B_3 B_2 B_1 B_0 - - want to rotate through the carry by "s" bits. We could - loop, but that's inefficient. So the width is 9, - and we split into three parts: - - The new carry flag (was B_n) - the stuff in B_n-1 .. B_0 - the stuff in B_7 .. B_n+1 - - The new rotate is done mod 9, and given this, - for a rotation of n bits (mod 9) the new carry flag is - then located n bits from the MSB. The low part is - then shifted up cnt bits, and the high part is or'd - in. Using CAPS for new values, and lowercase for the - original values, this can be expressed as: - - IF n > 0 - 1) CF <- b_(8-n) - 2) B_(7) .. B_(n) <- b_(8-(n+1)) .. b_0 - 3) B_(n-1) <- cf - 4) B_(n-2) .. B_0 <- b_7 .. b_(8-(n-1)) - */ - res = d; - if ((cnt = s % 9) != 0) { - /* extract the new CARRY FLAG. */ - /* CF <- b_(8-n) */ - cf = (d >> (8 - cnt)) & 0x1; - - /* get the low stuff which rotated - into the range B_7 .. B_cnt */ - /* B_(7) .. B_(n) <- b_(8-(n+1)) .. b_0 */ - /* note that the right hand side done by the mask */ - res = (d << cnt) & 0xff; - - /* now the high stuff which rotated around - into the positions B_cnt-2 .. B_0 */ - /* B_(n-2) .. B_0 <- b_7 .. b_(8-(n-1)) */ - /* shift it downward, 7-(n-2) = 9-n positions. - and mask off the result before or'ing in. - */ - mask = (1 << (cnt - 1)) - 1; - res |= (d >> (9 - cnt)) & mask; - - /* if the carry flag was set, or it in. */ - if (ACCESS_FLAG(F_CF)) { /* carry flag is set */ - /* B_(n-1) <- cf */ - res |= 1 << (cnt - 1); - } - /* set the new carry flag, based on the variable "cf" */ - CONDITIONAL_SET_FLAG(cf, F_CF); - /* OVERFLOW is set *IFF* cnt==1, then it is the - xor of CF and the most significant bit. Blecck. */ - /* parenthesized this expression since it appears to - be causing OF to be misset */ - CONDITIONAL_SET_FLAG(cnt == 1 && XOR2(cf + ((res >> 6) & 0x2)), - F_OF); - - } - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the RCL instruction and side effects. -****************************************************************************/ -u16 rcl_word(u16 d, u8 s) -{ - register unsigned int res, cnt, mask, cf; - - res = d; - if ((cnt = s % 17) != 0) { - cf = (d >> (16 - cnt)) & 0x1; - res = (d << cnt) & 0xffff; - mask = (1 << (cnt - 1)) - 1; - res |= (d >> (17 - cnt)) & mask; - if (ACCESS_FLAG(F_CF)) { - res |= 1 << (cnt - 1); - } - CONDITIONAL_SET_FLAG(cf, F_CF); - CONDITIONAL_SET_FLAG(cnt == 1 && XOR2(cf + ((res >> 14) & 0x2)), - F_OF); - } - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the RCL instruction and side effects. -****************************************************************************/ -u32 rcl_long(u32 d, u8 s) -{ - register u32 res, cnt, mask, cf; - - res = d; - if ((cnt = s % 33) != 0) { - cf = (d >> (32 - cnt)) & 0x1; - res = (d << cnt) & 0xffffffff; - mask = (1 << (cnt - 1)) - 1; - res |= (d >> (33 - cnt)) & mask; - if (ACCESS_FLAG(F_CF)) { /* carry flag is set */ - res |= 1 << (cnt - 1); - } - CONDITIONAL_SET_FLAG(cf, F_CF); - CONDITIONAL_SET_FLAG(cnt == 1 && XOR2(cf + ((res >> 30) & 0x2)), - F_OF); - } - return res; -} - -/**************************************************************************** -REMARKS: -Implements the RCR instruction and side effects. -****************************************************************************/ -u8 rcr_byte(u8 d, u8 s) -{ - u32 res, cnt; - u32 mask, cf, ocf = 0; - - /* rotate right through carry */ - /* - s is the rotate distance. It varies from 0 - 8. - d is the byte object rotated. - - have - - CF B_7 B_6 B_5 B_4 B_3 B_2 B_1 B_0 - - The new rotate is done mod 9, and given this, - for a rotation of n bits (mod 9) the new carry flag is - then located n bits from the LSB. The low part is - then shifted up cnt bits, and the high part is or'd - in. Using CAPS for new values, and lowercase for the - original values, this can be expressed as: - - IF n > 0 - 1) CF <- b_(n-1) - 2) B_(8-(n+1)) .. B_(0) <- b_(7) .. b_(n) - 3) B_(8-n) <- cf - 4) B_(7) .. B_(8-(n-1)) <- b_(n-2) .. b_(0) - */ - res = d; - if ((cnt = s % 9) != 0) { - /* extract the new CARRY FLAG. */ - /* CF <- b_(n-1) */ - if (cnt == 1) { - cf = d & 0x1; - /* note hackery here. Access_flag(..) evaluates to either - 0 if flag not set - non-zero if flag is set. - doing access_flag(..) != 0 casts that into either - 0..1 in any representation of the flags register - (i.e. packed bit array or unpacked.) - */ - ocf = ACCESS_FLAG(F_CF) != 0; - } else - cf = (d >> (cnt - 1)) & 0x1; - - /* B_(8-(n+1)) .. B_(0) <- b_(7) .. b_n */ - /* note that the right hand side done by the mask - This is effectively done by shifting the - object to the right. The result must be masked, - in case the object came in and was treated - as a negative number. Needed??? */ - - mask = (1 << (8 - cnt)) - 1; - res = (d >> cnt) & mask; - - /* now the high stuff which rotated around - into the positions B_cnt-2 .. B_0 */ - /* B_(7) .. B_(8-(n-1)) <- b_(n-2) .. b_(0) */ - /* shift it downward, 7-(n-2) = 9-n positions. - and mask off the result before or'ing in. - */ - res |= (d << (9 - cnt)); - - /* if the carry flag was set, or it in. */ - if (ACCESS_FLAG(F_CF)) { /* carry flag is set */ - /* B_(8-n) <- cf */ - res |= 1 << (8 - cnt); - } - /* set the new carry flag, based on the variable "cf" */ - CONDITIONAL_SET_FLAG(cf, F_CF); - /* OVERFLOW is set *IFF* cnt==1, then it is the - xor of CF and the most significant bit. Blecck. */ - /* parenthesized... */ - if (cnt == 1) { - CONDITIONAL_SET_FLAG(XOR2(ocf + ((d >> 6) & 0x2)), - F_OF); - } - } - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the RCR instruction and side effects. -****************************************************************************/ -u16 rcr_word(u16 d, u8 s) -{ - u32 res, cnt; - u32 mask, cf, ocf = 0; - - /* rotate right through carry */ - res = d; - if ((cnt = s % 17) != 0) { - if (cnt == 1) { - cf = d & 0x1; - ocf = ACCESS_FLAG(F_CF) != 0; - } else - cf = (d >> (cnt - 1)) & 0x1; - mask = (1 << (16 - cnt)) - 1; - res = (d >> cnt) & mask; - res |= (d << (17 - cnt)); - if (ACCESS_FLAG(F_CF)) { - res |= 1 << (16 - cnt); - } - CONDITIONAL_SET_FLAG(cf, F_CF); - if (cnt == 1) { - CONDITIONAL_SET_FLAG(XOR2(ocf + ((d >> 14) & 0x2)), - F_OF); - } - } - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the RCR instruction and side effects. -****************************************************************************/ -u32 rcr_long(u32 d, u8 s) -{ - u32 res, cnt; - u32 mask, cf, ocf = 0; - - /* rotate right through carry */ - res = d; - if ((cnt = s % 33) != 0) { - if (cnt == 1) { - cf = d & 0x1; - ocf = ACCESS_FLAG(F_CF) != 0; - } else - cf = (d >> (cnt - 1)) & 0x1; - mask = (1 << (32 - cnt)) - 1; - res = (d >> cnt) & mask; - if (cnt != 1) - res |= (d << (33 - cnt)); - if (ACCESS_FLAG(F_CF)) { /* carry flag is set */ - res |= 1 << (32 - cnt); - } - CONDITIONAL_SET_FLAG(cf, F_CF); - if (cnt == 1) { - CONDITIONAL_SET_FLAG(XOR2(ocf + ((d >> 30) & 0x2)), - F_OF); - } - } - return res; -} - -/**************************************************************************** -REMARKS: -Implements the ROL instruction and side effects. -****************************************************************************/ -u8 rol_byte(u8 d, u8 s) -{ - register unsigned int res, cnt, mask; - - /* rotate left */ - /* - s is the rotate distance. It varies from 0 - 8. - d is the byte object rotated. - - have - - CF B_7 ... B_0 - - The new rotate is done mod 8. - Much simpler than the "rcl" or "rcr" operations. - - IF n > 0 - 1) B_(7) .. B_(n) <- b_(8-(n+1)) .. b_(0) - 2) B_(n-1) .. B_(0) <- b_(7) .. b_(8-n) - */ - res = d; - if ((cnt = s % 8) != 0) { - /* B_(7) .. B_(n) <- b_(8-(n+1)) .. b_(0) */ - res = (d << cnt); - - /* B_(n-1) .. B_(0) <- b_(7) .. b_(8-n) */ - mask = (1 << cnt) - 1; - res |= (d >> (8 - cnt)) & mask; - - /* set the new carry flag, Note that it is the low order - bit of the result!!! */ - CONDITIONAL_SET_FLAG(res & 0x1, F_CF); - /* OVERFLOW is set *IFF* s==1, then it is the - xor of CF and the most significant bit. Blecck. */ - CONDITIONAL_SET_FLAG(s == 1 && - XOR2((res & 0x1) + ((res >> 6) & 0x2)), - F_OF); - } if (s != 0) { - /* set the new carry flag, Note that it is the low order - bit of the result!!! */ - CONDITIONAL_SET_FLAG(res & 0x1, F_CF); - } - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the ROL instruction and side effects. -****************************************************************************/ -u16 rol_word(u16 d, u8 s) -{ - register unsigned int res, cnt, mask; - - res = d; - if ((cnt = s % 16) != 0) { - res = (d << cnt); - mask = (1 << cnt) - 1; - res |= (d >> (16 - cnt)) & mask; - CONDITIONAL_SET_FLAG(res & 0x1, F_CF); - CONDITIONAL_SET_FLAG(s == 1 && - XOR2((res & 0x1) + ((res >> 14) & 0x2)), - F_OF); - } if (s != 0) { - /* set the new carry flag, Note that it is the low order - bit of the result!!! */ - CONDITIONAL_SET_FLAG(res & 0x1, F_CF); - } - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the ROL instruction and side effects. -****************************************************************************/ -u32 rol_long(u32 d, u8 s) -{ - register u32 res, cnt, mask; - - res = d; - if ((cnt = s % 32) != 0) { - res = (d << cnt); - mask = (1 << cnt) - 1; - res |= (d >> (32 - cnt)) & mask; - CONDITIONAL_SET_FLAG(res & 0x1, F_CF); - CONDITIONAL_SET_FLAG(s == 1 && - XOR2((res & 0x1) + ((res >> 30) & 0x2)), - F_OF); - } if (s != 0) { - /* set the new carry flag, Note that it is the low order - bit of the result!!! */ - CONDITIONAL_SET_FLAG(res & 0x1, F_CF); - } - return res; -} - -/**************************************************************************** -REMARKS: -Implements the ROR instruction and side effects. -****************************************************************************/ -u8 ror_byte(u8 d, u8 s) -{ - register unsigned int res, cnt, mask; - - /* rotate right */ - /* - s is the rotate distance. It varies from 0 - 8. - d is the byte object rotated. - - have - - B_7 ... B_0 - - The rotate is done mod 8. - - IF n > 0 - 1) B_(8-(n+1)) .. B_(0) <- b_(7) .. b_(n) - 2) B_(7) .. B_(8-n) <- b_(n-1) .. b_(0) - */ - res = d; - if ((cnt = s % 8) != 0) { /* not a typo, do nada if cnt==0 */ - /* B_(7) .. B_(8-n) <- b_(n-1) .. b_(0) */ - res = (d << (8 - cnt)); - - /* B_(8-(n+1)) .. B_(0) <- b_(7) .. b_(n) */ - mask = (1 << (8 - cnt)) - 1; - res |= (d >> (cnt)) & mask; - - /* set the new carry flag, Note that it is the low order - bit of the result!!! */ - CONDITIONAL_SET_FLAG(res & 0x80, F_CF); - /* OVERFLOW is set *IFF* s==1, then it is the - xor of the two most significant bits. Blecck. */ - CONDITIONAL_SET_FLAG(s == 1 && XOR2(res >> 6), F_OF); - } else if (s != 0) { - /* set the new carry flag, Note that it is the low order - bit of the result!!! */ - CONDITIONAL_SET_FLAG(res & 0x80, F_CF); - } - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the ROR instruction and side effects. -****************************************************************************/ -u16 ror_word(u16 d, u8 s) -{ - register unsigned int res, cnt, mask; - - res = d; - if ((cnt = s % 16) != 0) { - res = (d << (16 - cnt)); - mask = (1 << (16 - cnt)) - 1; - res |= (d >> (cnt)) & mask; - CONDITIONAL_SET_FLAG(res & 0x8000, F_CF); - CONDITIONAL_SET_FLAG(s == 1 && XOR2(res >> 14), F_OF); - } else if (s != 0) { - /* set the new carry flag, Note that it is the low order - bit of the result!!! */ - CONDITIONAL_SET_FLAG(res & 0x8000, F_CF); - } - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the ROR instruction and side effects. -****************************************************************************/ -u32 ror_long(u32 d, u8 s) -{ - register u32 res, cnt, mask; - - res = d; - if ((cnt = s % 32) != 0) { - res = (d << (32 - cnt)); - mask = (1 << (32 - cnt)) - 1; - res |= (d >> (cnt)) & mask; - CONDITIONAL_SET_FLAG(res & 0x80000000, F_CF); - CONDITIONAL_SET_FLAG(s == 1 && XOR2(res >> 30), F_OF); - } else if (s != 0) { - /* set the new carry flag, Note that it is the low order - bit of the result!!! */ - CONDITIONAL_SET_FLAG(res & 0x80000000, F_CF); - } - return res; -} - -/**************************************************************************** -REMARKS: -Implements the SHL instruction and side effects. -****************************************************************************/ -u8 shl_byte(u8 d, u8 s) -{ - unsigned int cnt, res, cf; - - if (s < 8) { - cnt = s % 8; - - /* last bit shifted out goes into carry flag */ - if (cnt > 0) { - res = d << cnt; - cf = d & (1 << (8 - cnt)); - CONDITIONAL_SET_FLAG(cf, F_CF); - CONDITIONAL_SET_FLAG((res & 0xff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - } else { - res = (u8) d; - } - - if (cnt == 1) { - /* Needs simplification. */ - CONDITIONAL_SET_FLAG( - (((res & 0x80) == 0x80) ^ - (ACCESS_FLAG(F_CF) != 0)), - /* was (M.x86.R_FLG&F_CF)==F_CF)), */ - F_OF); - } else { - CLEAR_FLAG(F_OF); - } - } else { - res = 0; - CONDITIONAL_SET_FLAG((d << (s-1)) & 0x80, F_CF); - CLEAR_FLAG(F_OF); - CLEAR_FLAG(F_SF); - SET_FLAG(F_PF); - SET_FLAG(F_ZF); - } - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the SHL instruction and side effects. -****************************************************************************/ -u16 shl_word(u16 d, u8 s) -{ - unsigned int cnt, res, cf; - - if (s < 16) { - cnt = s % 16; - if (cnt > 0) { - res = d << cnt; - cf = d & (1 << (16 - cnt)); - CONDITIONAL_SET_FLAG(cf, F_CF); - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - } else { - res = (u16) d; - } - - if (cnt == 1) { - CONDITIONAL_SET_FLAG( - (((res & 0x8000) == 0x8000) ^ - (ACCESS_FLAG(F_CF) != 0)), - F_OF); - } else { - CLEAR_FLAG(F_OF); - } - } else { - res = 0; - CONDITIONAL_SET_FLAG((d << (s-1)) & 0x8000, F_CF); - CLEAR_FLAG(F_OF); - CLEAR_FLAG(F_SF); - SET_FLAG(F_PF); - SET_FLAG(F_ZF); - } - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the SHL instruction and side effects. -****************************************************************************/ -u32 shl_long(u32 d, u8 s) -{ - unsigned int cnt, res, cf; - - if (s < 32) { - cnt = s % 32; - if (cnt > 0) { - res = d << cnt; - cf = d & (1 << (32 - cnt)); - CONDITIONAL_SET_FLAG(cf, F_CF); - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - } else { - res = d; - } - if (cnt == 1) { - CONDITIONAL_SET_FLAG((((res & 0x80000000) == 0x80000000) ^ - (ACCESS_FLAG(F_CF) != 0)), F_OF); - } else { - CLEAR_FLAG(F_OF); - } - } else { - res = 0; - CONDITIONAL_SET_FLAG((d << (s-1)) & 0x80000000, F_CF); - CLEAR_FLAG(F_OF); - CLEAR_FLAG(F_SF); - SET_FLAG(F_PF); - SET_FLAG(F_ZF); - } - return res; -} - -/**************************************************************************** -REMARKS: -Implements the SHR instruction and side effects. -****************************************************************************/ -u8 shr_byte(u8 d, u8 s) -{ - unsigned int cnt, res, cf; - - if (s < 8) { - cnt = s % 8; - if (cnt > 0) { - cf = d & (1 << (cnt - 1)); - res = d >> cnt; - CONDITIONAL_SET_FLAG(cf, F_CF); - CONDITIONAL_SET_FLAG((res & 0xff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - } else { - res = (u8) d; - } - - if (cnt == 1) { - CONDITIONAL_SET_FLAG(XOR2(res >> 6), F_OF); - } else { - CLEAR_FLAG(F_OF); - } - } else { - res = 0; - CONDITIONAL_SET_FLAG((d >> (s-1)) & 0x1, F_CF); - CLEAR_FLAG(F_OF); - CLEAR_FLAG(F_SF); - SET_FLAG(F_PF); - SET_FLAG(F_ZF); - } - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the SHR instruction and side effects. -****************************************************************************/ -u16 shr_word(u16 d, u8 s) -{ - unsigned int cnt, res, cf; - - if (s < 16) { - cnt = s % 16; - if (cnt > 0) { - cf = d & (1 << (cnt - 1)); - res = d >> cnt; - CONDITIONAL_SET_FLAG(cf, F_CF); - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - } else { - res = d; - } - - if (cnt == 1) { - CONDITIONAL_SET_FLAG(XOR2(res >> 14), F_OF); - } else { - CLEAR_FLAG(F_OF); - } - } else { - res = 0; - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - SET_FLAG(F_ZF); - CLEAR_FLAG(F_SF); - CLEAR_FLAG(F_PF); - } - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the SHR instruction and side effects. -****************************************************************************/ -u32 shr_long(u32 d, u8 s) -{ - unsigned int cnt, res, cf; - - if (s < 32) { - cnt = s % 32; - if (cnt > 0) { - cf = d & (1 << (cnt - 1)); - res = d >> cnt; - CONDITIONAL_SET_FLAG(cf, F_CF); - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - } else { - res = d; - } - if (cnt == 1) { - CONDITIONAL_SET_FLAG(XOR2(res >> 30), F_OF); - } else { - CLEAR_FLAG(F_OF); - } - } else { - res = 0; - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - SET_FLAG(F_ZF); - CLEAR_FLAG(F_SF); - CLEAR_FLAG(F_PF); - } - return res; -} - -/**************************************************************************** -REMARKS: -Implements the SAR instruction and side effects. -****************************************************************************/ -u8 sar_byte(u8 d, u8 s) -{ - unsigned int cnt, res, cf, mask, sf; - - res = d; - sf = d & 0x80; - cnt = s % 8; - if (cnt > 0 && cnt < 8) { - mask = (1 << (8 - cnt)) - 1; - cf = d & (1 << (cnt - 1)); - res = (d >> cnt) & mask; - CONDITIONAL_SET_FLAG(cf, F_CF); - if (sf) { - res |= ~mask; - } - CONDITIONAL_SET_FLAG((res & 0xff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - } else if (cnt >= 8) { - if (sf) { - res = 0xff; - SET_FLAG(F_CF); - CLEAR_FLAG(F_ZF); - SET_FLAG(F_SF); - SET_FLAG(F_PF); - } else { - res = 0; - CLEAR_FLAG(F_CF); - SET_FLAG(F_ZF); - CLEAR_FLAG(F_SF); - CLEAR_FLAG(F_PF); - } - } - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the SAR instruction and side effects. -****************************************************************************/ -u16 sar_word(u16 d, u8 s) -{ - unsigned int cnt, res, cf, mask, sf; - - sf = d & 0x8000; - cnt = s % 16; - res = d; - if (cnt > 0 && cnt < 16) { - mask = (1 << (16 - cnt)) - 1; - cf = d & (1 << (cnt - 1)); - res = (d >> cnt) & mask; - CONDITIONAL_SET_FLAG(cf, F_CF); - if (sf) { - res |= ~mask; - } - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - } else if (cnt >= 16) { - if (sf) { - res = 0xffff; - SET_FLAG(F_CF); - CLEAR_FLAG(F_ZF); - SET_FLAG(F_SF); - SET_FLAG(F_PF); - } else { - res = 0; - CLEAR_FLAG(F_CF); - SET_FLAG(F_ZF); - CLEAR_FLAG(F_SF); - CLEAR_FLAG(F_PF); - } - } - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the SAR instruction and side effects. -****************************************************************************/ -u32 sar_long(u32 d, u8 s) -{ - u32 cnt, res, cf, mask, sf; - - sf = d & 0x80000000; - cnt = s % 32; - res = d; - if (cnt > 0 && cnt < 32) { - mask = (1 << (32 - cnt)) - 1; - cf = d & (1 << (cnt - 1)); - res = (d >> cnt) & mask; - CONDITIONAL_SET_FLAG(cf, F_CF); - if (sf) { - res |= ~mask; - } - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - } else if (cnt >= 32) { - if (sf) { - res = 0xffffffff; - SET_FLAG(F_CF); - CLEAR_FLAG(F_ZF); - SET_FLAG(F_SF); - SET_FLAG(F_PF); - } else { - res = 0; - CLEAR_FLAG(F_CF); - SET_FLAG(F_ZF); - CLEAR_FLAG(F_SF); - CLEAR_FLAG(F_PF); - } - } - return res; -} - -/**************************************************************************** -REMARKS: -Implements the SHLD instruction and side effects. -****************************************************************************/ -u16 shld_word (u16 d, u16 fill, u8 s) -{ - unsigned int cnt, res, cf; - - if (s < 16) { - cnt = s % 16; - if (cnt > 0) { - res = (d << cnt) | (fill >> (16-cnt)); - cf = d & (1 << (16 - cnt)); - CONDITIONAL_SET_FLAG(cf, F_CF); - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - } else { - res = d; - } - if (cnt == 1) { - CONDITIONAL_SET_FLAG((((res & 0x8000) == 0x8000) ^ - (ACCESS_FLAG(F_CF) != 0)), F_OF); - } else { - CLEAR_FLAG(F_OF); - } - } else { - res = 0; - CONDITIONAL_SET_FLAG((d << (s-1)) & 0x8000, F_CF); - CLEAR_FLAG(F_OF); - CLEAR_FLAG(F_SF); - SET_FLAG(F_PF); - SET_FLAG(F_ZF); - } - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the SHLD instruction and side effects. -****************************************************************************/ -u32 shld_long (u32 d, u32 fill, u8 s) -{ - unsigned int cnt, res, cf; - - if (s < 32) { - cnt = s % 32; - if (cnt > 0) { - res = (d << cnt) | (fill >> (32-cnt)); - cf = d & (1 << (32 - cnt)); - CONDITIONAL_SET_FLAG(cf, F_CF); - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - } else { - res = d; - } - if (cnt == 1) { - CONDITIONAL_SET_FLAG((((res & 0x80000000) == 0x80000000) ^ - (ACCESS_FLAG(F_CF) != 0)), F_OF); - } else { - CLEAR_FLAG(F_OF); - } - } else { - res = 0; - CONDITIONAL_SET_FLAG((d << (s-1)) & 0x80000000, F_CF); - CLEAR_FLAG(F_OF); - CLEAR_FLAG(F_SF); - SET_FLAG(F_PF); - SET_FLAG(F_ZF); - } - return res; -} - -/**************************************************************************** -REMARKS: -Implements the SHRD instruction and side effects. -****************************************************************************/ -u16 shrd_word (u16 d, u16 fill, u8 s) -{ - unsigned int cnt, res, cf; - - if (s < 16) { - cnt = s % 16; - if (cnt > 0) { - cf = d & (1 << (cnt - 1)); - res = (d >> cnt) | (fill << (16 - cnt)); - CONDITIONAL_SET_FLAG(cf, F_CF); - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - } else { - res = d; - } - - if (cnt == 1) { - CONDITIONAL_SET_FLAG(XOR2(res >> 14), F_OF); - } else { - CLEAR_FLAG(F_OF); - } - } else { - res = 0; - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - SET_FLAG(F_ZF); - CLEAR_FLAG(F_SF); - CLEAR_FLAG(F_PF); - } - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the SHRD instruction and side effects. -****************************************************************************/ -u32 shrd_long (u32 d, u32 fill, u8 s) -{ - unsigned int cnt, res, cf; - - if (s < 32) { - cnt = s % 32; - if (cnt > 0) { - cf = d & (1 << (cnt - 1)); - res = (d >> cnt) | (fill << (32 - cnt)); - CONDITIONAL_SET_FLAG(cf, F_CF); - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - } else { - res = d; - } - if (cnt == 1) { - CONDITIONAL_SET_FLAG(XOR2(res >> 30), F_OF); - } else { - CLEAR_FLAG(F_OF); - } - } else { - res = 0; - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - SET_FLAG(F_ZF); - CLEAR_FLAG(F_SF); - CLEAR_FLAG(F_PF); - } - return res; -} - -/**************************************************************************** -REMARKS: -Implements the SBB instruction and side effects. -****************************************************************************/ -u8 sbb_byte(u8 d, u8 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 bc; - - if (ACCESS_FLAG(F_CF)) - res = d - s - 1; - else - res = d - s; - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG((res & 0xff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain. See note at top */ - bc = (res & (~d | s)) | (~d & s); - CONDITIONAL_SET_FLAG(bc & 0x80, F_CF); - CONDITIONAL_SET_FLAG(XOR2(bc >> 6), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the SBB instruction and side effects. -****************************************************************************/ -u16 sbb_word(u16 d, u16 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 bc; - - if (ACCESS_FLAG(F_CF)) - res = d - s - 1; - else - res = d - s; - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain. See note at top */ - bc = (res & (~d | s)) | (~d & s); - CONDITIONAL_SET_FLAG(bc & 0x8000, F_CF); - CONDITIONAL_SET_FLAG(XOR2(bc >> 14), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the SBB instruction and side effects. -****************************************************************************/ -u32 sbb_long(u32 d, u32 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 bc; - - if (ACCESS_FLAG(F_CF)) - res = d - s - 1; - else - res = d - s; - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain. See note at top */ - bc = (res & (~d | s)) | (~d & s); - CONDITIONAL_SET_FLAG(bc & 0x80000000, F_CF); - CONDITIONAL_SET_FLAG(XOR2(bc >> 30), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the SUB instruction and side effects. -****************************************************************************/ -u8 sub_byte(u8 d, u8 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 bc; - - res = d - s; - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG((res & 0xff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain. See note at top */ - bc = (res & (~d | s)) | (~d & s); - CONDITIONAL_SET_FLAG(bc & 0x80, F_CF); - CONDITIONAL_SET_FLAG(XOR2(bc >> 6), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return (u8)res; -} - -/**************************************************************************** -REMARKS: -Implements the SUB instruction and side effects. -****************************************************************************/ -u16 sub_word(u16 d, u16 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 bc; - - res = d - s; - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG((res & 0xffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain. See note at top */ - bc = (res & (~d | s)) | (~d & s); - CONDITIONAL_SET_FLAG(bc & 0x8000, F_CF); - CONDITIONAL_SET_FLAG(XOR2(bc >> 14), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return (u16)res; -} - -/**************************************************************************** -REMARKS: -Implements the SUB instruction and side effects. -****************************************************************************/ -u32 sub_long(u32 d, u32 s) -{ - register u32 res; /* all operands in native machine order */ - register u32 bc; - - res = d - s; - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG((res & 0xffffffff) == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - - /* calculate the borrow chain. See note at top */ - bc = (res & (~d | s)) | (~d & s); - CONDITIONAL_SET_FLAG(bc & 0x80000000, F_CF); - CONDITIONAL_SET_FLAG(XOR2(bc >> 30), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the TEST instruction and side effects. -****************************************************************************/ -void test_byte(u8 d, u8 s) -{ - register u32 res; /* all operands in native machine order */ - - res = d & s; - - CLEAR_FLAG(F_OF); - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - /* AF == dont care */ - CLEAR_FLAG(F_CF); -} - -/**************************************************************************** -REMARKS: -Implements the TEST instruction and side effects. -****************************************************************************/ -void test_word(u16 d, u16 s) -{ - register u32 res; /* all operands in native machine order */ - - res = d & s; - - CLEAR_FLAG(F_OF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - /* AF == dont care */ - CLEAR_FLAG(F_CF); -} - -/**************************************************************************** -REMARKS: -Implements the TEST instruction and side effects. -****************************************************************************/ -void test_long(u32 d, u32 s) -{ - register u32 res; /* all operands in native machine order */ - - res = d & s; - - CLEAR_FLAG(F_OF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - /* AF == dont care */ - CLEAR_FLAG(F_CF); -} - -/**************************************************************************** -REMARKS: -Implements the XOR instruction and side effects. -****************************************************************************/ -u8 xor_byte(u8 d, u8 s) -{ - register u8 res; /* all operands in native machine order */ - - res = d ^ s; - CLEAR_FLAG(F_OF); - CONDITIONAL_SET_FLAG(res & 0x80, F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res), F_PF); - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the XOR instruction and side effects. -****************************************************************************/ -u16 xor_word(u16 d, u16 s) -{ - register u16 res; /* all operands in native machine order */ - - res = d ^ s; - CLEAR_FLAG(F_OF); - CONDITIONAL_SET_FLAG(res & 0x8000, F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the XOR instruction and side effects. -****************************************************************************/ -u32 xor_long(u32 d, u32 s) -{ - register u32 res; /* all operands in native machine order */ - - res = d ^ s; - CLEAR_FLAG(F_OF); - CONDITIONAL_SET_FLAG(res & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(res == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(res & 0xff), F_PF); - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - return res; -} - -/**************************************************************************** -REMARKS: -Implements the IMUL instruction and side effects. -****************************************************************************/ -void imul_byte(u8 s) -{ - s16 res = (s16)((s8)M.x86.R_AL * (s8)s); - - M.x86.R_AX = res; - if (((M.x86.R_AL & 0x80) == 0 && M.x86.R_AH == 0x00) || - ((M.x86.R_AL & 0x80) != 0 && M.x86.R_AH == 0xFF)) { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } else { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } -} - -/**************************************************************************** -REMARKS: -Implements the IMUL instruction and side effects. -****************************************************************************/ -void imul_word(u16 s) -{ - s32 res = (s16)M.x86.R_AX * (s16)s; - - M.x86.R_AX = (u16)res; - M.x86.R_DX = (u16)(res >> 16); - if (((M.x86.R_AX & 0x8000) == 0 && M.x86.R_DX == 0x00) || - ((M.x86.R_AX & 0x8000) != 0 && M.x86.R_DX == 0xFF)) { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } else { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } -} - -/**************************************************************************** -REMARKS: -Implements the IMUL instruction and side effects. -****************************************************************************/ -void imul_long_direct(u32 *res_lo, u32* res_hi,u32 d, u32 s) -{ -#ifdef __HAS_LONG_LONG__ - s64 res = (s32)d * (s32)s; - - *res_lo = (u32)res; - *res_hi = (u32)(res >> 32); -#else - u32 d_lo,d_hi,d_sign; - u32 s_lo,s_hi,s_sign; - u32 rlo_lo,rlo_hi,rhi_lo; - - if ((d_sign = d & 0x80000000) != 0) - d = -d; - d_lo = d & 0xFFFF; - d_hi = d >> 16; - if ((s_sign = s & 0x80000000) != 0) - s = -s; - s_lo = s & 0xFFFF; - s_hi = s >> 16; - rlo_lo = d_lo * s_lo; - rlo_hi = (d_hi * s_lo + d_lo * s_hi) + (rlo_lo >> 16); - rhi_lo = d_hi * s_hi + (rlo_hi >> 16); - *res_lo = (rlo_hi << 16) | (rlo_lo & 0xFFFF); - *res_hi = rhi_lo; - if (d_sign != s_sign) { - d = ~*res_lo; - s = (((d & 0xFFFF) + 1) >> 16) + (d >> 16); - *res_lo = ~*res_lo+1; - *res_hi = ~*res_hi+(s >> 16); - } -#endif -} - -/**************************************************************************** -REMARKS: -Implements the IMUL instruction and side effects. -****************************************************************************/ -void imul_long(u32 s) -{ - imul_long_direct(&M.x86.R_EAX,&M.x86.R_EDX,M.x86.R_EAX,s); - if (((M.x86.R_EAX & 0x80000000) == 0 && M.x86.R_EDX == 0x00) || - ((M.x86.R_EAX & 0x80000000) != 0 && M.x86.R_EDX == 0xFF)) { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } else { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } -} - -/**************************************************************************** -REMARKS: -Implements the MUL instruction and side effects. -****************************************************************************/ -void mul_byte(u8 s) -{ - u16 res = (u16)(M.x86.R_AL * s); - - M.x86.R_AX = res; - if (M.x86.R_AH == 0) { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } else { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } -} - -/**************************************************************************** -REMARKS: -Implements the MUL instruction and side effects. -****************************************************************************/ -void mul_word(u16 s) -{ - u32 res = M.x86.R_AX * s; - - M.x86.R_AX = (u16)res; - M.x86.R_DX = (u16)(res >> 16); - if (M.x86.R_DX == 0) { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } else { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } -} - -/**************************************************************************** -REMARKS: -Implements the MUL instruction and side effects. -****************************************************************************/ -void mul_long(u32 s) -{ -#ifdef __HAS_LONG_LONG__ - u64 res = (u32)M.x86.R_EAX * (u32)s; - - M.x86.R_EAX = (u32)res; - M.x86.R_EDX = (u32)(res >> 32); -#else - u32 a,a_lo,a_hi; - u32 s_lo,s_hi; - u32 rlo_lo,rlo_hi,rhi_lo; - - a = M.x86.R_EAX; - a_lo = a & 0xFFFF; - a_hi = a >> 16; - s_lo = s & 0xFFFF; - s_hi = s >> 16; - rlo_lo = a_lo * s_lo; - rlo_hi = (a_hi * s_lo + a_lo * s_hi) + (rlo_lo >> 16); - rhi_lo = a_hi * s_hi + (rlo_hi >> 16); - M.x86.R_EAX = (rlo_hi << 16) | (rlo_lo & 0xFFFF); - M.x86.R_EDX = rhi_lo; -#endif - - if (M.x86.R_EDX == 0) { - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_OF); - } else { - SET_FLAG(F_CF); - SET_FLAG(F_OF); - } -} - -/**************************************************************************** -REMARKS: -Implements the IDIV instruction and side effects. -****************************************************************************/ -void idiv_byte(u8 s) -{ - s32 dvd, div, mod; - - dvd = (s16)M.x86.R_AX; - if (s == 0) { - x86emu_intr_raise(0); - return; - } - div = dvd / (s8)s; - mod = dvd % (s8)s; - if (abs(div) > 0x7f) { - x86emu_intr_raise(0); - return; - } - M.x86.R_AL = (s8) div; - M.x86.R_AH = (s8) mod; -} - -/**************************************************************************** -REMARKS: -Implements the IDIV instruction and side effects. -****************************************************************************/ -void idiv_word(u16 s) -{ - s32 dvd, div, mod; - - dvd = (((s32)M.x86.R_DX) << 16) | M.x86.R_AX; - if (s == 0) { - x86emu_intr_raise(0); - return; - } - div = dvd / (s16)s; - mod = dvd % (s16)s; - if (abs(div) > 0x7fff) { - x86emu_intr_raise(0); - return; - } - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_SF); - CONDITIONAL_SET_FLAG(div == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(mod & 0xff), F_PF); - - M.x86.R_AX = (u16)div; - M.x86.R_DX = (u16)mod; -} - -/**************************************************************************** -REMARKS: -Implements the IDIV instruction and side effects. -****************************************************************************/ -void idiv_long(u32 s) -{ -#ifdef __HAS_LONG_LONG__ - s64 dvd, div, mod; - - dvd = (((s64)M.x86.R_EDX) << 32) | M.x86.R_EAX; - if (s == 0) { - x86emu_intr_raise(0); - return; - } - div = dvd / (s32)s; - mod = dvd % (s32)s; - if (abs(div) > 0x7fffffff) { - x86emu_intr_raise(0); - return; - } -#else - s32 div = 0, mod; - s32 h_dvd = M.x86.R_EDX; - u32 l_dvd = M.x86.R_EAX; - u32 abs_s = s & 0x7FFFFFFF; - u32 abs_h_dvd = h_dvd & 0x7FFFFFFF; - u32 h_s = abs_s >> 1; - u32 l_s = abs_s << 31; - int counter = 31; - int carry; - - if (s == 0) { - x86emu_intr_raise(0); - return; - } - do { - div <<= 1; - carry = (l_dvd >= l_s) ? 0 : 1; - - if (abs_h_dvd < (h_s + carry)) { - h_s >>= 1; - l_s = abs_s << (--counter); - continue; - } else { - abs_h_dvd -= (h_s + carry); - l_dvd = carry ? ((0xFFFFFFFF - l_s) + l_dvd + 1) - : (l_dvd - l_s); - h_s >>= 1; - l_s = abs_s << (--counter); - div |= 1; - continue; - } - - } while (counter > -1); - /* overflow */ - if (abs_h_dvd || (l_dvd > abs_s)) { - x86emu_intr_raise(0); - return; - } - /* sign */ - div |= ((h_dvd & 0x10000000) ^ (s & 0x10000000)); - mod = l_dvd; - -#endif - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - CLEAR_FLAG(F_SF); - SET_FLAG(F_ZF); - CONDITIONAL_SET_FLAG(PARITY(mod & 0xff), F_PF); - - M.x86.R_EAX = (u32)div; - M.x86.R_EDX = (u32)mod; -} - -/**************************************************************************** -REMARKS: -Implements the DIV instruction and side effects. -****************************************************************************/ -void div_byte(u8 s) -{ - u32 dvd, div, mod; - - dvd = M.x86.R_AX; - if (s == 0) { - x86emu_intr_raise(0); - return; - } - div = dvd / (u8)s; - mod = dvd % (u8)s; - if (abs(div) > 0xff) { - x86emu_intr_raise(0); - return; - } - M.x86.R_AL = (u8)div; - M.x86.R_AH = (u8)mod; -} - -/**************************************************************************** -REMARKS: -Implements the DIV instruction and side effects. -****************************************************************************/ -void div_word(u16 s) -{ - u32 dvd, div, mod; - - dvd = (((u32)M.x86.R_DX) << 16) | M.x86.R_AX; - if (s == 0) { - x86emu_intr_raise(0); - return; - } - div = dvd / (u16)s; - mod = dvd % (u16)s; - if (abs(div) > 0xffff) { - x86emu_intr_raise(0); - return; - } - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_SF); - CONDITIONAL_SET_FLAG(div == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(mod & 0xff), F_PF); - - M.x86.R_AX = (u16)div; - M.x86.R_DX = (u16)mod; -} - -/**************************************************************************** -REMARKS: -Implements the DIV instruction and side effects. -****************************************************************************/ -void div_long(u32 s) -{ -#ifdef __HAS_LONG_LONG__ - u64 dvd, div, mod; - - dvd = (((u64)M.x86.R_EDX) << 32) | M.x86.R_EAX; - if (s == 0) { - x86emu_intr_raise(0); - return; - } - div = dvd / (u32)s; - mod = dvd % (u32)s; - if (abs(div) > 0xffffffff) { - x86emu_intr_raise(0); - return; - } -#else - s32 div = 0, mod; - s32 h_dvd = M.x86.R_EDX; - u32 l_dvd = M.x86.R_EAX; - - u32 h_s = s; - u32 l_s = 0; - int counter = 32; - int carry; - - if (s == 0) { - x86emu_intr_raise(0); - return; - } - do { - div <<= 1; - carry = (l_dvd >= l_s) ? 0 : 1; - - if (h_dvd < (h_s + carry)) { - h_s >>= 1; - l_s = s << (--counter); - continue; - } else { - h_dvd -= (h_s + carry); - l_dvd = carry ? ((0xFFFFFFFF - l_s) + l_dvd + 1) - : (l_dvd - l_s); - h_s >>= 1; - l_s = s << (--counter); - div |= 1; - continue; - } - - } while (counter > -1); - /* overflow */ - if (h_dvd || (l_dvd > s)) { - x86emu_intr_raise(0); - return; - } - mod = l_dvd; -#endif - CLEAR_FLAG(F_CF); - CLEAR_FLAG(F_AF); - CLEAR_FLAG(F_SF); - SET_FLAG(F_ZF); - CONDITIONAL_SET_FLAG(PARITY(mod & 0xff), F_PF); - - M.x86.R_EAX = (u32)div; - M.x86.R_EDX = (u32)mod; -} - -/**************************************************************************** -REMARKS: -Implements the IN string instruction and side effects. -****************************************************************************/ -void ins(int size) -{ - int inc = size; - - if (ACCESS_FLAG(F_DF)) { - inc = -size; - } - if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) { - /* dont care whether REPE or REPNE */ - /* in until CX is ZERO. */ - u32 count = ((M.x86.mode & SYSMODE_PREFIX_DATA) ? - M.x86.R_ECX : M.x86.R_CX); - switch (size) { - case 1: - while (count--) { - store_data_byte_abs(M.x86.R_ES, M.x86.R_DI, - (*sys_inb)(M.x86.R_DX)); - M.x86.R_DI += inc; - } - break; - - case 2: - while (count--) { - store_data_word_abs(M.x86.R_ES, M.x86.R_DI, - (*sys_inw)(M.x86.R_DX)); - M.x86.R_DI += inc; - } - break; - case 4: - while (count--) { - store_data_long_abs(M.x86.R_ES, M.x86.R_DI, - (*sys_inl)(M.x86.R_DX)); - M.x86.R_DI += inc; - break; - } - } - M.x86.R_CX = 0; - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ECX = 0; - } - M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE); - } else { - switch (size) { - case 1: - store_data_byte_abs(M.x86.R_ES, M.x86.R_DI, - (*sys_inb)(M.x86.R_DX)); - break; - case 2: - store_data_word_abs(M.x86.R_ES, M.x86.R_DI, - (*sys_inw)(M.x86.R_DX)); - break; - case 4: - store_data_long_abs(M.x86.R_ES, M.x86.R_DI, - (*sys_inl)(M.x86.R_DX)); - break; - } - M.x86.R_DI += inc; - } -} - -/**************************************************************************** -REMARKS: -Implements the OUT string instruction and side effects. -****************************************************************************/ -void outs(int size) -{ - int inc = size; - - if (ACCESS_FLAG(F_DF)) { - inc = -size; - } - if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) { - /* dont care whether REPE or REPNE */ - /* out until CX is ZERO. */ - u32 count = ((M.x86.mode & SYSMODE_PREFIX_DATA) ? - M.x86.R_ECX : M.x86.R_CX); - switch (size) { - case 1: - while (count--) { - (*sys_outb)(M.x86.R_DX, - fetch_data_byte_abs(M.x86.R_ES, M.x86.R_SI)); - M.x86.R_SI += inc; - } - break; - - case 2: - while (count--) { - (*sys_outw)(M.x86.R_DX, - fetch_data_word_abs(M.x86.R_ES, M.x86.R_SI)); - M.x86.R_SI += inc; - } - break; - case 4: - while (count--) { - (*sys_outl)(M.x86.R_DX, - fetch_data_long_abs(M.x86.R_ES, M.x86.R_SI)); - M.x86.R_SI += inc; - break; - } - } - M.x86.R_CX = 0; - if (M.x86.mode & SYSMODE_PREFIX_DATA) { - M.x86.R_ECX = 0; - } - M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE); - } else { - switch (size) { - case 1: - (*sys_outb)(M.x86.R_DX, - fetch_data_byte_abs(M.x86.R_ES, M.x86.R_SI)); - break; - case 2: - (*sys_outw)(M.x86.R_DX, - fetch_data_word_abs(M.x86.R_ES, M.x86.R_SI)); - break; - case 4: - (*sys_outl)(M.x86.R_DX, - fetch_data_long_abs(M.x86.R_ES, M.x86.R_SI)); - break; - } - M.x86.R_SI += inc; - } -} - -/**************************************************************************** -PARAMETERS: -addr - Address to fetch word from - -REMARKS: -Fetches a word from emulator memory using an absolute address. -****************************************************************************/ -u16 mem_access_word(int addr) -{ -DB( if (CHECK_MEM_ACCESS()) - x86emu_check_mem_access(addr);) - return (*sys_rdw)(addr); -} - -/**************************************************************************** -REMARKS: -Pushes a word onto the stack. - -NOTE: Do not inline this, as (*sys_wrX) is already inline! -****************************************************************************/ -void push_word(u16 w) -{ -DB( if (CHECK_SP_ACCESS()) - x86emu_check_sp_access();) - M.x86.R_SP -= 2; - (*sys_wrw)(((u32)M.x86.R_SS << 4) + M.x86.R_SP, w); -} - -/**************************************************************************** -REMARKS: -Pushes a long onto the stack. - -NOTE: Do not inline this, as (*sys_wrX) is already inline! -****************************************************************************/ -void push_long(u32 w) -{ -DB( if (CHECK_SP_ACCESS()) - x86emu_check_sp_access();) - M.x86.R_SP -= 4; - (*sys_wrl)(((u32)M.x86.R_SS << 4) + M.x86.R_SP, w); -} - -/**************************************************************************** -REMARKS: -Pops a word from the stack. - -NOTE: Do not inline this, as (*sys_rdX) is already inline! -****************************************************************************/ -u16 pop_word(void) -{ - register u16 res; - -DB( if (CHECK_SP_ACCESS()) - x86emu_check_sp_access();) - res = (*sys_rdw)(((u32)M.x86.R_SS << 4) + M.x86.R_SP); - M.x86.R_SP += 2; - return res; -} - -/**************************************************************************** -REMARKS: -Pops a long from the stack. - -NOTE: Do not inline this, as (*sys_rdX) is already inline! -****************************************************************************/ -u32 pop_long(void) -{ - register u32 res; - -DB( if (CHECK_SP_ACCESS()) - x86emu_check_sp_access();) - res = (*sys_rdl)(((u32)M.x86.R_SS << 4) + M.x86.R_SP); - M.x86.R_SP += 4; - return res; -} - diff --git a/src/hwinfo/src/x86emu/sys.c b/src/hwinfo/src/x86emu/sys.c deleted file mode 100644 index cf13517878..0000000000 --- a/src/hwinfo/src/x86emu/sys.c +++ /dev/null @@ -1,666 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: This file includes subroutines which are related to -* programmed I/O and memory access. Included in this module -* are default functions with limited usefulness. For real -* uses these functions will most likely be overriden by the -* user library. -* -****************************************************************************/ -/* $XFree86: xc/extras/x86emu/src/x86emu/sys.c,v 1.6 2002/09/16 18:05:18 eich Exp $ */ - -#include "x86emu.h" -#include "x86emu/x86emui.h" -#include "x86emu/regs.h" -#include "x86emu/debug.h" -#include "x86emu/prim_ops.h" -#ifdef IN_MODULE -#include "xf86_ansic.h" -#else -#include -#endif -/*------------------------- Global Variables ------------------------------*/ - -X86EMU_sysEnv _X86EMU_env; /* Global emulator machine state */ -X86EMU_intrFuncs _X86EMU_intrTab[256]; - -/*----------------------------- Implementation ----------------------------*/ -#if defined(__alpha__) || defined(__alpha) -/* to cope with broken egcs-1.1.2 :-(((( */ - -#define ALPHA_UALOADS -/* - * inline functions to do unaligned accesses - * from linux/include/asm-alpha/unaligned.h - */ - -/* - * EGCS 1.1 knows about arbitrary unaligned loads. Define some - * packed structures to talk about such things with. - */ - -#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) -struct __una_u64 { unsigned long x __attribute__((packed)); }; -struct __una_u32 { unsigned int x __attribute__((packed)); }; -struct __una_u16 { unsigned short x __attribute__((packed)); }; -#endif - -static __inline__ unsigned long ldq_u(unsigned long * r11) -{ -#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) - const struct __una_u64 *ptr = (const struct __una_u64 *) r11; - return ptr->x; -#else - unsigned long r1,r2; - __asm__("ldq_u %0,%3\n\t" - "ldq_u %1,%4\n\t" - "extql %0,%2,%0\n\t" - "extqh %1,%2,%1" - :"=&r" (r1), "=&r" (r2) - :"r" (r11), - "m" (*r11), - "m" (*(const unsigned long *)(7+(char *) r11))); - return r1 | r2; -#endif -} - -static __inline__ unsigned long ldl_u(unsigned int * r11) -{ -#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) - const struct __una_u32 *ptr = (const struct __una_u32 *) r11; - return ptr->x; -#else - unsigned long r1,r2; - __asm__("ldq_u %0,%3\n\t" - "ldq_u %1,%4\n\t" - "extll %0,%2,%0\n\t" - "extlh %1,%2,%1" - :"=&r" (r1), "=&r" (r2) - :"r" (r11), - "m" (*r11), - "m" (*(const unsigned long *)(3+(char *) r11))); - return r1 | r2; -#endif -} - -static __inline__ unsigned long ldw_u(unsigned short * r11) -{ -#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) - const struct __una_u16 *ptr = (const struct __una_u16 *) r11; - return ptr->x; -#else - unsigned long r1,r2; - __asm__("ldq_u %0,%3\n\t" - "ldq_u %1,%4\n\t" - "extwl %0,%2,%0\n\t" - "extwh %1,%2,%1" - :"=&r" (r1), "=&r" (r2) - :"r" (r11), - "m" (*r11), - "m" (*(const unsigned long *)(1+(char *) r11))); - return r1 | r2; -#endif -} - -/* - * Elemental unaligned stores - */ - -static __inline__ void stq_u(unsigned long r5, unsigned long * r11) -{ -#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) - struct __una_u64 *ptr = (struct __una_u64 *) r11; - ptr->x = r5; -#else - unsigned long r1,r2,r3,r4; - - __asm__("ldq_u %3,%1\n\t" - "ldq_u %2,%0\n\t" - "insqh %6,%7,%5\n\t" - "insql %6,%7,%4\n\t" - "mskqh %3,%7,%3\n\t" - "mskql %2,%7,%2\n\t" - "bis %3,%5,%3\n\t" - "bis %2,%4,%2\n\t" - "stq_u %3,%1\n\t" - "stq_u %2,%0" - :"=m" (*r11), - "=m" (*(unsigned long *)(7+(char *) r11)), - "=&r" (r1), "=&r" (r2), "=&r" (r3), "=&r" (r4) - :"r" (r5), "r" (r11)); -#endif -} - -static __inline__ void stl_u(unsigned long r5, unsigned int * r11) -{ -#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) - struct __una_u32 *ptr = (struct __una_u32 *) r11; - ptr->x = r5; -#else - unsigned long r1,r2,r3,r4; - - __asm__("ldq_u %3,%1\n\t" - "ldq_u %2,%0\n\t" - "inslh %6,%7,%5\n\t" - "insll %6,%7,%4\n\t" - "msklh %3,%7,%3\n\t" - "mskll %2,%7,%2\n\t" - "bis %3,%5,%3\n\t" - "bis %2,%4,%2\n\t" - "stq_u %3,%1\n\t" - "stq_u %2,%0" - :"=m" (*r11), - "=m" (*(unsigned long *)(3+(char *) r11)), - "=&r" (r1), "=&r" (r2), "=&r" (r3), "=&r" (r4) - :"r" (r5), "r" (r11)); -#endif -} - -static __inline__ void stw_u(unsigned long r5, unsigned short * r11) -{ -#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) - struct __una_u16 *ptr = (struct __una_u16 *) r11; - ptr->x = r5; -#else - unsigned long r1,r2,r3,r4; - - __asm__("ldq_u %3,%1\n\t" - "ldq_u %2,%0\n\t" - "inswh %6,%7,%5\n\t" - "inswl %6,%7,%4\n\t" - "mskwh %3,%7,%3\n\t" - "mskwl %2,%7,%2\n\t" - "bis %3,%5,%3\n\t" - "bis %2,%4,%2\n\t" - "stq_u %3,%1\n\t" - "stq_u %2,%0" - :"=m" (*r11), - "=m" (*(unsigned long *)(1+(char *) r11)), - "=&r" (r1), "=&r" (r2), "=&r" (r3), "=&r" (r4) - :"r" (r5), "r" (r11)); -#endif -} - -#elif defined(__GNUC__) && ((__GNUC__ < 3)) && \ - (defined (__ia64__) || defined (ia64__)) -#define IA64_UALOADS -/* - * EGCS 1.1 knows about arbitrary unaligned loads. Define some - * packed structures to talk about such things with. - */ -struct __una_u64 { unsigned long x __attribute__((packed)); }; -struct __una_u32 { unsigned int x __attribute__((packed)); }; -struct __una_u16 { unsigned short x __attribute__((packed)); }; - -static __inline__ unsigned long -__uldq (const unsigned long * r11) -{ - const struct __una_u64 *ptr = (const struct __una_u64 *) r11; - return ptr->x; -} - -static __inline__ unsigned long -uldl (const unsigned int * r11) -{ - const struct __una_u32 *ptr = (const struct __una_u32 *) r11; - return ptr->x; -} - -static __inline__ unsigned long -uldw (const unsigned short * r11) -{ - const struct __una_u16 *ptr = (const struct __una_u16 *) r11; - return ptr->x; -} - -static __inline__ void -ustq (unsigned long r5, unsigned long * r11) -{ - struct __una_u64 *ptr = (struct __una_u64 *) r11; - ptr->x = r5; -} - -static __inline__ void -ustl (unsigned long r5, unsigned int * r11) -{ - struct __una_u32 *ptr = (struct __una_u32 *) r11; - ptr->x = r5; -} - -static __inline__ void -ustw (unsigned long r5, unsigned short * r11) -{ - struct __una_u16 *ptr = (struct __una_u16 *) r11; - ptr->x = r5; -} - -#endif - -/**************************************************************************** -PARAMETERS: -addr - Emulator memory address to read - -RETURNS: -Byte value read from emulator memory. - -REMARKS: -Reads a byte value from the emulator memory. -****************************************************************************/ -u8 X86API rdb( - u32 addr) -{ - u8 val; - - if (addr > M.mem_size - 1) { - DB(printk("mem_read: address %#lx out of range!\n", addr);) - HALT_SYS(); - } - val = *(u8*)(M.mem_base + addr); -DB( if (DEBUG_MEM_TRACE()) - printk("%#08x 1 -> %#x\n", addr, val);) - return val; -} - -/**************************************************************************** -PARAMETERS: -addr - Emulator memory address to read - -RETURNS: -Word value read from emulator memory. - -REMARKS: -Reads a word value from the emulator memory. -****************************************************************************/ -u16 X86API rdw( - u32 addr) -{ - u16 val = 0; - - if (addr > M.mem_size - 2) { - DB(printk("mem_read: address %#lx out of range!\n", addr);) - HALT_SYS(); - } -#ifdef __BIG_ENDIAN__ - if (addr & 0x1) { - val = (*(u8*)(M.mem_base + addr) | - (*(u8*)(M.mem_base + addr + 1) << 8)); - } - else -#endif -#if defined(ALPHA_UALOADS) - val = ldw_u((u16*)(M.mem_base + addr)); -#elif defined(IA64_UALOADS) - val = uldw((u16*)(M.mem_base + addr)); -#else - val = *(u16*)(M.mem_base + addr); -#endif - DB( if (DEBUG_MEM_TRACE()) - printk("%#08x 2 -> %#x\n", addr, val);) - return val; -} - -/**************************************************************************** -PARAMETERS: -addr - Emulator memory address to read - -RETURNS: -Long value read from emulator memory. -REMARKS: -Reads a long value from the emulator memory. -****************************************************************************/ -u32 X86API rdl( - u32 addr) -{ - u32 val = 0; - - if (addr > M.mem_size - 4) { - DB(printk("mem_read: address %#lx out of range!\n", addr);) - HALT_SYS(); - } -#ifdef __BIG_ENDIAN__ - if (addr & 0x3) { - val = (*(u8*)(M.mem_base + addr + 0) | - (*(u8*)(M.mem_base + addr + 1) << 8) | - (*(u8*)(M.mem_base + addr + 2) << 16) | - (*(u8*)(M.mem_base + addr + 3) << 24)); - } - else -#endif -#if defined(ALPHA_UALOADS) - val = ldl_u((u32*)(M.mem_base + addr)); -#elif defined(IA64_UALOADS) - val = uldl((u32*)(M.mem_base + addr)); -#else - val = *(u32*)(M.mem_base + addr); -#endif -DB( if (DEBUG_MEM_TRACE()) - printk("%#08x 4 -> %#x\n", addr, val);) - return val; -} - -/**************************************************************************** -PARAMETERS: -addr - Emulator memory address to read -val - Value to store - -REMARKS: -Writes a byte value to emulator memory. -****************************************************************************/ -void X86API wrb( - u32 addr, - u8 val) -{ -DB( if (DEBUG_MEM_TRACE()) - printk("%#08x 1 <- %#x\n", addr, val);) - if (addr > M.mem_size - 1) { - DB(printk("mem_write: address %#lx out of range!\n", addr);) - HALT_SYS(); - } - *(u8*)(M.mem_base + addr) = val; -} - -/**************************************************************************** -PARAMETERS: -addr - Emulator memory address to read -val - Value to store - -REMARKS: -Writes a word value to emulator memory. -****************************************************************************/ -void X86API wrw( - u32 addr, - u16 val) -{ -DB( if (DEBUG_MEM_TRACE()) - printk("%#08x 2 <- %#x\n", addr, val);) - if (addr > M.mem_size - 2) { - DB(printk("mem_write: address %#lx out of range!\n", addr);) - HALT_SYS(); - } -#ifdef __BIG_ENDIAN__ - if (addr & 0x1) { - *(u8*)(M.mem_base + addr + 0) = (val >> 0) & 0xff; - *(u8*)(M.mem_base + addr + 1) = (val >> 8) & 0xff; - } - else -#endif -#if defined(ALPHA_UALOADS) - stw_u(val,(u16*)(M.mem_base + addr)); -#elif defined(IA64_UALOADS) - ustw(val,(u16*)(M.mem_base + addr)); -#else - *(u16*)(M.mem_base + addr) = val; -#endif -} - -/**************************************************************************** -PARAMETERS: -addr - Emulator memory address to read -val - Value to store - -REMARKS: -Writes a long value to emulator memory. -****************************************************************************/ -void X86API wrl( - u32 addr, - u32 val) -{ -DB( if (DEBUG_MEM_TRACE()) - printk("%#08x 4 <- %#x\n", addr, val);) - if (addr > M.mem_size - 4) { - DB(printk("mem_write: address %#lx out of range!\n", addr);) - HALT_SYS(); - } -#ifdef __BIG_ENDIAN__ - if (addr & 0x1) { - *(u8*)(M.mem_base + addr + 0) = (val >> 0) & 0xff; - *(u8*)(M.mem_base + addr + 1) = (val >> 8) & 0xff; - *(u8*)(M.mem_base + addr + 2) = (val >> 16) & 0xff; - *(u8*)(M.mem_base + addr + 3) = (val >> 24) & 0xff; - } - else -#endif -#if defined(ALPHA_UALOADS) - stl_u(val,(u32*)(M.mem_base + addr)); -#elif defined(IA64_UALOADS) - ustl(val,(u32*)(M.mem_base + addr)); -#else - *(u32*)(M.mem_base + addr) = val; -#endif -} - -/**************************************************************************** -PARAMETERS: -addr - PIO address to read -RETURN: -0 -REMARKS: -Default PIO byte read function. Doesn't perform real inb. -****************************************************************************/ -static u8 X86API p_inb( - X86EMU_pioAddr addr) -{ -DB( if (DEBUG_IO_TRACE()) - printk("inb %#04x \n", addr);) - return 0; -} - -/**************************************************************************** -PARAMETERS: -addr - PIO address to read -RETURN: -0 -REMARKS: -Default PIO word read function. Doesn't perform real inw. -****************************************************************************/ -static u16 X86API p_inw( - X86EMU_pioAddr addr) -{ -DB( if (DEBUG_IO_TRACE()) - printk("inw %#04x \n", addr);) - return 0; -} - -/**************************************************************************** -PARAMETERS: -addr - PIO address to read -RETURN: -0 -REMARKS: -Default PIO long read function. Doesn't perform real inl. -****************************************************************************/ -static u32 X86API p_inl( - X86EMU_pioAddr addr) -{ -DB( if (DEBUG_IO_TRACE()) - printk("inl %#04x \n", addr);) - return 0; -} - -/**************************************************************************** -PARAMETERS: -addr - PIO address to write -val - Value to store -REMARKS: -Default PIO byte write function. Doesn't perform real outb. -****************************************************************************/ -static void X86API p_outb( - X86EMU_pioAddr addr, - u8 val) -{ -DB( if (DEBUG_IO_TRACE()) - printk("outb %#02x -> %#04x \n", val, addr);) - return; -} - -/**************************************************************************** -PARAMETERS: -addr - PIO address to write -val - Value to store -REMARKS: -Default PIO word write function. Doesn't perform real outw. -****************************************************************************/ -static void X86API p_outw( - X86EMU_pioAddr addr, - u16 val) -{ -DB( if (DEBUG_IO_TRACE()) - printk("outw %#04x -> %#04x \n", val, addr);) - return; -} - -/**************************************************************************** -PARAMETERS: -addr - PIO address to write -val - Value to store -REMARKS: -Default PIO ;ong write function. Doesn't perform real outl. -****************************************************************************/ -static void X86API p_outl( - X86EMU_pioAddr addr, - u32 val) -{ -DB( if (DEBUG_IO_TRACE()) - printk("outl %#08x -> %#04x \n", val, addr);) - return; -} - -/*------------------------- Global Variables ------------------------------*/ - -u8 (X86APIP sys_rdb)(u32 addr) = rdb; -u16 (X86APIP sys_rdw)(u32 addr) = rdw; -u32 (X86APIP sys_rdl)(u32 addr) = rdl; -void (X86APIP sys_wrb)(u32 addr,u8 val) = wrb; -void (X86APIP sys_wrw)(u32 addr,u16 val) = wrw; -void (X86APIP sys_wrl)(u32 addr,u32 val) = wrl; -u8 (X86APIP sys_inb)(X86EMU_pioAddr addr) = p_inb; -u16 (X86APIP sys_inw)(X86EMU_pioAddr addr) = p_inw; -u32 (X86APIP sys_inl)(X86EMU_pioAddr addr) = p_inl; -void (X86APIP sys_outb)(X86EMU_pioAddr addr, u8 val) = p_outb; -void (X86APIP sys_outw)(X86EMU_pioAddr addr, u16 val) = p_outw; -void (X86APIP sys_outl)(X86EMU_pioAddr addr, u32 val) = p_outl; - -/*----------------------------- Setup -------------------------------------*/ - -/**************************************************************************** -PARAMETERS: -funcs - New memory function pointers to make active - -REMARKS: -This function is used to set the pointers to functions which access -memory space, allowing the user application to override these functions -and hook them out as necessary for their application. -****************************************************************************/ -void X86EMU_setupMemFuncs( - X86EMU_memFuncs *funcs) -{ - sys_rdb = funcs->rdb; - sys_rdw = funcs->rdw; - sys_rdl = funcs->rdl; - sys_wrb = funcs->wrb; - sys_wrw = funcs->wrw; - sys_wrl = funcs->wrl; -} - -/**************************************************************************** -PARAMETERS: -funcs - New programmed I/O function pointers to make active - -REMARKS: -This function is used to set the pointers to functions which access -I/O space, allowing the user application to override these functions -and hook them out as necessary for their application. -****************************************************************************/ -void X86EMU_setupPioFuncs( - X86EMU_pioFuncs *funcs) -{ - sys_inb = funcs->inb; - sys_inw = funcs->inw; - sys_inl = funcs->inl; - sys_outb = funcs->outb; - sys_outw = funcs->outw; - sys_outl = funcs->outl; -} - -/**************************************************************************** -PARAMETERS: -funcs - New interrupt vector table to make active - -REMARKS: -This function is used to set the pointers to functions which handle -interrupt processing in the emulator, allowing the user application to -hook interrupts as necessary for their application. Any interrupts that -are not hooked by the user application, and reflected and handled internally -in the emulator via the interrupt vector table. This allows the application -to get control when the code being emulated executes specific software -interrupts. -****************************************************************************/ -void X86EMU_setupIntrFuncs( - X86EMU_intrFuncs funcs[]) -{ - int i; - - for (i=0; i < 256; i++) - _X86EMU_intrTab[i] = NULL; - if (funcs) { - for (i = 0; i < 256; i++) - _X86EMU_intrTab[i] = funcs[i]; - } -} - -/**************************************************************************** -PARAMETERS: -int - New software interrupt to prepare for - -REMARKS: -This function is used to set up the emulator state to exceute a software -interrupt. This can be used by the user application code to allow an -interrupt to be hooked, examined and then reflected back to the emulator -so that the code in the emulator will continue processing the software -interrupt as per normal. This essentially allows system code to actively -hook and handle certain software interrupts as necessary. -****************************************************************************/ -void X86EMU_prepareForInt( - int num) -{ - push_word((u16)M.x86.R_FLG); - CLEAR_FLAG(F_IF); - CLEAR_FLAG(F_TF); - push_word(M.x86.R_CS); - M.x86.R_CS = mem_access_word(num * 4 + 2); - push_word(M.x86.R_IP); - M.x86.R_IP = mem_access_word(num * 4); - M.x86.intr = 0; -} diff --git a/src/hwinfo/src/x86emu/validate.c b/src/hwinfo/src/x86emu/validate.c deleted file mode 100644 index 239f6c1f34..0000000000 --- a/src/hwinfo/src/x86emu/validate.c +++ /dev/null @@ -1,765 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: Watcom C 10.6 or later -* Environment: 32-bit DOS -* Developer: Kendall Bennett -* -* Description: Program to validate the x86 emulator library for -* correctness. We run the emulator primitive operations -* functions against the real x86 CPU, and compare the result -* and flags to ensure correctness. -* -* We use inline assembler to compile and build this program. -* -****************************************************************************/ - -#include -#include -#include -#include -#include "x86emu.h" -#include "x86emu/prim_asm.h" - -/*-------------------------- Implementation -------------------------------*/ - -#define true 1 -#define false 0 - -#define ALL_FLAGS (F_CF | F_PF | F_AF | F_ZF | F_SF | F_OF) - -#define VAL_START_BINARY(parm_type,res_type,dmax,smax,dincr,sincr) \ -{ \ - parm_type d,s; \ - res_type r,r_asm; \ - ulong flags,inflags; \ - int f,failed = false; \ - char buf1[80],buf2[80]; \ - for (d = 0; d < dmax; d += dincr) { \ - for (s = 0; s < smax; s += sincr) { \ - M.x86.R_EFLG = inflags = flags = def_flags; \ - for (f = 0; f < 2; f++) { - -#define VAL_TEST_BINARY(name) \ - r_asm = name##_asm(&flags,d,s); \ - r = name(d,s); \ - if (r != r_asm || M.x86.R_EFLG != flags) \ - failed = true; \ - if (failed || trace) { - -#define VAL_TEST_BINARY_VOID(name) \ - name##_asm(&flags,d,s); \ - name(d,s); \ - r = r_asm = 0; \ - if (M.x86.R_EFLG != flags) \ - failed = true; \ - if (failed || trace) { - -#define VAL_FAIL_BYTE_BYTE_BINARY(name) \ - if (failed) \ - printk("fail\n"); \ - printk("0x%02X = %-15s(0x%02X,0x%02X), flags = %s -> %s\n", \ - r, #name, d, s, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%02X = %-15s(0x%02X,0x%02X), flags = %s -> %s\n", \ - r_asm, #name"_asm", d, s, print_flags(buf1,inflags), print_flags(buf2,flags)); - -#define VAL_FAIL_WORD_WORD_BINARY(name) \ - if (failed) \ - printk("fail\n"); \ - printk("0x%04X = %-15s(0x%04X,0x%04X), flags = %s -> %s\n", \ - r, #name, d, s, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%04X = %-15s(0x%04X,0x%04X), flags = %s -> %s\n", \ - r_asm, #name"_asm", d, s, print_flags(buf1,inflags), print_flags(buf2,flags)); - -#define VAL_FAIL_LONG_LONG_BINARY(name) \ - if (failed) \ - printk("fail\n"); \ - printk("0x%08X = %-15s(0x%08X,0x%08X), flags = %s -> %s\n", \ - r, #name, d, s, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%08X = %-15s(0x%08X,0x%08X), flags = %s -> %s\n", \ - r_asm, #name"_asm", d, s, print_flags(buf1,inflags), print_flags(buf2,flags)); - -#define VAL_END_BINARY() \ - } \ - M.x86.R_EFLG = inflags = flags = def_flags | (ALL_FLAGS & ~F_OF); \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (!failed) \ - printk("passed\n"); \ -} - -#define VAL_BYTE_BYTE_BINARY(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_BINARY(u8,u8,0xFF,0xFF,1,1) \ - VAL_TEST_BINARY(name) \ - VAL_FAIL_BYTE_BYTE_BINARY(name) \ - VAL_END_BINARY() - -#define VAL_WORD_WORD_BINARY(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_BINARY(u16,u16,0xFF00,0xFF00,0x100,0x100) \ - VAL_TEST_BINARY(name) \ - VAL_FAIL_WORD_WORD_BINARY(name) \ - VAL_END_BINARY() - -#define VAL_LONG_LONG_BINARY(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_BINARY(u32,u32,0xFF000000,0xFF000000,0x1000000,0x1000000) \ - VAL_TEST_BINARY(name) \ - VAL_FAIL_LONG_LONG_BINARY(name) \ - VAL_END_BINARY() - -#define VAL_VOID_BYTE_BINARY(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_BINARY(u8,u8,0xFF,0xFF,1,1) \ - VAL_TEST_BINARY_VOID(name) \ - VAL_FAIL_BYTE_BYTE_BINARY(name) \ - VAL_END_BINARY() - -#define VAL_VOID_WORD_BINARY(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_BINARY(u16,u16,0xFF00,0xFF00,0x100,0x100) \ - VAL_TEST_BINARY_VOID(name) \ - VAL_FAIL_WORD_WORD_BINARY(name) \ - VAL_END_BINARY() - -#define VAL_VOID_LONG_BINARY(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_BINARY(u32,u32,0xFF000000,0xFF000000,0x1000000,0x1000000) \ - VAL_TEST_BINARY_VOID(name) \ - VAL_FAIL_LONG_LONG_BINARY(name) \ - VAL_END_BINARY() - -#define VAL_BYTE_ROTATE(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_BINARY(u8,u8,0xFF,8,1,1) \ - VAL_TEST_BINARY(name) \ - VAL_FAIL_BYTE_BYTE_BINARY(name) \ - VAL_END_BINARY() - -#define VAL_WORD_ROTATE(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_BINARY(u16,u16,0xFF00,16,0x100,1) \ - VAL_TEST_BINARY(name) \ - VAL_FAIL_WORD_WORD_BINARY(name) \ - VAL_END_BINARY() - -#define VAL_LONG_ROTATE(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_BINARY(u32,u32,0xFF000000,32,0x1000000,1) \ - VAL_TEST_BINARY(name) \ - VAL_FAIL_LONG_LONG_BINARY(name) \ - VAL_END_BINARY() - -#define VAL_START_TERNARY(parm_type,res_type,dmax,smax,dincr,sincr,maxshift)\ -{ \ - parm_type d,s; \ - res_type r,r_asm; \ - u8 shift; \ - u32 flags,inflags; \ - int f,failed = false; \ - char buf1[80],buf2[80]; \ - for (d = 0; d < dmax; d += dincr) { \ - for (s = 0; s < smax; s += sincr) { \ - for (shift = 0; shift < maxshift; shift += 1) { \ - M.x86.R_EFLG = inflags = flags = def_flags; \ - for (f = 0; f < 2; f++) { - -#define VAL_TEST_TERNARY(name) \ - r_asm = name##_asm(&flags,d,s,shift); \ - r = name(d,s,shift); \ - if (r != r_asm || M.x86.R_EFLG != flags) \ - failed = true; \ - if (failed || trace) { - -#define VAL_FAIL_WORD_WORD_TERNARY(name) \ - if (failed) \ - printk("fail\n"); \ - printk("0x%04X = %-15s(0x%04X,0x%04X,%d), flags = %s -> %s\n", \ - r, #name, d, s, shift, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%04X = %-15s(0x%04X,0x%04X,%d), flags = %s -> %s\n", \ - r_asm, #name"_asm", d, s, shift, print_flags(buf1,inflags), print_flags(buf2,flags)); - -#define VAL_FAIL_LONG_LONG_TERNARY(name) \ - if (failed) \ - printk("fail\n"); \ - printk("0x%08X = %-15s(0x%08X,0x%08X,%d), flags = %s -> %s\n", \ - r, #name, d, s, shift, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%08X = %-15s(0x%08X,0x%08X,%d), flags = %s -> %s\n", \ - r_asm, #name"_asm", d, s, shift, print_flags(buf1,inflags), print_flags(buf2,flags)); - -#define VAL_END_TERNARY() \ - } \ - M.x86.R_EFLG = inflags = flags = def_flags | (ALL_FLAGS & ~F_OF); \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (!failed) \ - printk("passed\n"); \ -} - -#define VAL_WORD_ROTATE_DBL(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_TERNARY(u16,u16,0xFF00,0xFF00,0x100,0x100,16) \ - VAL_TEST_TERNARY(name) \ - VAL_FAIL_WORD_WORD_TERNARY(name) \ - VAL_END_TERNARY() - -#define VAL_LONG_ROTATE_DBL(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_TERNARY(u32,u32,0xFF000000,0xFF000000,0x1000000,0x1000000,32) \ - VAL_TEST_TERNARY(name) \ - VAL_FAIL_LONG_LONG_TERNARY(name) \ - VAL_END_TERNARY() - -#define VAL_START_UNARY(parm_type,max,incr) \ -{ \ - parm_type d,r,r_asm; \ - u32 flags,inflags; \ - int f,failed = false; \ - char buf1[80],buf2[80]; \ - for (d = 0; d < max; d += incr) { \ - M.x86.R_EFLG = inflags = flags = def_flags; \ - for (f = 0; f < 2; f++) { - -#define VAL_TEST_UNARY(name) \ - r_asm = name##_asm(&flags,d); \ - r = name(d); \ - if (r != r_asm || M.x86.R_EFLG != flags) { \ - failed = true; - -#define VAL_FAIL_BYTE_UNARY(name) \ - printk("fail\n"); \ - printk("0x%02X = %-15s(0x%02X), flags = %s -> %s\n", \ - r, #name, d, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%02X = %-15s(0x%02X), flags = %s -> %s\n", \ - r_asm, #name"_asm", d, print_flags(buf1,inflags), print_flags(buf2,flags)); - -#define VAL_FAIL_WORD_UNARY(name) \ - printk("fail\n"); \ - printk("0x%04X = %-15s(0x%04X), flags = %s -> %s\n", \ - r, #name, d, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%04X = %-15s(0x%04X), flags = %s -> %s\n", \ - r_asm, #name"_asm", d, print_flags(buf1,inflags), print_flags(buf2,flags)); - -#define VAL_FAIL_LONG_UNARY(name) \ - printk("fail\n"); \ - printk("0x%08X = %-15s(0x%08X), flags = %s -> %s\n", \ - r, #name, d, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%08X = %-15s(0x%08X), flags = %s -> %s\n", \ - r_asm, #name"_asm", d, print_flags(buf1,inflags), print_flags(buf2,flags)); - -#define VAL_END_UNARY() \ - } \ - M.x86.R_EFLG = inflags = flags = def_flags | ALL_FLAGS; \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (!failed) \ - printk("passed\n"); \ -} - -#define VAL_BYTE_UNARY(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_UNARY(u8,0xFF,0x1) \ - VAL_TEST_UNARY(name) \ - VAL_FAIL_BYTE_UNARY(name) \ - VAL_END_UNARY() - -#define VAL_WORD_UNARY(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_UNARY(u16,0xFF00,0x100) \ - VAL_TEST_UNARY(name) \ - VAL_FAIL_WORD_UNARY(name) \ - VAL_END_UNARY() - -#define VAL_WORD_BYTE_UNARY(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_UNARY(u16,0xFF,0x1) \ - VAL_TEST_UNARY(name) \ - VAL_FAIL_WORD_UNARY(name) \ - VAL_END_UNARY() - -#define VAL_LONG_UNARY(name) \ - printk("Validating %s ... ", #name); \ - VAL_START_UNARY(u32,0xFF000000,0x1000000) \ - VAL_TEST_UNARY(name) \ - VAL_FAIL_LONG_UNARY(name) \ - VAL_END_UNARY() - -#define VAL_BYTE_MUL(name) \ - printk("Validating %s ... ", #name); \ -{ \ - u8 d,s; \ - u16 r,r_asm; \ - u32 flags,inflags; \ - int f,failed = false; \ - char buf1[80],buf2[80]; \ - for (d = 0; d < 0xFF; d += 1) { \ - for (s = 0; s < 0xFF; s += 1) { \ - M.x86.R_EFLG = inflags = flags = def_flags; \ - for (f = 0; f < 2; f++) { \ - name##_asm(&flags,&r_asm,d,s); \ - M.x86.R_AL = d; \ - name(s); \ - r = M.x86.R_AX; \ - if (r != r_asm || M.x86.R_EFLG != flags) \ - failed = true; \ - if (failed || trace) { \ - if (failed) \ - printk("fail\n"); \ - printk("0x%04X = %-15s(0x%02X,0x%02X), flags = %s -> %s\n", \ - r, #name, d, s, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%04X = %-15s(0x%02X,0x%02X), flags = %s -> %s\n", \ - r_asm, #name"_asm", d, s, print_flags(buf1,inflags), print_flags(buf2,flags)); \ - } \ - M.x86.R_EFLG = inflags = flags = def_flags | (ALL_FLAGS & ~F_OF); \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (!failed) \ - printk("passed\n"); \ -} - -#define VAL_WORD_MUL(name) \ - printk("Validating %s ... ", #name); \ -{ \ - u16 d,s; \ - u16 r_lo,r_asm_lo; \ - u16 r_hi,r_asm_hi; \ - u32 flags,inflags; \ - int f,failed = false; \ - char buf1[80],buf2[80]; \ - for (d = 0; d < 0xFF00; d += 0x100) { \ - for (s = 0; s < 0xFF00; s += 0x100) { \ - M.x86.R_EFLG = inflags = flags = def_flags; \ - for (f = 0; f < 2; f++) { \ - name##_asm(&flags,&r_asm_lo,&r_asm_hi,d,s); \ - M.x86.R_AX = d; \ - name(s); \ - r_lo = M.x86.R_AX; \ - r_hi = M.x86.R_DX; \ - if (r_lo != r_asm_lo || r_hi != r_asm_hi || M.x86.R_EFLG != flags)\ - failed = true; \ - if (failed || trace) { \ - if (failed) \ - printk("fail\n"); \ - printk("0x%04X:0x%04X = %-15s(0x%04X,0x%04X), flags = %s -> %s\n", \ - r_hi,r_lo, #name, d, s, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%04X:0x%04X = %-15s(0x%04X,0x%04X), flags = %s -> %s\n", \ - r_asm_hi,r_asm_lo, #name"_asm", d, s, print_flags(buf1,inflags), print_flags(buf2,flags)); \ - } \ - M.x86.R_EFLG = inflags = flags = def_flags | (ALL_FLAGS & ~F_OF); \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (!failed) \ - printk("passed\n"); \ -} - -#define VAL_LONG_MUL(name) \ - printk("Validating %s ... ", #name); \ -{ \ - u32 d,s; \ - u32 r_lo,r_asm_lo; \ - u32 r_hi,r_asm_hi; \ - u32 flags,inflags; \ - int f,failed = false; \ - char buf1[80],buf2[80]; \ - for (d = 0; d < 0xFF000000; d += 0x1000000) { \ - for (s = 0; s < 0xFF000000; s += 0x1000000) { \ - M.x86.R_EFLG = inflags = flags = def_flags; \ - for (f = 0; f < 2; f++) { \ - name##_asm(&flags,&r_asm_lo,&r_asm_hi,d,s); \ - M.x86.R_EAX = d; \ - name(s); \ - r_lo = M.x86.R_EAX; \ - r_hi = M.x86.R_EDX; \ - if (r_lo != r_asm_lo || r_hi != r_asm_hi || M.x86.R_EFLG != flags)\ - failed = true; \ - if (failed || trace) { \ - if (failed) \ - printk("fail\n"); \ - printk("0x%08X:0x%08X = %-15s(0x%08X,0x%08X), flags = %s -> %s\n", \ - r_hi,r_lo, #name, d, s, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%08X:0x%08X = %-15s(0x%08X,0x%08X), flags = %s -> %s\n", \ - r_asm_hi,r_asm_lo, #name"_asm", d, s, print_flags(buf1,inflags), print_flags(buf2,flags)); \ - } \ - M.x86.R_EFLG = inflags = flags = def_flags | (ALL_FLAGS & ~F_OF); \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (!failed) \ - printk("passed\n"); \ -} - -#define VAL_BYTE_DIV(name) \ - printk("Validating %s ... ", #name); \ -{ \ - u16 d,s; \ - u8 r_quot,r_rem,r_asm_quot,r_asm_rem; \ - u32 flags,inflags; \ - int f,failed = false; \ - char buf1[80],buf2[80]; \ - for (d = 0; d < 0xFF00; d += 0x100) { \ - for (s = 1; s < 0xFF; s += 1) { \ - M.x86.R_EFLG = inflags = flags = def_flags; \ - for (f = 0; f < 2; f++) { \ - M.x86.intr = 0; \ - M.x86.R_AX = d; \ - name(s); \ - r_quot = M.x86.R_AL; \ - r_rem = M.x86.R_AH; \ - if (M.x86.intr & INTR_SYNCH) \ - continue; \ - name##_asm(&flags,&r_asm_quot,&r_asm_rem,d,s); \ - if (r_quot != r_asm_quot || r_rem != r_asm_rem || M.x86.R_EFLG != flags) \ - failed = true; \ - if (failed || trace) { \ - if (failed) \ - printk("fail\n"); \ - printk("0x%02X:0x%02X = %-15s(0x%04X,0x%02X), flags = %s -> %s\n", \ - r_quot, r_rem, #name, d, s, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%02X:0x%02X = %-15s(0x%04X,0x%02X), flags = %s -> %s\n", \ - r_asm_quot, r_asm_rem, #name"_asm", d, s, print_flags(buf1,inflags), print_flags(buf2,flags)); \ - } \ - M.x86.R_EFLG = inflags = flags = def_flags | (ALL_FLAGS & ~F_OF); \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (!failed) \ - printk("passed\n"); \ -} - -#define VAL_WORD_DIV(name) \ - printk("Validating %s ... ", #name); \ -{ \ - u32 d,s; \ - u16 r_quot,r_rem,r_asm_quot,r_asm_rem; \ - u32 flags,inflags; \ - int f,failed = false; \ - char buf1[80],buf2[80]; \ - for (d = 0; d < 0xFF000000; d += 0x1000000) { \ - for (s = 0x100; s < 0xFF00; s += 0x100) { \ - M.x86.R_EFLG = inflags = flags = def_flags; \ - for (f = 0; f < 2; f++) { \ - M.x86.intr = 0; \ - M.x86.R_AX = d & 0xFFFF; \ - M.x86.R_DX = d >> 16; \ - name(s); \ - r_quot = M.x86.R_AX; \ - r_rem = M.x86.R_DX; \ - if (M.x86.intr & INTR_SYNCH) \ - continue; \ - name##_asm(&flags,&r_asm_quot,&r_asm_rem,d & 0xFFFF,d >> 16,s);\ - if (r_quot != r_asm_quot || r_rem != r_asm_rem || M.x86.R_EFLG != flags) \ - failed = true; \ - if (failed || trace) { \ - if (failed) \ - printk("fail\n"); \ - printk("0x%04X:0x%04X = %-15s(0x%08X,0x%04X), flags = %s -> %s\n", \ - r_quot, r_rem, #name, d, s, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%04X:0x%04X = %-15s(0x%08X,0x%04X), flags = %s -> %s\n", \ - r_asm_quot, r_asm_rem, #name"_asm", d, s, print_flags(buf1,inflags), print_flags(buf2,flags)); \ - } \ - M.x86.R_EFLG = inflags = flags = def_flags | (ALL_FLAGS & ~F_OF); \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (!failed) \ - printk("passed\n"); \ -} - -#define VAL_LONG_DIV(name) \ - printk("Validating %s ... ", #name); \ -{ \ - u32 d,s; \ - u32 r_quot,r_rem,r_asm_quot,r_asm_rem; \ - u32 flags,inflags; \ - int f,failed = false; \ - char buf1[80],buf2[80]; \ - for (d = 0; d < 0xFF000000; d += 0x1000000) { \ - for (s = 0x100; s < 0xFF00; s += 0x100) { \ - M.x86.R_EFLG = inflags = flags = def_flags; \ - for (f = 0; f < 2; f++) { \ - M.x86.intr = 0; \ - M.x86.R_EAX = d; \ - M.x86.R_EDX = 0; \ - name(s); \ - r_quot = M.x86.R_EAX; \ - r_rem = M.x86.R_EDX; \ - if (M.x86.intr & INTR_SYNCH) \ - continue; \ - name##_asm(&flags,&r_asm_quot,&r_asm_rem,d,0,s); \ - if (r_quot != r_asm_quot || r_rem != r_asm_rem || M.x86.R_EFLG != flags) \ - failed = true; \ - if (failed || trace) { \ - if (failed) \ - printk("fail\n"); \ - printk("0x%08X:0x%08X = %-15s(0x%08X:0x%08X,0x%08X), flags = %s -> %s\n", \ - r_quot, r_rem, #name, 0, d, s, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ - printk("0x%08X:0x%08X = %-15s(0x%08X:0x%08X,0x%08X), flags = %s -> %s\n", \ - r_asm_quot, r_asm_rem, #name"_asm", 0, d, s, print_flags(buf1,inflags), print_flags(buf2,flags)); \ - } \ - M.x86.R_EFLG = inflags = flags = def_flags | (ALL_FLAGS & ~F_OF); \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (failed) \ - break; \ - } \ - if (!failed) \ - printk("passed\n"); \ -} - -void printk(const char *fmt, ...) -{ - va_list argptr; - va_start(argptr, fmt); - vfprintf(stdout, fmt, argptr); - fflush(stdout); - va_end(argptr); -} - -char * print_flags(char *buf,ulong flags) -{ - char *separator = ""; - - buf[0] = 0; - if (flags & F_CF) { - strcat(buf,separator); - strcat(buf,"CF"); - separator = ","; - } - if (flags & F_PF) { - strcat(buf,separator); - strcat(buf,"PF"); - separator = ","; - } - if (flags & F_AF) { - strcat(buf,separator); - strcat(buf,"AF"); - separator = ","; - } - if (flags & F_ZF) { - strcat(buf,separator); - strcat(buf,"ZF"); - separator = ","; - } - if (flags & F_SF) { - strcat(buf,separator); - strcat(buf,"SF"); - separator = ","; - } - if (flags & F_OF) { - strcat(buf,separator); - strcat(buf,"OF"); - separator = ","; - } - if (separator[0] == 0) - strcpy(buf,"None"); - return buf; -} - -int main(int argc) -{ - ulong def_flags; - int trace = false; - - if (argc > 1) - trace = true; - memset(&M, 0, sizeof(M)); - def_flags = get_flags_asm() & ~ALL_FLAGS; - - VAL_WORD_UNARY(aaa_word); - VAL_WORD_UNARY(aas_word); - - VAL_WORD_UNARY(aad_word); - VAL_WORD_UNARY(aam_word); - - VAL_BYTE_BYTE_BINARY(adc_byte); - VAL_WORD_WORD_BINARY(adc_word); - VAL_LONG_LONG_BINARY(adc_long); - - VAL_BYTE_BYTE_BINARY(add_byte); - VAL_WORD_WORD_BINARY(add_word); - VAL_LONG_LONG_BINARY(add_long); - - VAL_BYTE_BYTE_BINARY(and_byte); - VAL_WORD_WORD_BINARY(and_word); - VAL_LONG_LONG_BINARY(and_long); - - VAL_BYTE_BYTE_BINARY(cmp_byte); - VAL_WORD_WORD_BINARY(cmp_word); - VAL_LONG_LONG_BINARY(cmp_long); - - VAL_BYTE_UNARY(daa_byte); - VAL_BYTE_UNARY(das_byte); // Fails for 0x9A (out of range anyway) - - VAL_BYTE_UNARY(dec_byte); - VAL_WORD_UNARY(dec_word); - VAL_LONG_UNARY(dec_long); - - VAL_BYTE_UNARY(inc_byte); - VAL_WORD_UNARY(inc_word); - VAL_LONG_UNARY(inc_long); - - VAL_BYTE_BYTE_BINARY(or_byte); - VAL_WORD_WORD_BINARY(or_word); - VAL_LONG_LONG_BINARY(or_long); - - VAL_BYTE_UNARY(neg_byte); - VAL_WORD_UNARY(neg_word); - VAL_LONG_UNARY(neg_long); - - VAL_BYTE_UNARY(not_byte); - VAL_WORD_UNARY(not_word); - VAL_LONG_UNARY(not_long); - - VAL_BYTE_ROTATE(rcl_byte); - VAL_WORD_ROTATE(rcl_word); - VAL_LONG_ROTATE(rcl_long); - - VAL_BYTE_ROTATE(rcr_byte); - VAL_WORD_ROTATE(rcr_word); - VAL_LONG_ROTATE(rcr_long); - - VAL_BYTE_ROTATE(rol_byte); - VAL_WORD_ROTATE(rol_word); - VAL_LONG_ROTATE(rol_long); - - VAL_BYTE_ROTATE(ror_byte); - VAL_WORD_ROTATE(ror_word); - VAL_LONG_ROTATE(ror_long); - - VAL_BYTE_ROTATE(shl_byte); - VAL_WORD_ROTATE(shl_word); - VAL_LONG_ROTATE(shl_long); - - VAL_BYTE_ROTATE(shr_byte); - VAL_WORD_ROTATE(shr_word); - VAL_LONG_ROTATE(shr_long); - - VAL_BYTE_ROTATE(sar_byte); - VAL_WORD_ROTATE(sar_word); - VAL_LONG_ROTATE(sar_long); - - VAL_WORD_ROTATE_DBL(shld_word); - VAL_LONG_ROTATE_DBL(shld_long); - - VAL_WORD_ROTATE_DBL(shrd_word); - VAL_LONG_ROTATE_DBL(shrd_long); - - VAL_BYTE_BYTE_BINARY(sbb_byte); - VAL_WORD_WORD_BINARY(sbb_word); - VAL_LONG_LONG_BINARY(sbb_long); - - VAL_BYTE_BYTE_BINARY(sub_byte); - VAL_WORD_WORD_BINARY(sub_word); - VAL_LONG_LONG_BINARY(sub_long); - - VAL_BYTE_BYTE_BINARY(xor_byte); - VAL_WORD_WORD_BINARY(xor_word); - VAL_LONG_LONG_BINARY(xor_long); - - VAL_VOID_BYTE_BINARY(test_byte); - VAL_VOID_WORD_BINARY(test_word); - VAL_VOID_LONG_BINARY(test_long); - - VAL_BYTE_MUL(imul_byte); - VAL_WORD_MUL(imul_word); - VAL_LONG_MUL(imul_long); - - VAL_BYTE_MUL(mul_byte); - VAL_WORD_MUL(mul_word); - VAL_LONG_MUL(mul_long); - - VAL_BYTE_DIV(idiv_byte); - VAL_WORD_DIV(idiv_word); - VAL_LONG_DIV(idiv_long); - - VAL_BYTE_DIV(div_byte); - VAL_WORD_DIV(div_word); - VAL_LONG_DIV(div_long); - - return 0; -} diff --git a/src/hwinfo/src/x86emu/x86emu/debug.h b/src/hwinfo/src/x86emu/x86emu/debug.h deleted file mode 100644 index 8abedf6160..0000000000 --- a/src/hwinfo/src/x86emu/x86emu/debug.h +++ /dev/null @@ -1,211 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: Header file for debug definitions. -* -****************************************************************************/ -/* $XFree86: xc/extras/x86emu/src/x86emu/x86emu/debug.h,v 1.3 2000/04/19 15:48:15 tsi Exp $ */ - -#ifndef __X86EMU_DEBUG_H -#define __X86EMU_DEBUG_H - -/*---------------------- Macros and type definitions ----------------------*/ - -/* checks to be enabled for "runtime" */ - -#define CHECK_IP_FETCH_F 0x1 -#define CHECK_SP_ACCESS_F 0x2 -#define CHECK_MEM_ACCESS_F 0x4 /*using regular linear pointer */ -#define CHECK_DATA_ACCESS_F 0x8 /*using segment:offset*/ - -#ifdef DEBUG -# define CHECK_IP_FETCH() (M.x86.check & CHECK_IP_FETCH_F) -# define CHECK_SP_ACCESS() (M.x86.check & CHECK_SP_ACCESS_F) -# define CHECK_MEM_ACCESS() (M.x86.check & CHECK_MEM_ACCESS_F) -# define CHECK_DATA_ACCESS() (M.x86.check & CHECK_DATA_ACCESS_F) -#else -# define CHECK_IP_FETCH() -# define CHECK_SP_ACCESS() -# define CHECK_MEM_ACCESS() -# define CHECK_DATA_ACCESS() -#endif - -#ifdef DEBUG -# define DEBUG_INSTRUMENT() (M.x86.debug & DEBUG_INSTRUMENT_F) -# define DEBUG_DECODE() (M.x86.debug & DEBUG_DECODE_F) -# define DEBUG_TRACE() (M.x86.debug & DEBUG_TRACE_F) -# define DEBUG_STEP() (M.x86.debug & DEBUG_STEP_F) -# define DEBUG_DISASSEMBLE() (M.x86.debug & DEBUG_DISASSEMBLE_F) -# define DEBUG_BREAK() (M.x86.debug & DEBUG_BREAK_F) -# define DEBUG_SVC() (M.x86.debug & DEBUG_SVC_F) -# define DEBUG_SAVE_IP_CS() (M.x86.debug & DEBUG_SAVE_IP_CS_F) - -# define DEBUG_FS() (M.x86.debug & DEBUG_FS_F) -# define DEBUG_PROC() (M.x86.debug & DEBUG_PROC_F) -# define DEBUG_SYSINT() (M.x86.debug & DEBUG_SYSINT_F) -# define DEBUG_TRACECALL() (M.x86.debug & DEBUG_TRACECALL_F) -# define DEBUG_TRACECALLREGS() (M.x86.debug & DEBUG_TRACECALL_REGS_F) -# define DEBUG_SYS() (M.x86.debug & DEBUG_SYS_F) -# define DEBUG_MEM_TRACE() (M.x86.debug & DEBUG_MEM_TRACE_F) -# define DEBUG_IO_TRACE() (M.x86.debug & DEBUG_IO_TRACE_F) -# define DEBUG_DECODE_NOPRINT() (M.x86.debug & DEBUG_DECODE_NOPRINT_F) -#else -# define DEBUG_INSTRUMENT() 0 -# define DEBUG_DECODE() 0 -# define DEBUG_TRACE() 0 -# define DEBUG_STEP() 0 -# define DEBUG_DISASSEMBLE() 0 -# define DEBUG_BREAK() 0 -# define DEBUG_SVC() 0 -# define DEBUG_SAVE_IP_CS() 0 -# define DEBUG_FS() 0 -# define DEBUG_PROC() 0 -# define DEBUG_SYSINT() 0 -# define DEBUG_TRACECALL() 0 -# define DEBUG_TRACECALLREGS() 0 -# define DEBUG_SYS() 0 -# define DEBUG_MEM_TRACE() 0 -# define DEBUG_IO_TRACE() 0 -# define DEBUG_DECODE_NOPRINT() 0 -#endif - -#ifdef DEBUG - -# define DECODE_PRINTF(x) if (DEBUG_DECODE()) \ - x86emu_decode_printf(x) -# define DECODE_PRINTF2(x,y) if (DEBUG_DECODE()) \ - x86emu_decode_printf2(x,y) - -/* - * The following allow us to look at the bytes of an instruction. The - * first INCR_INSTRN_LEN, is called everytime bytes are consumed in - * the decoding process. The SAVE_IP_CS is called initially when the - * major opcode of the instruction is accessed. - */ -#define INC_DECODED_INST_LEN(x) \ - if (DEBUG_DECODE()) \ - x86emu_inc_decoded_inst_len(x) - -#define SAVE_IP_CS(x,y) \ - if (DEBUG_DECODE() | DEBUG_TRACECALL() | DEBUG_BREAK() \ - | DEBUG_IO_TRACE() | DEBUG_SAVE_IP_CS()) { \ - M.x86.saved_cs = x; \ - M.x86.saved_ip = y; \ - } -#else -# define INC_DECODED_INST_LEN(x) -# define DECODE_PRINTF(x) -# define DECODE_PRINTF2(x,y) -# define SAVE_IP_CS(x,y) -#endif - -#ifdef DEBUG -#define TRACE_REGS() \ - if (DEBUG_DISASSEMBLE()) { \ - x86emu_just_disassemble(); \ - goto EndOfTheInstructionProcedure; \ - } \ - if (DEBUG_TRACE() || DEBUG_DECODE()) X86EMU_trace_regs() -#else -# define TRACE_REGS() -#endif - -#ifdef DEBUG -# define SINGLE_STEP() if (DEBUG_STEP()) x86emu_single_step() -#else -# define SINGLE_STEP() -#endif - -#define TRACE_AND_STEP() \ - TRACE_REGS(); \ - SINGLE_STEP() - -#ifdef DEBUG -# define START_OF_INSTR() -# define END_OF_INSTR() EndOfTheInstructionProcedure: x86emu_end_instr(); -# define END_OF_INSTR_NO_TRACE() x86emu_end_instr(); -#else -# define START_OF_INSTR() -# define END_OF_INSTR() -# define END_OF_INSTR_NO_TRACE() -#endif - -#ifdef DEBUG -# define CALL_TRACE(u,v,w,x,s) \ - if (DEBUG_TRACECALLREGS()) \ - x86emu_dump_regs(); \ - if (DEBUG_TRACECALL()) \ - printk("%04x:%04x: CALL %s%04x:%04x\n", u , v, s, w, x); -# define RETURN_TRACE(n,u,v) \ - if (DEBUG_TRACECALLREGS()) \ - x86emu_dump_regs(); \ - if (DEBUG_TRACECALL()) \ - printk("%04x:%04x: %s\n",u,v,n); -#else -# define CALL_TRACE(u,v,w,x,s) -# define RETURN_TRACE(n,u,v) -#endif - -#ifdef DEBUG -#define DB(x) x -#else -#define DB(x) -#endif - -/*-------------------------- Function Prototypes --------------------------*/ - -#ifdef __cplusplus -extern "C" { /* Use "C" linkage when in C++ mode */ -#endif - -extern void x86emu_inc_decoded_inst_len (int x); -extern void x86emu_decode_printf (char *x); -extern void x86emu_decode_printf2 (char *x, int y); -extern void x86emu_just_disassemble (void); -extern void x86emu_single_step (void); -extern void x86emu_end_instr (void); -extern void x86emu_dump_regs (void); -extern void x86emu_dump_xregs (void); -extern void x86emu_print_int_vect (u16 iv); -extern void x86emu_instrument_instruction (void); -extern void x86emu_check_ip_access (void); -extern void x86emu_check_sp_access (void); -extern void x86emu_check_mem_access (u32 p); -extern void x86emu_check_data_access (uint s, uint o); - -#ifdef __cplusplus -} /* End of "C" linkage for C++ */ -#endif - -#endif /* __X86EMU_DEBUG_H */ diff --git a/src/hwinfo/src/x86emu/x86emu/decode.h b/src/hwinfo/src/x86emu/x86emu/decode.h deleted file mode 100644 index bb2bc0bee8..0000000000 --- a/src/hwinfo/src/x86emu/x86emu/decode.h +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: Header file for instruction decoding logic. -* -****************************************************************************/ -/* $XFree86$ */ - -#ifndef __X86EMU_DECODE_H -#define __X86EMU_DECODE_H - -/*---------------------- Macros and type definitions ----------------------*/ - -/* Instruction Decoding Stuff */ - -#define FETCH_DECODE_MODRM(mod,rh,rl) fetch_decode_modrm(&mod,&rh,&rl) -#define DECODE_RM_BYTE_REGISTER(r) decode_rm_byte_register(r) -#define DECODE_RM_WORD_REGISTER(r) decode_rm_word_register(r) -#define DECODE_RM_LONG_REGISTER(r) decode_rm_long_register(r) -#define DECODE_CLEAR_SEGOVR() M.x86.mode &= ~SYSMODE_CLRMASK - -/*-------------------------- Function Prototypes --------------------------*/ - -#ifdef __cplusplus -extern "C" { /* Use "C" linkage when in C++ mode */ -#endif - -void x86emu_intr_raise (u8 type); -void fetch_decode_modrm (int *mod,int *regh,int *regl); -u8 fetch_byte_imm (void); -u16 fetch_word_imm (void); -u32 fetch_long_imm (void); -u8 fetch_data_byte (uint offset); -u8 fetch_data_byte_abs (uint segment, uint offset); -u16 fetch_data_word (uint offset); -u16 fetch_data_word_abs (uint segment, uint offset); -u32 fetch_data_long (uint offset); -u32 fetch_data_long_abs (uint segment, uint offset); -void store_data_byte (uint offset, u8 val); -void store_data_byte_abs (uint segment, uint offset, u8 val); -void store_data_word (uint offset, u16 val); -void store_data_word_abs (uint segment, uint offset, u16 val); -void store_data_long (uint offset, u32 val); -void store_data_long_abs (uint segment, uint offset, u32 val); -u8* decode_rm_byte_register(int reg); -u16* decode_rm_word_register(int reg); -u32* decode_rm_long_register(int reg); -u16* decode_rm_seg_register(int reg); -u32 decode_rm00_address(int rm); -u32 decode_rm01_address(int rm); -u32 decode_rm10_address(int rm); -u32 decode_sib_address(int sib, int mod); - -#ifdef __cplusplus -} /* End of "C" linkage for C++ */ -#endif - -#endif /* __X86EMU_DECODE_H */ diff --git a/src/hwinfo/src/x86emu/x86emu/fpu.h b/src/hwinfo/src/x86emu/x86emu/fpu.h deleted file mode 100644 index 5fb271463b..0000000000 --- a/src/hwinfo/src/x86emu/x86emu/fpu.h +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: Header file for FPU instruction decoding. -* -****************************************************************************/ - -#ifndef __X86EMU_FPU_H -#define __X86EMU_FPU_H - -#ifdef __cplusplus -extern "C" { /* Use "C" linkage when in C++ mode */ -#endif - -/* these have to be defined, whether 8087 support compiled in or not. */ - -extern void x86emuOp_esc_coprocess_d8 (u8 op1); -extern void x86emuOp_esc_coprocess_d9 (u8 op1); -extern void x86emuOp_esc_coprocess_da (u8 op1); -extern void x86emuOp_esc_coprocess_db (u8 op1); -extern void x86emuOp_esc_coprocess_dc (u8 op1); -extern void x86emuOp_esc_coprocess_dd (u8 op1); -extern void x86emuOp_esc_coprocess_de (u8 op1); -extern void x86emuOp_esc_coprocess_df (u8 op1); - -#ifdef __cplusplus -} /* End of "C" linkage for C++ */ -#endif - -#endif /* __X86EMU_FPU_H */ diff --git a/src/hwinfo/src/x86emu/x86emu/ops.h b/src/hwinfo/src/x86emu/x86emu/ops.h deleted file mode 100644 index 65ea676543..0000000000 --- a/src/hwinfo/src/x86emu/x86emu/ops.h +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: Header file for operand decoding functions. -* -****************************************************************************/ - -#ifndef __X86EMU_OPS_H -#define __X86EMU_OPS_H - -extern void (*x86emu_optab[0x100])(u8 op1); -extern void (*x86emu_optab2[0x100])(u8 op2); - -#endif /* __X86EMU_OPS_H */ diff --git a/src/hwinfo/src/x86emu/x86emu/prim_asm.h b/src/hwinfo/src/x86emu/x86emu/prim_asm.h deleted file mode 100644 index 041255f186..0000000000 --- a/src/hwinfo/src/x86emu/x86emu/prim_asm.h +++ /dev/null @@ -1,971 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: Watcom C++ 10.6 or later -* Environment: Any -* Developer: Kendall Bennett -* -* Description: Inline assembler versions of the primitive operand -* functions for faster performance. At the moment this is -* x86 inline assembler, but these functions could be replaced -* with native inline assembler for each supported processor -* platform. -* -****************************************************************************/ -/* $XFree86$ */ - -#ifndef __X86EMU_PRIM_ASM_H -#define __X86EMU_PRIM_ASM_H - -#ifdef __WATCOMC__ - -#ifndef VALIDATE -#define __HAVE_INLINE_ASSEMBLER__ -#endif - -u32 get_flags_asm(void); -#pragma aux get_flags_asm = \ - "pushf" \ - "pop eax" \ - value [eax] \ - modify exact [eax]; - -u16 aaa_word_asm(u32 *flags,u16 d); -#pragma aux aaa_word_asm = \ - "push [edi]" \ - "popf" \ - "aaa" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] \ - value [ax] \ - modify exact [ax]; - -u16 aas_word_asm(u32 *flags,u16 d); -#pragma aux aas_word_asm = \ - "push [edi]" \ - "popf" \ - "aas" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] \ - value [ax] \ - modify exact [ax]; - -u16 aad_word_asm(u32 *flags,u16 d); -#pragma aux aad_word_asm = \ - "push [edi]" \ - "popf" \ - "aad" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] \ - value [ax] \ - modify exact [ax]; - -u16 aam_word_asm(u32 *flags,u8 d); -#pragma aux aam_word_asm = \ - "push [edi]" \ - "popf" \ - "aam" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] \ - value [ax] \ - modify exact [ax]; - -u8 adc_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux adc_byte_asm = \ - "push [edi]" \ - "popf" \ - "adc al,bl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [bl] \ - value [al] \ - modify exact [al bl]; - -u16 adc_word_asm(u32 *flags,u16 d, u16 s); -#pragma aux adc_word_asm = \ - "push [edi]" \ - "popf" \ - "adc ax,bx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [bx] \ - value [ax] \ - modify exact [ax bx]; - -u32 adc_long_asm(u32 *flags,u32 d, u32 s); -#pragma aux adc_long_asm = \ - "push [edi]" \ - "popf" \ - "adc eax,ebx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [ebx] \ - value [eax] \ - modify exact [eax ebx]; - -u8 add_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux add_byte_asm = \ - "push [edi]" \ - "popf" \ - "add al,bl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [bl] \ - value [al] \ - modify exact [al bl]; - -u16 add_word_asm(u32 *flags,u16 d, u16 s); -#pragma aux add_word_asm = \ - "push [edi]" \ - "popf" \ - "add ax,bx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [bx] \ - value [ax] \ - modify exact [ax bx]; - -u32 add_long_asm(u32 *flags,u32 d, u32 s); -#pragma aux add_long_asm = \ - "push [edi]" \ - "popf" \ - "add eax,ebx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [ebx] \ - value [eax] \ - modify exact [eax ebx]; - -u8 and_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux and_byte_asm = \ - "push [edi]" \ - "popf" \ - "and al,bl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [bl] \ - value [al] \ - modify exact [al bl]; - -u16 and_word_asm(u32 *flags,u16 d, u16 s); -#pragma aux and_word_asm = \ - "push [edi]" \ - "popf" \ - "and ax,bx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [bx] \ - value [ax] \ - modify exact [ax bx]; - -u32 and_long_asm(u32 *flags,u32 d, u32 s); -#pragma aux and_long_asm = \ - "push [edi]" \ - "popf" \ - "and eax,ebx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [ebx] \ - value [eax] \ - modify exact [eax ebx]; - -u8 cmp_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux cmp_byte_asm = \ - "push [edi]" \ - "popf" \ - "cmp al,bl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [bl] \ - value [al] \ - modify exact [al bl]; - -u16 cmp_word_asm(u32 *flags,u16 d, u16 s); -#pragma aux cmp_word_asm = \ - "push [edi]" \ - "popf" \ - "cmp ax,bx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [bx] \ - value [ax] \ - modify exact [ax bx]; - -u32 cmp_long_asm(u32 *flags,u32 d, u32 s); -#pragma aux cmp_long_asm = \ - "push [edi]" \ - "popf" \ - "cmp eax,ebx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [ebx] \ - value [eax] \ - modify exact [eax ebx]; - -u8 daa_byte_asm(u32 *flags,u8 d); -#pragma aux daa_byte_asm = \ - "push [edi]" \ - "popf" \ - "daa" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] \ - value [al] \ - modify exact [al]; - -u8 das_byte_asm(u32 *flags,u8 d); -#pragma aux das_byte_asm = \ - "push [edi]" \ - "popf" \ - "das" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] \ - value [al] \ - modify exact [al]; - -u8 dec_byte_asm(u32 *flags,u8 d); -#pragma aux dec_byte_asm = \ - "push [edi]" \ - "popf" \ - "dec al" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] \ - value [al] \ - modify exact [al]; - -u16 dec_word_asm(u32 *flags,u16 d); -#pragma aux dec_word_asm = \ - "push [edi]" \ - "popf" \ - "dec ax" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] \ - value [ax] \ - modify exact [ax]; - -u32 dec_long_asm(u32 *flags,u32 d); -#pragma aux dec_long_asm = \ - "push [edi]" \ - "popf" \ - "dec eax" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] \ - value [eax] \ - modify exact [eax]; - -u8 inc_byte_asm(u32 *flags,u8 d); -#pragma aux inc_byte_asm = \ - "push [edi]" \ - "popf" \ - "inc al" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] \ - value [al] \ - modify exact [al]; - -u16 inc_word_asm(u32 *flags,u16 d); -#pragma aux inc_word_asm = \ - "push [edi]" \ - "popf" \ - "inc ax" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] \ - value [ax] \ - modify exact [ax]; - -u32 inc_long_asm(u32 *flags,u32 d); -#pragma aux inc_long_asm = \ - "push [edi]" \ - "popf" \ - "inc eax" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] \ - value [eax] \ - modify exact [eax]; - -u8 or_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux or_byte_asm = \ - "push [edi]" \ - "popf" \ - "or al,bl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [bl] \ - value [al] \ - modify exact [al bl]; - -u16 or_word_asm(u32 *flags,u16 d, u16 s); -#pragma aux or_word_asm = \ - "push [edi]" \ - "popf" \ - "or ax,bx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [bx] \ - value [ax] \ - modify exact [ax bx]; - -u32 or_long_asm(u32 *flags,u32 d, u32 s); -#pragma aux or_long_asm = \ - "push [edi]" \ - "popf" \ - "or eax,ebx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [ebx] \ - value [eax] \ - modify exact [eax ebx]; - -u8 neg_byte_asm(u32 *flags,u8 d); -#pragma aux neg_byte_asm = \ - "push [edi]" \ - "popf" \ - "neg al" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] \ - value [al] \ - modify exact [al]; - -u16 neg_word_asm(u32 *flags,u16 d); -#pragma aux neg_word_asm = \ - "push [edi]" \ - "popf" \ - "neg ax" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] \ - value [ax] \ - modify exact [ax]; - -u32 neg_long_asm(u32 *flags,u32 d); -#pragma aux neg_long_asm = \ - "push [edi]" \ - "popf" \ - "neg eax" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] \ - value [eax] \ - modify exact [eax]; - -u8 not_byte_asm(u32 *flags,u8 d); -#pragma aux not_byte_asm = \ - "push [edi]" \ - "popf" \ - "not al" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] \ - value [al] \ - modify exact [al]; - -u16 not_word_asm(u32 *flags,u16 d); -#pragma aux not_word_asm = \ - "push [edi]" \ - "popf" \ - "not ax" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] \ - value [ax] \ - modify exact [ax]; - -u32 not_long_asm(u32 *flags,u32 d); -#pragma aux not_long_asm = \ - "push [edi]" \ - "popf" \ - "not eax" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] \ - value [eax] \ - modify exact [eax]; - -u8 rcl_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux rcl_byte_asm = \ - "push [edi]" \ - "popf" \ - "rcl al,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [cl] \ - value [al] \ - modify exact [al cl]; - -u16 rcl_word_asm(u32 *flags,u16 d, u8 s); -#pragma aux rcl_word_asm = \ - "push [edi]" \ - "popf" \ - "rcl ax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [cl] \ - value [ax] \ - modify exact [ax cl]; - -u32 rcl_long_asm(u32 *flags,u32 d, u8 s); -#pragma aux rcl_long_asm = \ - "push [edi]" \ - "popf" \ - "rcl eax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [cl] \ - value [eax] \ - modify exact [eax cl]; - -u8 rcr_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux rcr_byte_asm = \ - "push [edi]" \ - "popf" \ - "rcr al,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [cl] \ - value [al] \ - modify exact [al cl]; - -u16 rcr_word_asm(u32 *flags,u16 d, u8 s); -#pragma aux rcr_word_asm = \ - "push [edi]" \ - "popf" \ - "rcr ax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [cl] \ - value [ax] \ - modify exact [ax cl]; - -u32 rcr_long_asm(u32 *flags,u32 d, u8 s); -#pragma aux rcr_long_asm = \ - "push [edi]" \ - "popf" \ - "rcr eax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [cl] \ - value [eax] \ - modify exact [eax cl]; - -u8 rol_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux rol_byte_asm = \ - "push [edi]" \ - "popf" \ - "rol al,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [cl] \ - value [al] \ - modify exact [al cl]; - -u16 rol_word_asm(u32 *flags,u16 d, u8 s); -#pragma aux rol_word_asm = \ - "push [edi]" \ - "popf" \ - "rol ax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [cl] \ - value [ax] \ - modify exact [ax cl]; - -u32 rol_long_asm(u32 *flags,u32 d, u8 s); -#pragma aux rol_long_asm = \ - "push [edi]" \ - "popf" \ - "rol eax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [cl] \ - value [eax] \ - modify exact [eax cl]; - -u8 ror_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux ror_byte_asm = \ - "push [edi]" \ - "popf" \ - "ror al,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [cl] \ - value [al] \ - modify exact [al cl]; - -u16 ror_word_asm(u32 *flags,u16 d, u8 s); -#pragma aux ror_word_asm = \ - "push [edi]" \ - "popf" \ - "ror ax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [cl] \ - value [ax] \ - modify exact [ax cl]; - -u32 ror_long_asm(u32 *flags,u32 d, u8 s); -#pragma aux ror_long_asm = \ - "push [edi]" \ - "popf" \ - "ror eax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [cl] \ - value [eax] \ - modify exact [eax cl]; - -u8 shl_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux shl_byte_asm = \ - "push [edi]" \ - "popf" \ - "shl al,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [cl] \ - value [al] \ - modify exact [al cl]; - -u16 shl_word_asm(u32 *flags,u16 d, u8 s); -#pragma aux shl_word_asm = \ - "push [edi]" \ - "popf" \ - "shl ax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [cl] \ - value [ax] \ - modify exact [ax cl]; - -u32 shl_long_asm(u32 *flags,u32 d, u8 s); -#pragma aux shl_long_asm = \ - "push [edi]" \ - "popf" \ - "shl eax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [cl] \ - value [eax] \ - modify exact [eax cl]; - -u8 shr_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux shr_byte_asm = \ - "push [edi]" \ - "popf" \ - "shr al,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [cl] \ - value [al] \ - modify exact [al cl]; - -u16 shr_word_asm(u32 *flags,u16 d, u8 s); -#pragma aux shr_word_asm = \ - "push [edi]" \ - "popf" \ - "shr ax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [cl] \ - value [ax] \ - modify exact [ax cl]; - -u32 shr_long_asm(u32 *flags,u32 d, u8 s); -#pragma aux shr_long_asm = \ - "push [edi]" \ - "popf" \ - "shr eax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [cl] \ - value [eax] \ - modify exact [eax cl]; - -u8 sar_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux sar_byte_asm = \ - "push [edi]" \ - "popf" \ - "sar al,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [cl] \ - value [al] \ - modify exact [al cl]; - -u16 sar_word_asm(u32 *flags,u16 d, u8 s); -#pragma aux sar_word_asm = \ - "push [edi]" \ - "popf" \ - "sar ax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [cl] \ - value [ax] \ - modify exact [ax cl]; - -u32 sar_long_asm(u32 *flags,u32 d, u8 s); -#pragma aux sar_long_asm = \ - "push [edi]" \ - "popf" \ - "sar eax,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [cl] \ - value [eax] \ - modify exact [eax cl]; - -u16 shld_word_asm(u32 *flags,u16 d, u16 fill, u8 s); -#pragma aux shld_word_asm = \ - "push [edi]" \ - "popf" \ - "shld ax,dx,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [dx] [cl] \ - value [ax] \ - modify exact [ax dx cl]; - -u32 shld_long_asm(u32 *flags,u32 d, u32 fill, u8 s); -#pragma aux shld_long_asm = \ - "push [edi]" \ - "popf" \ - "shld eax,edx,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [edx] [cl] \ - value [eax] \ - modify exact [eax edx cl]; - -u16 shrd_word_asm(u32 *flags,u16 d, u16 fill, u8 s); -#pragma aux shrd_word_asm = \ - "push [edi]" \ - "popf" \ - "shrd ax,dx,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [dx] [cl] \ - value [ax] \ - modify exact [ax dx cl]; - -u32 shrd_long_asm(u32 *flags,u32 d, u32 fill, u8 s); -#pragma aux shrd_long_asm = \ - "push [edi]" \ - "popf" \ - "shrd eax,edx,cl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [edx] [cl] \ - value [eax] \ - modify exact [eax edx cl]; - -u8 sbb_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux sbb_byte_asm = \ - "push [edi]" \ - "popf" \ - "sbb al,bl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [bl] \ - value [al] \ - modify exact [al bl]; - -u16 sbb_word_asm(u32 *flags,u16 d, u16 s); -#pragma aux sbb_word_asm = \ - "push [edi]" \ - "popf" \ - "sbb ax,bx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [bx] \ - value [ax] \ - modify exact [ax bx]; - -u32 sbb_long_asm(u32 *flags,u32 d, u32 s); -#pragma aux sbb_long_asm = \ - "push [edi]" \ - "popf" \ - "sbb eax,ebx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [ebx] \ - value [eax] \ - modify exact [eax ebx]; - -u8 sub_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux sub_byte_asm = \ - "push [edi]" \ - "popf" \ - "sub al,bl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [bl] \ - value [al] \ - modify exact [al bl]; - -u16 sub_word_asm(u32 *flags,u16 d, u16 s); -#pragma aux sub_word_asm = \ - "push [edi]" \ - "popf" \ - "sub ax,bx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [bx] \ - value [ax] \ - modify exact [ax bx]; - -u32 sub_long_asm(u32 *flags,u32 d, u32 s); -#pragma aux sub_long_asm = \ - "push [edi]" \ - "popf" \ - "sub eax,ebx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [ebx] \ - value [eax] \ - modify exact [eax ebx]; - -void test_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux test_byte_asm = \ - "push [edi]" \ - "popf" \ - "test al,bl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [bl] \ - modify exact [al bl]; - -void test_word_asm(u32 *flags,u16 d, u16 s); -#pragma aux test_word_asm = \ - "push [edi]" \ - "popf" \ - "test ax,bx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [bx] \ - modify exact [ax bx]; - -void test_long_asm(u32 *flags,u32 d, u32 s); -#pragma aux test_long_asm = \ - "push [edi]" \ - "popf" \ - "test eax,ebx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [ebx] \ - modify exact [eax ebx]; - -u8 xor_byte_asm(u32 *flags,u8 d, u8 s); -#pragma aux xor_byte_asm = \ - "push [edi]" \ - "popf" \ - "xor al,bl" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [al] [bl] \ - value [al] \ - modify exact [al bl]; - -u16 xor_word_asm(u32 *flags,u16 d, u16 s); -#pragma aux xor_word_asm = \ - "push [edi]" \ - "popf" \ - "xor ax,bx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [ax] [bx] \ - value [ax] \ - modify exact [ax bx]; - -u32 xor_long_asm(u32 *flags,u32 d, u32 s); -#pragma aux xor_long_asm = \ - "push [edi]" \ - "popf" \ - "xor eax,ebx" \ - "pushf" \ - "pop [edi]" \ - parm [edi] [eax] [ebx] \ - value [eax] \ - modify exact [eax ebx]; - -void imul_byte_asm(u32 *flags,u16 *ax,u8 d,u8 s); -#pragma aux imul_byte_asm = \ - "push [edi]" \ - "popf" \ - "imul bl" \ - "pushf" \ - "pop [edi]" \ - "mov [esi],ax" \ - parm [edi] [esi] [al] [bl] \ - modify exact [esi ax bl]; - -void imul_word_asm(u32 *flags,u16 *ax,u16 *dx,u16 d,u16 s); -#pragma aux imul_word_asm = \ - "push [edi]" \ - "popf" \ - "imul bx" \ - "pushf" \ - "pop [edi]" \ - "mov [esi],ax" \ - "mov [ecx],dx" \ - parm [edi] [esi] [ecx] [ax] [bx]\ - modify exact [esi edi ax bx dx]; - -void imul_long_asm(u32 *flags,u32 *eax,u32 *edx,u32 d,u32 s); -#pragma aux imul_long_asm = \ - "push [edi]" \ - "popf" \ - "imul ebx" \ - "pushf" \ - "pop [edi]" \ - "mov [esi],eax" \ - "mov [ecx],edx" \ - parm [edi] [esi] [ecx] [eax] [ebx] \ - modify exact [esi edi eax ebx edx]; - -void mul_byte_asm(u32 *flags,u16 *ax,u8 d,u8 s); -#pragma aux mul_byte_asm = \ - "push [edi]" \ - "popf" \ - "mul bl" \ - "pushf" \ - "pop [edi]" \ - "mov [esi],ax" \ - parm [edi] [esi] [al] [bl] \ - modify exact [esi ax bl]; - -void mul_word_asm(u32 *flags,u16 *ax,u16 *dx,u16 d,u16 s); -#pragma aux mul_word_asm = \ - "push [edi]" \ - "popf" \ - "mul bx" \ - "pushf" \ - "pop [edi]" \ - "mov [esi],ax" \ - "mov [ecx],dx" \ - parm [edi] [esi] [ecx] [ax] [bx]\ - modify exact [esi edi ax bx dx]; - -void mul_long_asm(u32 *flags,u32 *eax,u32 *edx,u32 d,u32 s); -#pragma aux mul_long_asm = \ - "push [edi]" \ - "popf" \ - "mul ebx" \ - "pushf" \ - "pop [edi]" \ - "mov [esi],eax" \ - "mov [ecx],edx" \ - parm [edi] [esi] [ecx] [eax] [ebx] \ - modify exact [esi edi eax ebx edx]; - -void idiv_byte_asm(u32 *flags,u8 *al,u8 *ah,u16 d,u8 s); -#pragma aux idiv_byte_asm = \ - "push [edi]" \ - "popf" \ - "idiv bl" \ - "pushf" \ - "pop [edi]" \ - "mov [esi],al" \ - "mov [ecx],ah" \ - parm [edi] [esi] [ecx] [ax] [bl]\ - modify exact [esi edi ax bl]; - -void idiv_word_asm(u32 *flags,u16 *ax,u16 *dx,u16 dlo,u16 dhi,u16 s); -#pragma aux idiv_word_asm = \ - "push [edi]" \ - "popf" \ - "idiv bx" \ - "pushf" \ - "pop [edi]" \ - "mov [esi],ax" \ - "mov [ecx],dx" \ - parm [edi] [esi] [ecx] [ax] [dx] [bx]\ - modify exact [esi edi ax dx bx]; - -void idiv_long_asm(u32 *flags,u32 *eax,u32 *edx,u32 dlo,u32 dhi,u32 s); -#pragma aux idiv_long_asm = \ - "push [edi]" \ - "popf" \ - "idiv ebx" \ - "pushf" \ - "pop [edi]" \ - "mov [esi],eax" \ - "mov [ecx],edx" \ - parm [edi] [esi] [ecx] [eax] [edx] [ebx]\ - modify exact [esi edi eax edx ebx]; - -void div_byte_asm(u32 *flags,u8 *al,u8 *ah,u16 d,u8 s); -#pragma aux div_byte_asm = \ - "push [edi]" \ - "popf" \ - "div bl" \ - "pushf" \ - "pop [edi]" \ - "mov [esi],al" \ - "mov [ecx],ah" \ - parm [edi] [esi] [ecx] [ax] [bl]\ - modify exact [esi edi ax bl]; - -void div_word_asm(u32 *flags,u16 *ax,u16 *dx,u16 dlo,u16 dhi,u16 s); -#pragma aux div_word_asm = \ - "push [edi]" \ - "popf" \ - "div bx" \ - "pushf" \ - "pop [edi]" \ - "mov [esi],ax" \ - "mov [ecx],dx" \ - parm [edi] [esi] [ecx] [ax] [dx] [bx]\ - modify exact [esi edi ax dx bx]; - -void div_long_asm(u32 *flags,u32 *eax,u32 *edx,u32 dlo,u32 dhi,u32 s); -#pragma aux div_long_asm = \ - "push [edi]" \ - "popf" \ - "div ebx" \ - "pushf" \ - "pop [edi]" \ - "mov [esi],eax" \ - "mov [ecx],edx" \ - parm [edi] [esi] [ecx] [eax] [edx] [ebx]\ - modify exact [esi edi eax edx ebx]; - -#endif - -#endif /* __X86EMU_PRIM_ASM_H */ diff --git a/src/hwinfo/src/x86emu/x86emu/prim_ops.h b/src/hwinfo/src/x86emu/x86emu/prim_ops.h deleted file mode 100644 index 21ab1451f2..0000000000 --- a/src/hwinfo/src/x86emu/x86emu/prim_ops.h +++ /dev/null @@ -1,143 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: Header file for primitive operation functions. -* -****************************************************************************/ - -#ifndef __X86EMU_PRIM_OPS_H -#define __X86EMU_PRIM_OPS_H - -#include "x86emu/prim_asm.h" - -#ifdef __cplusplus -extern "C" { /* Use "C" linkage when in C++ mode */ -#endif - -u16 aaa_word (u16 d); -u16 aas_word (u16 d); -u16 aad_word (u16 d); -u16 aam_word (u8 d); -u8 adc_byte (u8 d, u8 s); -u16 adc_word (u16 d, u16 s); -u32 adc_long (u32 d, u32 s); -u8 add_byte (u8 d, u8 s); -u16 add_word (u16 d, u16 s); -u32 add_long (u32 d, u32 s); -u8 and_byte (u8 d, u8 s); -u16 and_word (u16 d, u16 s); -u32 and_long (u32 d, u32 s); -u8 cmp_byte (u8 d, u8 s); -u16 cmp_word (u16 d, u16 s); -u32 cmp_long (u32 d, u32 s); -u8 daa_byte (u8 d); -u8 das_byte (u8 d); -u8 dec_byte (u8 d); -u16 dec_word (u16 d); -u32 dec_long (u32 d); -u8 inc_byte (u8 d); -u16 inc_word (u16 d); -u32 inc_long (u32 d); -u8 or_byte (u8 d, u8 s); -u16 or_word (u16 d, u16 s); -u32 or_long (u32 d, u32 s); -u8 neg_byte (u8 s); -u16 neg_word (u16 s); -u32 neg_long (u32 s); -u8 not_byte (u8 s); -u16 not_word (u16 s); -u32 not_long (u32 s); -u8 rcl_byte (u8 d, u8 s); -u16 rcl_word (u16 d, u8 s); -u32 rcl_long (u32 d, u8 s); -u8 rcr_byte (u8 d, u8 s); -u16 rcr_word (u16 d, u8 s); -u32 rcr_long (u32 d, u8 s); -u8 rol_byte (u8 d, u8 s); -u16 rol_word (u16 d, u8 s); -u32 rol_long (u32 d, u8 s); -u8 ror_byte (u8 d, u8 s); -u16 ror_word (u16 d, u8 s); -u32 ror_long (u32 d, u8 s); -u8 shl_byte (u8 d, u8 s); -u16 shl_word (u16 d, u8 s); -u32 shl_long (u32 d, u8 s); -u8 shr_byte (u8 d, u8 s); -u16 shr_word (u16 d, u8 s); -u32 shr_long (u32 d, u8 s); -u8 sar_byte (u8 d, u8 s); -u16 sar_word (u16 d, u8 s); -u32 sar_long (u32 d, u8 s); -u16 shld_word (u16 d, u16 fill, u8 s); -u32 shld_long (u32 d, u32 fill, u8 s); -u16 shrd_word (u16 d, u16 fill, u8 s); -u32 shrd_long (u32 d, u32 fill, u8 s); -u8 sbb_byte (u8 d, u8 s); -u16 sbb_word (u16 d, u16 s); -u32 sbb_long (u32 d, u32 s); -u8 sub_byte (u8 d, u8 s); -u16 sub_word (u16 d, u16 s); -u32 sub_long (u32 d, u32 s); -void test_byte (u8 d, u8 s); -void test_word (u16 d, u16 s); -void test_long (u32 d, u32 s); -u8 xor_byte (u8 d, u8 s); -u16 xor_word (u16 d, u16 s); -u32 xor_long (u32 d, u32 s); -void imul_byte (u8 s); -void imul_word (u16 s); -void imul_long (u32 s); -void imul_long_direct(u32 *res_lo, u32* res_hi,u32 d, u32 s); -void mul_byte (u8 s); -void mul_word (u16 s); -void mul_long (u32 s); -void idiv_byte (u8 s); -void idiv_word (u16 s); -void idiv_long (u32 s); -void div_byte (u8 s); -void div_word (u16 s); -void div_long (u32 s); -void ins (int size); -void outs (int size); -u16 mem_access_word (int addr); -void push_word (u16 w); -void push_long (u32 w); -u16 pop_word (void); -u32 pop_long (void); - -#ifdef __cplusplus -} /* End of "C" linkage for C++ */ -#endif - -#endif /* __X86EMU_PRIM_OPS_H */ diff --git a/src/hwinfo/src/x86emu/x86emu/x86emui.h b/src/hwinfo/src/x86emu/x86emu/x86emui.h deleted file mode 100644 index 3adf61ec69..0000000000 --- a/src/hwinfo/src/x86emu/x86emu/x86emui.h +++ /dev/null @@ -1,105 +0,0 @@ -/**************************************************************************** -* -* Realmode X86 Emulator Library -* -* Copyright (C) 1996-1999 SciTech Software, Inc. -* Copyright (C) David Mosberger-Tang -* Copyright (C) 1999 Egbert Eich -* -* ======================================================================== -* -* 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 name of the authors not be used -* in advertising or publicity pertaining to distribution of the software -* without specific, written prior permission. The authors makes no -* representations about the suitability of this software for any purpose. -* It is provided "as is" without express or implied warranty. -* -* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -* EVENT SHALL THE AUTHORS 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. -* -* ======================================================================== -* -* Language: ANSI C -* Environment: Any -* Developer: Kendall Bennett -* -* Description: Header file for system specific functions. These functions -* are always compiled and linked in the OS depedent libraries, -* and never in a binary portable driver. -* -****************************************************************************/ - -/* $XFree86: xc/extras/x86emu/src/x86emu/x86emu/x86emui.h,v 1.3 2000/04/17 16:29:47 eich Exp $ */ - -#ifndef __X86EMU_X86EMUI_H -#define __X86EMU_X86EMUI_H - -/* If we are compiling in C++ mode, we can compile some functions as - * inline to increase performance (however the code size increases quite - * dramatically in this case). - */ - -#if defined(__cplusplus) && !defined(_NO_INLINE) -#define _INLINE inline -#else -#define _INLINE static -#endif - -/* Get rid of unused parameters in C++ compilation mode */ - -#ifdef __cplusplus -#define X86EMU_UNUSED(v) -#else -#define X86EMU_UNUSED(v) v -#endif - -#include "x86emu.h" -#include "x86emu/regs.h" -#include "x86emu/debug.h" -#include "x86emu/decode.h" -#include "x86emu/ops.h" -#include "x86emu/prim_ops.h" -#include "x86emu/fpu.h" -#include "x86emu/fpu_regs.h" - -#ifdef IN_MODULE -#include -#else -#include -#include -#include -#endif -/*--------------------------- Inline Functions ----------------------------*/ - -#ifdef __cplusplus -extern "C" { /* Use "C" linkage when in C++ mode */ -#endif - -extern u8 (X86APIP sys_rdb)(u32 addr); -extern u16 (X86APIP sys_rdw)(u32 addr); -extern u32 (X86APIP sys_rdl)(u32 addr); -extern void (X86APIP sys_wrb)(u32 addr,u8 val); -extern void (X86APIP sys_wrw)(u32 addr,u16 val); -extern void (X86APIP sys_wrl)(u32 addr,u32 val); - -extern u8 (X86APIP sys_inb)(X86EMU_pioAddr addr); -extern u16 (X86APIP sys_inw)(X86EMU_pioAddr addr); -extern u32 (X86APIP sys_inl)(X86EMU_pioAddr addr); -extern void (X86APIP sys_outb)(X86EMU_pioAddr addr,u8 val); -extern void (X86APIP sys_outw)(X86EMU_pioAddr addr,u16 val); -extern void (X86APIP sys_outl)(X86EMU_pioAddr addr,u32 val); - -#ifdef __cplusplus -} /* End of "C" linkage for C++ */ -#endif - -#endif /* __X86EMU_X86EMUI_H */ diff --git a/src/misc-progs/Makefile b/src/misc-progs/Makefile index af9a2f4f9f..0305003c41 100644 --- a/src/misc-progs/Makefile +++ b/src/misc-progs/Makefile @@ -7,7 +7,7 @@ PROGS = iowrap SUID_PROGS = setdmzholes setportfw setfilters setxtaccess \ restartsquid restartssh ipfirereboot setaliases \ ipsecctrl restartntpd restartdhcp restartsnort \ - restartapplejuice setdate rebuildhosts \ + restartapplejuice rebuildhosts \ restartsyslogd logwatch openvpnctrl timecheckctrl \ restartwireless getipstat qosctrl launch-ether-wake \ redctrl extrahdctrl sambactrl upnpctrl tripwirectrl \ diff --git a/src/misc-progs/sambactrl.c b/src/misc-progs/sambactrl.c index 2a573b6e5b..9991ee646d 100644 --- a/src/misc-progs/sambactrl.c +++ b/src/misc-progs/sambactrl.c @@ -174,8 +174,6 @@ if (strcmp(argv[1], "enable")==0) { safe_system("touch /var/ipfire/samba/enable"); safe_system("/etc/rc.d/init.d/samba start "); -safe_system("ln -snf /etc/rc.d/init.d/samba /etc/rc.d/rc2.d/S50samba"); -safe_system("ln -snf /etc/rc.d/init.d/samba /etc/rc.d/rc2.d/K50samba"); safe_system("ln -snf /etc/rc.d/init.d/samba /etc/rc.d/rc3.d/S50samba"); safe_system("ln -snf /etc/rc.d/init.d/samba /etc/rc.d/rc3.d/K50samba"); return 0; @@ -183,12 +181,8 @@ return 0; if (strcmp(argv[1], "disable")==0) { -safe_system("unlink /var/ipfire/samba/enable"); safe_system("/etc/rc.d/init.d/samba stop"); -safe_system("unlink /etc/rc.d/rc2.d/S50samba"); -safe_system("unlink /etc/rc.d/rc2.d/K50samba"); -safe_system("unlink /etc/rc.d/rc3.d/S50samba"); -safe_system("unlink /etc/rc.d/rc3.d/K50samba"); +safe_system("rm -f /etc/rc.d/rc3.d/*samba /var/ipfire/samba/enable 2>/dev/null"); return 0; } return 0; diff --git a/src/misc-progs/setdate.c b/src/misc-progs/setdate.c deleted file mode 100644 index e3019a0deb..0000000000 --- a/src/misc-progs/setdate.c +++ /dev/null @@ -1,52 +0,0 @@ -/* Ipcop helper program - setdate.c - * - * Sets the date and time - * - * (c) Darren Critchley 2003 - * - * $Id: setdate.c,v 1.2 2003/12/11 11:25:54 riddles Exp $ - * - */ - -#include -#include -#include -#include -#include -#include "setuid.h" - -int main(int argc, char *argv[]) -{ - char command[STRING_SIZE]; - int a,b,c; - - if (!(initsetuid())) - exit(1); - - if (argc < 3) - { - fprintf(stderr, "Missing arg\n"); - exit(1); - } - - if (! (strlen(argv[1]) < 11 && sscanf(argv[1], "%d-%d-%d", &a, &b, &c) == 3) - || (strspn(argv[1], NUMBERS "-" ) != strlen(argv[1]))) - { - fprintf(stderr, "Bad arg\n"); - exit(1); - } - - if (! (strlen(argv[2]) < 6 && sscanf(argv[2], "%d:%d", &a, &b) == 2) - || (strspn(argv[2], NUMBERS ":" ) != strlen(argv[2]))) - { - fprintf(stderr, "Bad arg\n"); - exit(1); - } - - memset(command, 0, STRING_SIZE); - snprintf(command, STRING_SIZE - 1, "/bin/date -s '%s %s' >/dev/null", argv[1], argv[2]); - fprintf(stderr, "Setting Date: %s %s\n", argv[1], argv[2]); - safe_system(command); - - return 0; -} diff --git a/src/paks/amavisd/ROOTFILES b/src/paks/amavisd/ROOTFILES deleted file mode 100644 index abe6f569c5..0000000000 --- a/src/paks/amavisd/ROOTFILES +++ /dev/null @@ -1,4 +0,0 @@ -etc/amavisd.conf -usr/local/bin/amavisd -var/amavis -var/virusmails diff --git a/src/paks/amavisd/depends.txt b/src/paks/amavisd/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/amavisd/install.sh b/src/paks/amavisd/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/amavisd/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/amavisd/uninstall.sh b/src/paks/amavisd/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/amavisd/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/applejuice/ROOTFILES b/src/paks/applejuice/ROOTFILES deleted file mode 100644 index 82fc43f2ad..0000000000 --- a/src/paks/applejuice/ROOTFILES +++ /dev/null @@ -1,137 +0,0 @@ -etc/init.d/applejuice -opt/applejuice -opt/applejuice/ajcore.jar -opt/applejuice/libajnetmask.so -home/httpd/phpaj -home/httpd/phpaj/export -home/httpd/phpaj/export/Default.php -home/httpd/phpaj/export/ajl.php -home/httpd/phpaj/export/bb.php -home/httpd/phpaj/export/html.php -home/httpd/phpaj/index.php -home/httpd/phpaj/language -home/httpd/phpaj/language/deutsch.xml -home/httpd/phpaj/language/english.xml -home/httpd/phpaj/main -home/httpd/phpaj/main/classes -home/httpd/phpaj/main/classes/class_core.php -home/httpd/phpaj/main/classes/class_downloads.php -home/httpd/phpaj/main/classes/class_icons.php -home/httpd/phpaj/main/classes/class_search.php -home/httpd/phpaj/main/classes/class_server.php -home/httpd/phpaj/main/classes/class_share.php -home/httpd/phpaj/main/classes/class_uploads.php -home/httpd/phpaj/main/directory.php -home/httpd/phpaj/main/dl_parts.php -home/httpd/phpaj/main/dl_users.php -home/httpd/phpaj/main/downloads.php -home/httpd/phpaj/main/extras.php -home/httpd/phpaj/main/index.php -home/httpd/phpaj/main/progressbar.php -home/httpd/phpaj/main/search.php -home/httpd/phpaj/main/server.php -home/httpd/phpaj/main/settings.php -home/httpd/phpaj/main/shareexport.php -home/httpd/phpaj/main/sharefiles.php -home/httpd/phpaj/main/shares.php -home/httpd/phpaj/main/showparts.php -home/httpd/phpaj/main/start.php -home/httpd/phpaj/main/status.php -home/httpd/phpaj/main/subs.php -home/httpd/phpaj/main/top.php -home/httpd/phpaj/main/uploads.php -home/httpd/phpaj/minigui -home/httpd/phpaj/minigui/downloads.php -home/httpd/phpaj/minigui/index.php -home/httpd/phpaj/minigui/minigui.php -home/httpd/phpaj/plugins -home/httpd/phpaj/plugins/ajl -home/httpd/phpaj/plugins/ajl/ajl.php -home/httpd/phpaj/plugins/ajl/icon.gif -home/httpd/phpaj/plugins/ajl/info.php -home/httpd/phpaj/plugins/register.php -home/httpd/phpaj/plugins/sharestats -home/httpd/phpaj/plugins/sharestats/info.php -home/httpd/phpaj/plugins/sharestats/sharestats.php -home/httpd/phpaj/plugins/versionchecker -home/httpd/phpaj/plugins/versionchecker/info.php -home/httpd/phpaj/plugins/versionchecker/versionchecker.php -home/httpd/phpaj/plugins/wizard -home/httpd/phpaj/plugins/wizard/icon.gif -home/httpd/phpaj/plugins/wizard/info.php -home/httpd/phpaj/plugins/wizard/wizard.php -home/httpd/phpaj/plugins/wizard/wizard.xml -home/httpd/phpaj/style -home/httpd/phpaj/style/default -home/httpd/phpaj/style/default/default_blue.css -home/httpd/phpaj/style/default/default_green.css -home/httpd/phpaj/style/default/default_grey.css -home/httpd/phpaj/style/default/info.png -home/httpd/phpaj/style/default/minus.png -home/httpd/phpaj/style/default/os -home/httpd/phpaj/style/default/os/bsd.png -home/httpd/phpaj/style/default/os/linux.png -home/httpd/phpaj/style/default/os/mac.png -home/httpd/phpaj/style/default/os/na.png -home/httpd/phpaj/style/default/os/netware.png -home/httpd/phpaj/style/default/os/os2.png -home/httpd/phpaj/style/default/os/solaris.png -home/httpd/phpaj/style/default/os/win.png -home/httpd/phpaj/style/default/plus.png -home/httpd/phpaj/style/default/server -home/httpd/phpaj/style/default/server/alt.gif -home/httpd/phpaj/style/default/server/neu.gif -home/httpd/phpaj/style/default/server/verbinde.gif -home/httpd/phpaj/style/default/server/verbunden.gif -home/httpd/phpaj/style/default/stop.png -home/httpd/phpaj/style/default/tabs -home/httpd/phpaj/style/default/tabs/download.gif -home/httpd/phpaj/style/default/tabs/extras.gif -home/httpd/phpaj/style/default/tabs/kill.gif -home/httpd/phpaj/style/default/tabs/logout.gif -home/httpd/phpaj/style/default/tabs/meinshare.gif -home/httpd/phpaj/style/default/tabs/optionen.gif -home/httpd/phpaj/style/default/tabs/server.gif -home/httpd/phpaj/style/default/tabs/start.gif -home/httpd/phpaj/style/default/tabs/suchen.gif -home/httpd/phpaj/style/default/tabs/upload.gif -home/httpd/phpaj/style/default/user -home/httpd/phpaj/style/default/user/direct.png -home/httpd/phpaj/style/default/user/indirect.png -home/httpd/phpaj/style/default/user/tryindirect.png -home/httpd/phpaj/style/default/user/unknown.png -home/httpd/phpaj/style/default/warnung.gif -home/httpd/phpaj/style/default/x.png -home/httpd/phpaj/style/default_blue.php -home/httpd/phpaj/style/default_green.php -home/httpd/phpaj/style/default_grey.php -home/httpd/phpaj/style/new -home/httpd/phpaj/style/new.php -home/httpd/phpaj/style/new/bg.png -home/httpd/phpaj/style/new/new.css -home/httpd/phpaj/style/tango -home/httpd/phpaj/style/tango.php -home/httpd/phpaj/style/tango/bg.png -home/httpd/phpaj/style/tango/icons -home/httpd/phpaj/style/tango/icons/direct.png -home/httpd/phpaj/style/tango/icons/down.png -home/httpd/phpaj/style/tango/icons/empty.png -home/httpd/phpaj/style/tango/icons/extras.png -home/httpd/phpaj/style/tango/icons/home.png -home/httpd/phpaj/style/tango/icons/indirect.png -home/httpd/phpaj/style/tango/icons/info.png -home/httpd/phpaj/style/tango/icons/kill.png -home/httpd/phpaj/style/tango/icons/logout.png -home/httpd/phpaj/style/tango/icons/minus.png -home/httpd/phpaj/style/tango/icons/plus.png -home/httpd/phpaj/style/tango/icons/preferences.png -home/httpd/phpaj/style/tango/icons/search.png -home/httpd/phpaj/style/tango/icons/server.png -home/httpd/phpaj/style/tango/icons/share.png -home/httpd/phpaj/style/tango/icons/stop.png -home/httpd/phpaj/style/tango/icons/up.png -home/httpd/phpaj/style/tango/icons/warning.png -home/httpd/phpaj/style/tango/icons/x.png -home/httpd/phpaj/style/tango/tango.css -home/httpd/phpaj/vars.php -var/ipfire/applejuice \ No newline at end of file diff --git a/src/paks/applejuice/depends.txt b/src/paks/applejuice/depends.txt deleted file mode 100644 index f3d360b1cf..0000000000 --- a/src/paks/applejuice/depends.txt +++ /dev/null @@ -1 +0,0 @@ -java diff --git a/src/paks/applejuice/install.sh b/src/paks/applejuice/install.sh deleted file mode 100644 index 2f78907fa2..0000000000 --- a/src/paks/applejuice/install.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / diff --git a/src/paks/applejuice/uninstall.sh b/src/paks/applejuice/uninstall.sh deleted file mode 100644 index 7ee2885e73..0000000000 --- a/src/paks/applejuice/uninstall.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files diff --git a/src/paks/asterisk/ROOTFILES b/src/paks/asterisk/ROOTFILES deleted file mode 100644 index c4de9b4215..0000000000 --- a/src/paks/asterisk/ROOTFILES +++ /dev/null @@ -1,2011 +0,0 @@ -#usr/include/asterisk -#usr/include/asterisk/acl.h -#usr/include/asterisk/adsi.h -#usr/include/asterisk/aes.h -#usr/include/asterisk/agi.h -#usr/include/asterisk/alaw.h -#usr/include/asterisk/app.h -#usr/include/asterisk/ast_expr.h -#usr/include/asterisk/astdb.h -#usr/include/asterisk/astmm.h -#usr/include/asterisk/astobj.h -#usr/include/asterisk/astosp.h -#usr/include/asterisk/build.h -#usr/include/asterisk/callerid.h -#usr/include/asterisk/causes.h -#usr/include/asterisk/cdr.h -#usr/include/asterisk/chan_capi.h -#usr/include/asterisk/chan_capi_app.h -#usr/include/asterisk/channel.h -#usr/include/asterisk/chanspy.h -#usr/include/asterisk/chanvars.h -#usr/include/asterisk/cli.h -#usr/include/asterisk/compat.h -#usr/include/asterisk/compiler.h -#usr/include/asterisk/config.h -#usr/include/asterisk/crypto.h -#usr/include/asterisk/devicestate.h -#usr/include/asterisk/dlfcn-compat.h -#usr/include/asterisk/dns.h -#usr/include/asterisk/dnsmgr.h -#usr/include/asterisk/doxyref.h -#usr/include/asterisk/dsp.h -#usr/include/asterisk/dundi.h -#usr/include/asterisk/endian.h -#usr/include/asterisk/enum.h -#usr/include/asterisk/features.h -#usr/include/asterisk/file.h -#usr/include/asterisk/frame.h -#usr/include/asterisk/fskmodem.h -#usr/include/asterisk/image.h -#usr/include/asterisk/indications.h -#usr/include/asterisk/inline_api.h -#usr/include/asterisk/io.h -#usr/include/asterisk/linkedlists.h -#usr/include/asterisk/localtime.h -#usr/include/asterisk/lock.h -#usr/include/asterisk/logger.h -#usr/include/asterisk/manager.h -#usr/include/asterisk/md5.h -#usr/include/asterisk/module.h -#usr/include/asterisk/monitor.h -#usr/include/asterisk/musiconhold.h -#usr/include/asterisk/netsock.h -#usr/include/asterisk/options.h -#usr/include/asterisk/pbx.h -#usr/include/asterisk/plc.h -#usr/include/asterisk/poll-compat.h -#usr/include/asterisk/privacy.h -#usr/include/asterisk/res_odbc.h -#usr/include/asterisk/rtp.h -#usr/include/asterisk/say.h -#usr/include/asterisk/sched.h -#usr/include/asterisk/slinfactory.h -#usr/include/asterisk/srv.h -#usr/include/asterisk/strings.h -#usr/include/asterisk/tdd.h -#usr/include/asterisk/term.h -#usr/include/asterisk/time.h -#usr/include/asterisk/transcap.h -#usr/include/asterisk/translate.h -#usr/include/asterisk/ulaw.h -#usr/include/asterisk/unaligned.h -#usr/include/asterisk/utils.h -#usr/include/asterisk/version.h -#usr/include/asterisk/vmodem.h -#usr/include/asterisk/xlaw.h -#usr/lib/asterisk -usr/lib/asterisk/modules -#usr/lib/asterisk/modules/app_adsiprog.so -#usr/lib/asterisk/modules/app_alarmreceiver.so -#usr/lib/asterisk/modules/app_authenticate.so -#usr/lib/asterisk/modules/app_callingpres.so -#usr/lib/asterisk/modules/app_capiCD.so -#usr/lib/asterisk/modules/app_capiECT.so -#usr/lib/asterisk/modules/app_capiNoES.so -#usr/lib/asterisk/modules/app_cdr.so -#usr/lib/asterisk/modules/app_chanisavail.so -#usr/lib/asterisk/modules/app_chanspy.so -#usr/lib/asterisk/modules/app_controlplayback.so -#usr/lib/asterisk/modules/app_cut.so -#usr/lib/asterisk/modules/app_db.so -#usr/lib/asterisk/modules/app_devstate.so -#usr/lib/asterisk/modules/app_dial.so -#usr/lib/asterisk/modules/app_dictate.so -#usr/lib/asterisk/modules/app_directed_pickup.so -#usr/lib/asterisk/modules/app_directory.so -#usr/lib/asterisk/modules/app_disa.so -#usr/lib/asterisk/modules/app_dumpchan.so -#usr/lib/asterisk/modules/app_echo.so -#usr/lib/asterisk/modules/app_enumlookup.so -#usr/lib/asterisk/modules/app_eval.so -#usr/lib/asterisk/modules/app_exec.so -#usr/lib/asterisk/modules/app_externalivr.so -#usr/lib/asterisk/modules/app_festival.so -#usr/lib/asterisk/modules/app_flash.so -#usr/lib/asterisk/modules/app_forkcdr.so -#usr/lib/asterisk/modules/app_getcpeid.so -#usr/lib/asterisk/modules/app_groupcount.so -#usr/lib/asterisk/modules/app_hasnewvoicemail.so -#usr/lib/asterisk/modules/app_ices.so -#usr/lib/asterisk/modules/app_image.so -#usr/lib/asterisk/modules/app_lookupblacklist.so -#usr/lib/asterisk/modules/app_lookupcidname.so -#usr/lib/asterisk/modules/app_macro.so -#usr/lib/asterisk/modules/app_math.so -#usr/lib/asterisk/modules/app_md5.so -#usr/lib/asterisk/modules/app_meetme.so -#usr/lib/asterisk/modules/app_milliwatt.so -#usr/lib/asterisk/modules/app_mixmonitor.so -#usr/lib/asterisk/modules/app_mp3.so -#usr/lib/asterisk/modules/app_nbscat.so -#usr/lib/asterisk/modules/app_page.so -#usr/lib/asterisk/modules/app_parkandannounce.so -#usr/lib/asterisk/modules/app_pickup.so -#usr/lib/asterisk/modules/app_playback.so -#usr/lib/asterisk/modules/app_privacy.so -#usr/lib/asterisk/modules/app_queue.so -#usr/lib/asterisk/modules/app_random.so -#usr/lib/asterisk/modules/app_read.so -#usr/lib/asterisk/modules/app_readfile.so -#usr/lib/asterisk/modules/app_realtime.so -#usr/lib/asterisk/modules/app_record.so -#usr/lib/asterisk/modules/app_sayunixtime.so -#usr/lib/asterisk/modules/app_segfault.so -#usr/lib/asterisk/modules/app_senddtmf.so -#usr/lib/asterisk/modules/app_sendtext.so -#usr/lib/asterisk/modules/app_setcallerid.so -#usr/lib/asterisk/modules/app_setcdruserfield.so -#usr/lib/asterisk/modules/app_setcidname.so -#usr/lib/asterisk/modules/app_setcidnum.so -#usr/lib/asterisk/modules/app_setrdnis.so -#usr/lib/asterisk/modules/app_settransfercapability.so -#usr/lib/asterisk/modules/app_sms.so -#usr/lib/asterisk/modules/app_softhangup.so -#usr/lib/asterisk/modules/app_stack.so -#usr/lib/asterisk/modules/app_system.so -#usr/lib/asterisk/modules/app_talkdetect.so -#usr/lib/asterisk/modules/app_test.so -#usr/lib/asterisk/modules/app_transfer.so -#usr/lib/asterisk/modules/app_txtcidname.so -#usr/lib/asterisk/modules/app_url.so -#usr/lib/asterisk/modules/app_userevent.so -#usr/lib/asterisk/modules/app_verbose.so -#usr/lib/asterisk/modules/app_voicemail.so -#usr/lib/asterisk/modules/app_waitforring.so -#usr/lib/asterisk/modules/app_waitforsilence.so -#usr/lib/asterisk/modules/app_while.so -#usr/lib/asterisk/modules/app_zapateller.so -#usr/lib/asterisk/modules/app_zapbarge.so -#usr/lib/asterisk/modules/app_zapras.so -#usr/lib/asterisk/modules/app_zapscan.so -#usr/lib/asterisk/modules/cdr_csv.so -#usr/lib/asterisk/modules/cdr_custom.so -#usr/lib/asterisk/modules/cdr_manager.so -#usr/lib/asterisk/modules/chan_agent.so -#usr/lib/asterisk/modules/chan_capi.so -#usr/lib/asterisk/modules/chan_features.so -#usr/lib/asterisk/modules/chan_iax2.so -#usr/lib/asterisk/modules/chan_local.so -#usr/lib/asterisk/modules/chan_mgcp.so -#usr/lib/asterisk/modules/chan_oss.so -#usr/lib/asterisk/modules/chan_phone.so -#usr/lib/asterisk/modules/chan_sip.so -#usr/lib/asterisk/modules/chan_skinny.so -#usr/lib/asterisk/modules/chan_zap.so -#usr/lib/asterisk/modules/codec_a_mu.so -#usr/lib/asterisk/modules/codec_adpcm.so -#usr/lib/asterisk/modules/codec_alaw.so -#usr/lib/asterisk/modules/codec_g726.so -#usr/lib/asterisk/modules/codec_gsm.so -#usr/lib/asterisk/modules/codec_ilbc.so -#usr/lib/asterisk/modules/codec_lpc10.so -#usr/lib/asterisk/modules/codec_ulaw.so -#usr/lib/asterisk/modules/format_au.so -#usr/lib/asterisk/modules/format_g723.so -#usr/lib/asterisk/modules/format_g726.so -#usr/lib/asterisk/modules/format_g729.so -#usr/lib/asterisk/modules/format_gsm.so -#usr/lib/asterisk/modules/format_h263.so -#usr/lib/asterisk/modules/format_ilbc.so -#usr/lib/asterisk/modules/format_jpeg.so -#usr/lib/asterisk/modules/format_pcm.so -#usr/lib/asterisk/modules/format_pcm_alaw.so -#usr/lib/asterisk/modules/format_sln.so -#usr/lib/asterisk/modules/format_vox.so -#usr/lib/asterisk/modules/format_wav.so -#usr/lib/asterisk/modules/format_wav_gsm.so -#usr/lib/asterisk/modules/func_callerid.so -#usr/lib/asterisk/modules/func_enum.so -#usr/lib/asterisk/modules/func_uri.so -#usr/lib/asterisk/modules/pbx_ael.so -#usr/lib/asterisk/modules/pbx_config.so -#usr/lib/asterisk/modules/pbx_dundi.so -#usr/lib/asterisk/modules/pbx_functions.so -#usr/lib/asterisk/modules/pbx_loopback.so -#usr/lib/asterisk/modules/pbx_realtime.so -#usr/lib/asterisk/modules/pbx_spool.so -#usr/lib/asterisk/modules/res_adsi.so -#usr/lib/asterisk/modules/res_agi.so -#usr/lib/asterisk/modules/res_crypto.so -#usr/lib/asterisk/modules/res_features.so -#usr/lib/asterisk/modules/res_indications.so -#usr/lib/asterisk/modules/res_monitor.so -#usr/lib/asterisk/modules/res_musiconhold.so -#usr/lib/asterisk/modules/res_watchdog.so -#usr/lib/asterisk/modules/app_saycountpl.so -#usr/lib/asterisk/modules/format_mp3.so -#usr/lib/asterisk/modules/format_ogg_vorbis.so -#usr/lib/pkgconfig/asterisk.pc -usr/sbin/asterisk -usr/sbin/astgenkey -usr/sbin/astman -usr/sbin/autosupport -usr/sbin/rasterisk -usr/sbin/safe_asterisk -usr/sbin/smsq -usr/sbin/stereorize -usr/sbin/streamplayer -#usr/share/man/man8/asterisk.8 -#usr/share/man/man8/astgenkey.8 -#usr/share/man/man8/autosupport.8 -#usr/share/man/man8/safe_asterisk.8 -var/ipfire/asterisk -#var/ipfire/asterisk/adsi.conf -#var/ipfire/asterisk/adtranvofr.conf -#var/ipfire/asterisk/agents.conf -#var/ipfire/asterisk/alarmreceiver.conf -#var/ipfire/asterisk/alsa.conf -#var/ipfire/asterisk/asterisk.adsi -#var/ipfire/asterisk/asterisk.conf -#var/ipfire/asterisk/capi.conf -#var/ipfire/asterisk/cdr.conf -#var/ipfire/asterisk/cdr_custom.conf -#var/ipfire/asterisk/cdr_manager.conf -#var/ipfire/asterisk/cdr_odbc.conf -#var/ipfire/asterisk/cdr_pgsql.conf -#var/ipfire/asterisk/cdr_tds.conf -#var/ipfire/asterisk/codecs.conf -#var/ipfire/asterisk/dnsmgr.conf -#var/ipfire/asterisk/dundi.conf -#var/ipfire/asterisk/enum.conf -#var/ipfire/asterisk/extconfig.conf -#var/ipfire/asterisk/extensions.ael -#var/ipfire/asterisk/extensions.conf -#var/ipfire/asterisk/features.conf -#var/ipfire/asterisk/festival.conf -#var/ipfire/asterisk/iax.conf -#var/ipfire/asterisk/iaxprov.conf -#var/ipfire/asterisk/indications.conf -#var/ipfire/asterisk/logger.conf -#var/ipfire/asterisk/manager.conf -#var/ipfire/asterisk/meetme.conf -#var/ipfire/asterisk/mgcp.conf -#var/ipfire/asterisk/misdn.conf -#var/ipfire/asterisk/modem.conf -#var/ipfire/asterisk/modules.conf -#var/ipfire/asterisk/musiconhold.conf -#var/ipfire/asterisk/osp.conf -#var/ipfire/asterisk/oss.conf -#var/ipfire/asterisk/phone.conf -#var/ipfire/asterisk/privacy.conf -#var/ipfire/asterisk/queues.conf -#var/ipfire/asterisk/res_odbc.conf -#var/ipfire/asterisk/rpt.conf -#var/ipfire/asterisk/rtp.conf -#var/ipfire/asterisk/sip.conf -#var/ipfire/asterisk/sip_notify.conf -#var/ipfire/asterisk/skinny.conf -#var/ipfire/asterisk/telcordia-1.adsi -#var/ipfire/asterisk/voicemail.conf -#var/ipfire/asterisk/vpb.conf -#var/ipfire/asterisk/watchdog.conf -#var/ipfire/asterisk/zapata.conf -#var/lib/asterisk -var/lib/asterisk/agi-bin -#var/lib/asterisk/agi-bin/agi-test.agi -#var/lib/asterisk/agi-bin/eagi-sphinx-test -#var/lib/asterisk/agi-bin/eagi-test -#var/lib/asterisk/agi-bin/xagi-test -#var/lib/asterisk/firmware -#var/lib/asterisk/firmware/iax -#var/lib/asterisk/firmware/iax/iaxy.bin -#var/lib/asterisk/images -#var/lib/asterisk/images/asterisk-intro.jpg -var/lib/asterisk/keys -#var/lib/asterisk/keys/freeworlddialup.pub -#var/lib/asterisk/keys/iaxtel.pub -var/lib/asterisk/mohmp3 -#var/lib/asterisk/mohmp3/fpm-calm-river.mp3 -#var/lib/asterisk/mohmp3/fpm-sunshine.mp3 -#var/lib/asterisk/mohmp3/fpm-world-mix.mp3 -var/lib/asterisk/sounds -#var/lib/asterisk/sounds/agent-alreadyon.gsm -#var/lib/asterisk/sounds/agent-incorrect.gsm -#var/lib/asterisk/sounds/agent-loggedoff.gsm -#var/lib/asterisk/sounds/agent-loginok.gsm -#var/lib/asterisk/sounds/agent-newlocation.gsm -#var/lib/asterisk/sounds/agent-pass.gsm -#var/lib/asterisk/sounds/agent-user.gsm -#var/lib/asterisk/sounds/auth-incorrect.gsm -#var/lib/asterisk/sounds/auth-thankyou.gsm -#var/lib/asterisk/sounds/beep.gsm -#var/lib/asterisk/sounds/beeperr.gsm -#var/lib/asterisk/sounds/conf-adminmenu.gsm -#var/lib/asterisk/sounds/conf-enteringno.gsm -#var/lib/asterisk/sounds/conf-errormenu.gsm -#var/lib/asterisk/sounds/conf-getchannel.gsm -#var/lib/asterisk/sounds/conf-getconfno.gsm -#var/lib/asterisk/sounds/conf-getpin.gsm -#var/lib/asterisk/sounds/conf-hasjoin.gsm -#var/lib/asterisk/sounds/conf-hasleft.gsm -#var/lib/asterisk/sounds/conf-invalid.gsm -#var/lib/asterisk/sounds/conf-invalidpin.gsm -#var/lib/asterisk/sounds/conf-kicked.gsm -#var/lib/asterisk/sounds/conf-leaderhasleft.gsm -#var/lib/asterisk/sounds/conf-locked.gsm -#var/lib/asterisk/sounds/conf-lockednow.gsm -#var/lib/asterisk/sounds/conf-muted.gsm -#var/lib/asterisk/sounds/conf-noempty.gsm -#var/lib/asterisk/sounds/conf-onlyone.gsm -#var/lib/asterisk/sounds/conf-onlyperson.gsm -#var/lib/asterisk/sounds/conf-otherinparty.gsm -#var/lib/asterisk/sounds/conf-placeintoconf.gsm -#var/lib/asterisk/sounds/conf-thereare.gsm -#var/lib/asterisk/sounds/conf-unlockednow.gsm -#var/lib/asterisk/sounds/conf-unmuted.gsm -#var/lib/asterisk/sounds/conf-usermenu.gsm -#var/lib/asterisk/sounds/conf-userswilljoin.gsm -#var/lib/asterisk/sounds/conf-userwilljoin.gsm -#var/lib/asterisk/sounds/conf-waitforleader.gsm -#var/lib/asterisk/sounds/demo-abouttotry.gsm -#var/lib/asterisk/sounds/demo-congrats.gsm -#var/lib/asterisk/sounds/demo-echodone.gsm -#var/lib/asterisk/sounds/demo-echotest.gsm -#var/lib/asterisk/sounds/demo-enterkeywords.gsm -#var/lib/asterisk/sounds/demo-instruct.gsm -#var/lib/asterisk/sounds/demo-moreinfo.gsm -#var/lib/asterisk/sounds/demo-nogo.gsm -#var/lib/asterisk/sounds/demo-nomatch.gsm -#var/lib/asterisk/sounds/demo-thanks.gsm -#var/lib/asterisk/sounds/dictate -#var/lib/asterisk/sounds/dictate/both_help.gsm -#var/lib/asterisk/sounds/dictate/enter_filename.gsm -#var/lib/asterisk/sounds/dictate/forhelp.gsm -#var/lib/asterisk/sounds/dictate/pause.gsm -#var/lib/asterisk/sounds/dictate/paused.gsm -#var/lib/asterisk/sounds/dictate/play_help.gsm -#var/lib/asterisk/sounds/dictate/playback.gsm -#var/lib/asterisk/sounds/dictate/playback_mode.gsm -#var/lib/asterisk/sounds/dictate/record.gsm -#var/lib/asterisk/sounds/dictate/record_help.gsm -#var/lib/asterisk/sounds/dictate/record_mode.gsm -#var/lib/asterisk/sounds/dictate/truncating_audio.gsm -#var/lib/asterisk/sounds/digits -#var/lib/asterisk/sounds/digits/0.gsm -#var/lib/asterisk/sounds/digits/1.gsm -#var/lib/asterisk/sounds/digits/10.gsm -#var/lib/asterisk/sounds/digits/11.gsm -#var/lib/asterisk/sounds/digits/12.gsm -#var/lib/asterisk/sounds/digits/13.gsm -#var/lib/asterisk/sounds/digits/14.gsm -#var/lib/asterisk/sounds/digits/15.gsm -#var/lib/asterisk/sounds/digits/16.gsm -#var/lib/asterisk/sounds/digits/17.gsm -#var/lib/asterisk/sounds/digits/18.gsm -#var/lib/asterisk/sounds/digits/19.gsm -#var/lib/asterisk/sounds/digits/2.gsm -#var/lib/asterisk/sounds/digits/20.gsm -#var/lib/asterisk/sounds/digits/3.gsm -#var/lib/asterisk/sounds/digits/30.gsm -#var/lib/asterisk/sounds/digits/4.gsm -#var/lib/asterisk/sounds/digits/40.gsm -#var/lib/asterisk/sounds/digits/5.gsm -#var/lib/asterisk/sounds/digits/50.gsm -#var/lib/asterisk/sounds/digits/6.gsm -#var/lib/asterisk/sounds/digits/60.gsm -#var/lib/asterisk/sounds/digits/7.gsm -#var/lib/asterisk/sounds/digits/70.gsm -#var/lib/asterisk/sounds/digits/8.gsm -#var/lib/asterisk/sounds/digits/80.gsm -#var/lib/asterisk/sounds/digits/9.gsm -#var/lib/asterisk/sounds/digits/90.gsm -#var/lib/asterisk/sounds/digits/a-m.gsm -#var/lib/asterisk/sounds/digits/at.gsm -#var/lib/asterisk/sounds/digits/day-0.gsm -#var/lib/asterisk/sounds/digits/day-1.gsm -#var/lib/asterisk/sounds/digits/day-2.gsm -#var/lib/asterisk/sounds/digits/day-3.gsm -#var/lib/asterisk/sounds/digits/day-4.gsm -#var/lib/asterisk/sounds/digits/day-5.gsm -#var/lib/asterisk/sounds/digits/day-6.gsm -#var/lib/asterisk/sounds/digits/dollars.gsm -#var/lib/asterisk/sounds/digits/h-1.gsm -#var/lib/asterisk/sounds/digits/h-10.gsm -#var/lib/asterisk/sounds/digits/h-11.gsm -#var/lib/asterisk/sounds/digits/h-12.gsm -#var/lib/asterisk/sounds/digits/h-13.gsm -#var/lib/asterisk/sounds/digits/h-14.gsm -#var/lib/asterisk/sounds/digits/h-15.gsm -#var/lib/asterisk/sounds/digits/h-16.gsm -#var/lib/asterisk/sounds/digits/h-17.gsm -#var/lib/asterisk/sounds/digits/h-18.gsm -#var/lib/asterisk/sounds/digits/h-19.gsm -#var/lib/asterisk/sounds/digits/h-2.gsm -#var/lib/asterisk/sounds/digits/h-20.gsm -#var/lib/asterisk/sounds/digits/h-3.gsm -#var/lib/asterisk/sounds/digits/h-30.gsm -#var/lib/asterisk/sounds/digits/h-4.gsm -#var/lib/asterisk/sounds/digits/h-5.gsm -#var/lib/asterisk/sounds/digits/h-6.gsm -#var/lib/asterisk/sounds/digits/h-7.gsm -#var/lib/asterisk/sounds/digits/h-8.gsm -#var/lib/asterisk/sounds/digits/h-9.gsm -#var/lib/asterisk/sounds/digits/hundred.gsm -#var/lib/asterisk/sounds/digits/million.gsm -#var/lib/asterisk/sounds/digits/minus.gsm -#var/lib/asterisk/sounds/digits/mon-0.gsm -#var/lib/asterisk/sounds/digits/mon-1.gsm -#var/lib/asterisk/sounds/digits/mon-10.gsm -#var/lib/asterisk/sounds/digits/mon-11.gsm -#var/lib/asterisk/sounds/digits/mon-2.gsm -#var/lib/asterisk/sounds/digits/mon-3.gsm -#var/lib/asterisk/sounds/digits/mon-4.gsm -#var/lib/asterisk/sounds/digits/mon-5.gsm -#var/lib/asterisk/sounds/digits/mon-6.gsm -#var/lib/asterisk/sounds/digits/mon-7.gsm -#var/lib/asterisk/sounds/digits/mon-8.gsm -#var/lib/asterisk/sounds/digits/mon-9.gsm -#var/lib/asterisk/sounds/digits/oclock.gsm -#var/lib/asterisk/sounds/digits/oh.gsm -#var/lib/asterisk/sounds/digits/p-m.gsm -#var/lib/asterisk/sounds/digits/pound.gsm -#var/lib/asterisk/sounds/digits/star.gsm -#var/lib/asterisk/sounds/digits/thousand.gsm -#var/lib/asterisk/sounds/digits/today.gsm -#var/lib/asterisk/sounds/digits/tomorrow.gsm -#var/lib/asterisk/sounds/digits/yesterday.gsm -#var/lib/asterisk/sounds/dir-instr.gsm -#var/lib/asterisk/sounds/dir-intro-fn.gsm -#var/lib/asterisk/sounds/dir-intro.gsm -#var/lib/asterisk/sounds/dir-nomatch.gsm -#var/lib/asterisk/sounds/dir-nomore.gsm -#var/lib/asterisk/sounds/hello-world.gsm -#var/lib/asterisk/sounds/invalid.gsm -#var/lib/asterisk/sounds/letters -#var/lib/asterisk/sounds/letters/a.gsm -#var/lib/asterisk/sounds/letters/at.gsm -#var/lib/asterisk/sounds/letters/b.gsm -#var/lib/asterisk/sounds/letters/c.gsm -#var/lib/asterisk/sounds/letters/d.gsm -#var/lib/asterisk/sounds/letters/dash.gsm -#var/lib/asterisk/sounds/letters/dollar.gsm -#var/lib/asterisk/sounds/letters/dot.gsm -#var/lib/asterisk/sounds/letters/e.gsm -#var/lib/asterisk/sounds/letters/equals.gsm -#var/lib/asterisk/sounds/letters/exclaimation-point.gsm -#var/lib/asterisk/sounds/letters/f.gsm -#var/lib/asterisk/sounds/letters/g.gsm -#var/lib/asterisk/sounds/letters/h.gsm -#var/lib/asterisk/sounds/letters/i.gsm -#var/lib/asterisk/sounds/letters/j.gsm -#var/lib/asterisk/sounds/letters/k.gsm -#var/lib/asterisk/sounds/letters/l.gsm -#var/lib/asterisk/sounds/letters/m.gsm -#var/lib/asterisk/sounds/letters/n.gsm -#var/lib/asterisk/sounds/letters/o.gsm -#var/lib/asterisk/sounds/letters/p.gsm -#var/lib/asterisk/sounds/letters/plus.gsm -#var/lib/asterisk/sounds/letters/q.gsm -#var/lib/asterisk/sounds/letters/r.gsm -#var/lib/asterisk/sounds/letters/s.gsm -#var/lib/asterisk/sounds/letters/slash.gsm -#var/lib/asterisk/sounds/letters/space.gsm -#var/lib/asterisk/sounds/letters/t.gsm -#var/lib/asterisk/sounds/letters/u.gsm -#var/lib/asterisk/sounds/letters/v.gsm -#var/lib/asterisk/sounds/letters/w.gsm -#var/lib/asterisk/sounds/letters/x.gsm -#var/lib/asterisk/sounds/letters/y.gsm -#var/lib/asterisk/sounds/letters/z.gsm -#var/lib/asterisk/sounds/letters/zed.gsm -#var/lib/asterisk/sounds/pbx-invalid.gsm -#var/lib/asterisk/sounds/pbx-invalidpark.gsm -#var/lib/asterisk/sounds/pbx-transfer.gsm -#var/lib/asterisk/sounds/phonetic -#var/lib/asterisk/sounds/phonetic/9_p.gsm -#var/lib/asterisk/sounds/phonetic/a_p.gsm -#var/lib/asterisk/sounds/phonetic/b_p.gsm -#var/lib/asterisk/sounds/phonetic/c_p.gsm -#var/lib/asterisk/sounds/phonetic/d_p.gsm -#var/lib/asterisk/sounds/phonetic/e_p.gsm -#var/lib/asterisk/sounds/phonetic/f_p.gsm -#var/lib/asterisk/sounds/phonetic/g_p.gsm -#var/lib/asterisk/sounds/phonetic/h_p.gsm -#var/lib/asterisk/sounds/phonetic/i_p.gsm -#var/lib/asterisk/sounds/phonetic/j_p.gsm -#var/lib/asterisk/sounds/phonetic/k_p.gsm -#var/lib/asterisk/sounds/phonetic/l_p.gsm -#var/lib/asterisk/sounds/phonetic/m_p.gsm -#var/lib/asterisk/sounds/phonetic/n_p.gsm -#var/lib/asterisk/sounds/phonetic/o_p.gsm -#var/lib/asterisk/sounds/phonetic/p_p.gsm -#var/lib/asterisk/sounds/phonetic/q_p.gsm -#var/lib/asterisk/sounds/phonetic/r_p.gsm -#var/lib/asterisk/sounds/phonetic/s_p.gsm -#var/lib/asterisk/sounds/phonetic/t_p.gsm -#var/lib/asterisk/sounds/phonetic/u_p.gsm -#var/lib/asterisk/sounds/phonetic/v_p.gsm -#var/lib/asterisk/sounds/phonetic/w_p.gsm -#var/lib/asterisk/sounds/phonetic/x_p.gsm -#var/lib/asterisk/sounds/phonetic/y_p.gsm -#var/lib/asterisk/sounds/phonetic/z_p.gsm -#var/lib/asterisk/sounds/priv-callee-options.gsm -#var/lib/asterisk/sounds/priv-callerintros -#var/lib/asterisk/sounds/priv-callpending.gsm -#var/lib/asterisk/sounds/priv-introsaved.gsm -#var/lib/asterisk/sounds/priv-recordintro.gsm -#var/lib/asterisk/sounds/privacy-incorrect.gsm -#var/lib/asterisk/sounds/privacy-prompt.gsm -#var/lib/asterisk/sounds/privacy-thankyou.gsm -#var/lib/asterisk/sounds/privacy-unident.gsm -#var/lib/asterisk/sounds/queue-callswaiting.gsm -#var/lib/asterisk/sounds/queue-holdtime.gsm -#var/lib/asterisk/sounds/queue-less-than.gsm -#var/lib/asterisk/sounds/queue-minutes.gsm -#var/lib/asterisk/sounds/queue-periodic-announce.gsm -#var/lib/asterisk/sounds/queue-reporthold.gsm -#var/lib/asterisk/sounds/queue-seconds.gsm -#var/lib/asterisk/sounds/queue-thankyou.gsm -#var/lib/asterisk/sounds/queue-thereare.gsm -#var/lib/asterisk/sounds/queue-youarenext.gsm -#var/lib/asterisk/sounds/screen-callee-options.gsm -#var/lib/asterisk/sounds/spy-agent.gsm -#var/lib/asterisk/sounds/spy-h323.gsm -#var/lib/asterisk/sounds/spy-iax.gsm -#var/lib/asterisk/sounds/spy-iax2.gsm -#var/lib/asterisk/sounds/spy-mgcp.gsm -#var/lib/asterisk/sounds/spy-sip.gsm -#var/lib/asterisk/sounds/spy-skinny.gsm -#var/lib/asterisk/sounds/spy-zap.gsm -#var/lib/asterisk/sounds/ss-noservice.gsm -#var/lib/asterisk/sounds/transfer.gsm -#var/lib/asterisk/sounds/tt-allbusy.gsm -#var/lib/asterisk/sounds/tt-monkeys.gsm -#var/lib/asterisk/sounds/tt-monkeysintro.gsm -#var/lib/asterisk/sounds/tt-somethingwrong.gsm -#var/lib/asterisk/sounds/tt-weasels.gsm -#var/lib/asterisk/sounds/vm-Cust1.gsm -#var/lib/asterisk/sounds/vm-Cust2.gsm -#var/lib/asterisk/sounds/vm-Cust3.gsm -#var/lib/asterisk/sounds/vm-Cust4.gsm -#var/lib/asterisk/sounds/vm-Cust5.gsm -#var/lib/asterisk/sounds/vm-Family.gsm -#var/lib/asterisk/sounds/vm-Friends.gsm -#var/lib/asterisk/sounds/vm-INBOX.gsm -#var/lib/asterisk/sounds/vm-Old.gsm -#var/lib/asterisk/sounds/vm-Work.gsm -#var/lib/asterisk/sounds/vm-advopts.gsm -#var/lib/asterisk/sounds/vm-and.gsm -#var/lib/asterisk/sounds/vm-calldiffnum.gsm -#var/lib/asterisk/sounds/vm-changeto.gsm -#var/lib/asterisk/sounds/vm-delete.gsm -#var/lib/asterisk/sounds/vm-deleted.gsm -#var/lib/asterisk/sounds/vm-dialout.gsm -#var/lib/asterisk/sounds/vm-enter-num-to-call.gsm -#var/lib/asterisk/sounds/vm-extension.gsm -#var/lib/asterisk/sounds/vm-first.gsm -#var/lib/asterisk/sounds/vm-for.gsm -#var/lib/asterisk/sounds/vm-forward.gsm -#var/lib/asterisk/sounds/vm-forwardoptions.gsm -#var/lib/asterisk/sounds/vm-from-extension.gsm -#var/lib/asterisk/sounds/vm-from-phonenumber.gsm -#var/lib/asterisk/sounds/vm-from.gsm -#var/lib/asterisk/sounds/vm-goodbye.gsm -#var/lib/asterisk/sounds/vm-helpexit.gsm -#var/lib/asterisk/sounds/vm-incorrect-mailbox.gsm -#var/lib/asterisk/sounds/vm-incorrect.gsm -#var/lib/asterisk/sounds/vm-instructions.gsm -#var/lib/asterisk/sounds/vm-intro.gsm -#var/lib/asterisk/sounds/vm-isonphone.gsm -#var/lib/asterisk/sounds/vm-isunavail.gsm -#var/lib/asterisk/sounds/vm-last.gsm -#var/lib/asterisk/sounds/vm-leavemsg.gsm -#var/lib/asterisk/sounds/vm-login.gsm -#var/lib/asterisk/sounds/vm-mailboxfull.gsm -#var/lib/asterisk/sounds/vm-message.gsm -#var/lib/asterisk/sounds/vm-messages.gsm -#var/lib/asterisk/sounds/vm-minutes.gsm -#var/lib/asterisk/sounds/vm-mismatch.gsm -#var/lib/asterisk/sounds/vm-msginstruct.gsm -#var/lib/asterisk/sounds/vm-msgsaved.gsm -#var/lib/asterisk/sounds/vm-newpassword.gsm -#var/lib/asterisk/sounds/vm-newuser.gsm -#var/lib/asterisk/sounds/vm-next.gsm -#var/lib/asterisk/sounds/vm-no.gsm -#var/lib/asterisk/sounds/vm-nobodyavail.gsm -#var/lib/asterisk/sounds/vm-nobox.gsm -#var/lib/asterisk/sounds/vm-nomore.gsm -#var/lib/asterisk/sounds/vm-nonumber.gsm -#var/lib/asterisk/sounds/vm-num-i-have.gsm -#var/lib/asterisk/sounds/vm-onefor.gsm -#var/lib/asterisk/sounds/vm-options.gsm -#var/lib/asterisk/sounds/vm-opts.gsm -#var/lib/asterisk/sounds/vm-passchanged.gsm -#var/lib/asterisk/sounds/vm-password.gsm -#var/lib/asterisk/sounds/vm-press.gsm -#var/lib/asterisk/sounds/vm-prev.gsm -#var/lib/asterisk/sounds/vm-reachoper.gsm -#var/lib/asterisk/sounds/vm-rec-busy.gsm -#var/lib/asterisk/sounds/vm-rec-name.gsm -#var/lib/asterisk/sounds/vm-rec-temp.gsm -#var/lib/asterisk/sounds/vm-rec-unv.gsm -#var/lib/asterisk/sounds/vm-received.gsm -#var/lib/asterisk/sounds/vm-reenterpassword.gsm -#var/lib/asterisk/sounds/vm-repeat.gsm -#var/lib/asterisk/sounds/vm-review.gsm -#var/lib/asterisk/sounds/vm-saved.gsm -#var/lib/asterisk/sounds/vm-savedto.gsm -#var/lib/asterisk/sounds/vm-savefolder.gsm -#var/lib/asterisk/sounds/vm-savemessage.gsm -#var/lib/asterisk/sounds/vm-saveoper.gsm -#var/lib/asterisk/sounds/vm-sorry.gsm -#var/lib/asterisk/sounds/vm-star-cancel.gsm -#var/lib/asterisk/sounds/vm-starmain.gsm -#var/lib/asterisk/sounds/vm-tempgreeting.gsm -#var/lib/asterisk/sounds/vm-tempgreeting2.gsm -#var/lib/asterisk/sounds/vm-tempremoved.gsm -#var/lib/asterisk/sounds/vm-then-pound.gsm -#var/lib/asterisk/sounds/vm-theperson.gsm -#var/lib/asterisk/sounds/vm-tocallback.gsm -#var/lib/asterisk/sounds/vm-tocallnum.gsm -#var/lib/asterisk/sounds/vm-tocancel.gsm -#var/lib/asterisk/sounds/vm-tocancelmsg.gsm -#var/lib/asterisk/sounds/vm-toenternumber.gsm -#var/lib/asterisk/sounds/vm-toforward.gsm -#var/lib/asterisk/sounds/vm-tohearenv.gsm -#var/lib/asterisk/sounds/vm-tomakecall.gsm -#var/lib/asterisk/sounds/vm-tooshort.gsm -#var/lib/asterisk/sounds/vm-toreply.gsm -#var/lib/asterisk/sounds/vm-torerecord.gsm -#var/lib/asterisk/sounds/vm-undelete.gsm -#var/lib/asterisk/sounds/vm-undeleted.gsm -#var/lib/asterisk/sounds/vm-unknown-caller.gsm -#var/lib/asterisk/sounds/vm-whichbox.gsm -#var/lib/asterisk/sounds/vm-youhave.gsm -#var/lib/asterisk/sounds/1-for-am-2-for-pm.gsm -#var/lib/asterisk/sounds/1-yes-2-no.gsm -#var/lib/asterisk/sounds/T-changed-to.gsm -#var/lib/asterisk/sounds/T-is-not-available.gsm -#var/lib/asterisk/sounds/T-to-disable-ancmnt.gsm -#var/lib/asterisk/sounds/T-to-enable-ancmnt.gsm -#var/lib/asterisk/sounds/T-to-hear-cur-ancmnt.gsm -#var/lib/asterisk/sounds/T-to-leave-msg.gsm -#var/lib/asterisk/sounds/T-to-reach-main-office.gsm -#var/lib/asterisk/sounds/T-to-rec-ancmnt.gsm -#var/lib/asterisk/sounds/T-to-rtrn-to-main-menu.gsm -#var/lib/asterisk/sounds/a-charge-for-this-svc.gsm -#var/lib/asterisk/sounds/a-collect-charge-of.gsm -#var/lib/asterisk/sounds/a-collect-charge.gsm -#var/lib/asterisk/sounds/a-connect-charge-of.gsm -#var/lib/asterisk/sounds/a-connect-charge.gsm -#var/lib/asterisk/sounds/abandon-all-hope.gsm -#var/lib/asterisk/sounds/abandons.gsm -#var/lib/asterisk/sounds/academic-support.gsm -#var/lib/asterisk/sounds/access-code.gsm -#var/lib/asterisk/sounds/accessible-through-system.gsm -#var/lib/asterisk/sounds/account-balance-is.gsm -#var/lib/asterisk/sounds/accounting.gsm -#var/lib/asterisk/sounds/accounts-payable.gsm -#var/lib/asterisk/sounds/accounts-receivable.gsm -#var/lib/asterisk/sounds/activated.gsm -#var/lib/asterisk/sounds/added-to.gsm -#var/lib/asterisk/sounds/added.gsm -#var/lib/asterisk/sounds/address.gsm -#var/lib/asterisk/sounds/administration.gsm -#var/lib/asterisk/sounds/advised-to-seek-shelter.gsm -#var/lib/asterisk/sounds/after-the-tone.gsm -#var/lib/asterisk/sounds/afternoon.gsm -#var/lib/asterisk/sounds/airport.gsm -#var/lib/asterisk/sounds/alabama.gsm -#var/lib/asterisk/sounds/alaska.gsm -#var/lib/asterisk/sounds/albuquerque.gsm -#var/lib/asterisk/sounds/all-circuits-busy-now.gsm -#var/lib/asterisk/sounds/all-outgoing-lines-unavailable.gsm -#var/lib/asterisk/sounds/all-reps-busy.gsm -#var/lib/asterisk/sounds/all-your-base.gsm -#var/lib/asterisk/sounds/altitude.gsm -#var/lib/asterisk/sounds/ampersand.gsm -#var/lib/asterisk/sounds/an-error-has-occured.gsm -#var/lib/asterisk/sounds/and-area-code.gsm -#var/lib/asterisk/sounds/and-or.gsm -#var/lib/asterisk/sounds/and-prs-pound-whn-finished.gsm -#var/lib/asterisk/sounds/and.gsm -#var/lib/asterisk/sounds/another-time.gsm -#var/lib/asterisk/sounds/approaching.gsm -#var/lib/asterisk/sounds/approximately.gsm -#var/lib/asterisk/sounds/are-you-still-there.gsm -#var/lib/asterisk/sounds/are-you-still-there2.gsm -#var/lib/asterisk/sounds/arizona.gsm -#var/lib/asterisk/sounds/arkansas.gsm -#var/lib/asterisk/sounds/arlington.gsm -#var/lib/asterisk/sounds/astcc-account-balance-is.gsm -#var/lib/asterisk/sounds/astcc-account-number-invalid.gsm -#var/lib/asterisk/sounds/astcc-balance-of-account-is.gsm -#var/lib/asterisk/sounds/astcc-card-number-invalid.gsm -#var/lib/asterisk/sounds/astcc-digit-account-number.gsm -#var/lib/asterisk/sounds/astcc-followed-by-pound.gsm -#var/lib/asterisk/sounds/astcc-followed-by-the-hash-key.gsm -#var/lib/asterisk/sounds/astcc-followed-by-the-pound-key.gsm -#var/lib/asterisk/sounds/astcc-login12pound.gsm -#var/lib/asterisk/sounds/astcc-please-enter-your.gsm -#var/lib/asterisk/sounds/astcc-skipping-any-punctuation.gsm -#var/lib/asterisk/sounds/asterisk-friend.gsm -#var/lib/asterisk/sounds/at-any-time.gsm -#var/lib/asterisk/sounds/at-customers-request.gsm -#var/lib/asterisk/sounds/at-following-number.gsm -#var/lib/asterisk/sounds/at-sign.gsm -#var/lib/asterisk/sounds/at-tone-time-exactly.gsm -#var/lib/asterisk/sounds/at.gsm -#var/lib/asterisk/sounds/athletics.gsm -#var/lib/asterisk/sounds/atlanta.gsm -#var/lib/asterisk/sounds/atlantic.gsm -#var/lib/asterisk/sounds/attention-required.gsm -#var/lib/asterisk/sounds/auditing.gsm -#var/lib/asterisk/sounds/austin.gsm -#var/lib/asterisk/sounds/available-options.gsm -#var/lib/asterisk/sounds/available.gsm -#var/lib/asterisk/sounds/avg-speed-answer.gsm -#var/lib/asterisk/sounds/away-naughty-boy.gsm -#var/lib/asterisk/sounds/away-naughty-girl.gsm -#var/lib/asterisk/sounds/backslash.gsm -#var/lib/asterisk/sounds/bad.gsm -#var/lib/asterisk/sounds/baltimore.gsm -#var/lib/asterisk/sounds/bar.gsm -#var/lib/asterisk/sounds/barn.gsm -#var/lib/asterisk/sounds/barns.gsm -#var/lib/asterisk/sounds/barometric.gsm -#var/lib/asterisk/sounds/bearing.gsm -#var/lib/asterisk/sounds/beaufort.gsm -#var/lib/asterisk/sounds/because-paranoid.gsm -#var/lib/asterisk/sounds/before-the-number.gsm -#var/lib/asterisk/sounds/believe-its-free.gsm -#var/lib/asterisk/sounds/billing-and-collections.gsm -#var/lib/asterisk/sounds/billing.gsm -#var/lib/asterisk/sounds/billionth.gsm -#var/lib/asterisk/sounds/bits.gsm -#var/lib/asterisk/sounds/blue-eyed-polar-bear.gsm -#var/lib/asterisk/sounds/bookstore.gsm -#var/lib/asterisk/sounds/boston.gsm -#var/lib/asterisk/sounds/box.gsm -#var/lib/asterisk/sounds/brian.gsm -#var/lib/asterisk/sounds/business-development.gsm -#var/lib/asterisk/sounds/busy-hangovers.gsm -#var/lib/asterisk/sounds/busy-pls-hold.gsm -#var/lib/asterisk/sounds/but.gsm -#var/lib/asterisk/sounds/by.gsm -#var/lib/asterisk/sounds/bytes.gsm -#var/lib/asterisk/sounds/cafeteria.gsm -#var/lib/asterisk/sounds/california.gsm -#var/lib/asterisk/sounds/call-forward.gsm -#var/lib/asterisk/sounds/call-forwarding.gsm -#var/lib/asterisk/sounds/call-fwd-cancelled.gsm -#var/lib/asterisk/sounds/call-fwd-no-ans.gsm -#var/lib/asterisk/sounds/call-fwd-on-busy.gsm -#var/lib/asterisk/sounds/call-fwd-parallel.gsm -#var/lib/asterisk/sounds/call-fwd-unconditional.gsm -#var/lib/asterisk/sounds/call-preempted.gsm -#var/lib/asterisk/sounds/call-quality-menu.gsm -#var/lib/asterisk/sounds/call-requres.gsm -#var/lib/asterisk/sounds/call-terminated.gsm -#var/lib/asterisk/sounds/call-waiting.gsm -#var/lib/asterisk/sounds/call.gsm -#var/lib/asterisk/sounds/calls-taken-by.gsm -#var/lib/asterisk/sounds/calls-waiting-for-rep.gsm -#var/lib/asterisk/sounds/calls.gsm -#var/lib/asterisk/sounds/campground-office.gsm -#var/lib/asterisk/sounds/cancelled.gsm -#var/lib/asterisk/sounds/cannot-complete-as-dialed.gsm -#var/lib/asterisk/sounds/cannot-complete-network-error.gsm -#var/lib/asterisk/sounds/cannot-complete-otherend-error.gsm -#var/lib/asterisk/sounds/cannot-complete-temp-error.gsm -#var/lib/asterisk/sounds/card-balance-is.gsm -#var/lib/asterisk/sounds/card-is-invalid.gsm -#var/lib/asterisk/sounds/card-number.gsm -#var/lib/asterisk/sounds/carried-away-by-monkeys.gsm -#var/lib/asterisk/sounds/cause-code.gsm -#var/lib/asterisk/sounds/celsius.gsm -#var/lib/asterisk/sounds/cent.gsm -#var/lib/asterisk/sounds/central.gsm -#var/lib/asterisk/sounds/cents-per-minute.gsm -#var/lib/asterisk/sounds/cents.gsm -#var/lib/asterisk/sounds/ceo-office.gsm -#var/lib/asterisk/sounds/chance-of.gsm -#var/lib/asterisk/sounds/changing.gsm -#var/lib/asterisk/sounds/channel-insecure-warn.gsm -#var/lib/asterisk/sounds/channel-secure.gsm -#var/lib/asterisk/sounds/channel.gsm -#var/lib/asterisk/sounds/charlotte.gsm -#var/lib/asterisk/sounds/chat-room.gsm -#var/lib/asterisk/sounds/check-number-dial-again.gsm -#var/lib/asterisk/sounds/chemistry.gsm -#var/lib/asterisk/sounds/chicago.gsm -#var/lib/asterisk/sounds/chris.gsm -#var/lib/asterisk/sounds/claims.gsm -#var/lib/asterisk/sounds/clear.gsm -#var/lib/asterisk/sounds/clearing.gsm -#var/lib/asterisk/sounds/cleveland.gsm -#var/lib/asterisk/sounds/clli.gsm -#var/lib/asterisk/sounds/close-parenthesis.gsm -#var/lib/asterisk/sounds/clouds.gsm -#var/lib/asterisk/sounds/cloudy.gsm -#var/lib/asterisk/sounds/collections.gsm -#var/lib/asterisk/sounds/colorado-springs.gsm -#var/lib/asterisk/sounds/colorado.gsm -#var/lib/asterisk/sounds/columbus.gsm -#var/lib/asterisk/sounds/comma.gsm -#var/lib/asterisk/sounds/communications.gsm -#var/lib/asterisk/sounds/company-dir-411.gsm -#var/lib/asterisk/sounds/complaint.gsm -#var/lib/asterisk/sounds/compliance.gsm -#var/lib/asterisk/sounds/computer-friend1.gsm -#var/lib/asterisk/sounds/computer-friend2.gsm -#var/lib/asterisk/sounds/conditions.gsm -#var/lib/asterisk/sounds/conf-banned.gsm -#var/lib/asterisk/sounds/conf-full.gsm -#var/lib/asterisk/sounds/conf-hasentered.gsm -#var/lib/asterisk/sounds/conf-onlypersonleft.gsm -#var/lib/asterisk/sounds/conf-peopleinconf.gsm -#var/lib/asterisk/sounds/conf-sysop.gsm -#var/lib/asterisk/sounds/conf-sysopreq.gsm -#var/lib/asterisk/sounds/conf-sysopreqcancelled.gsm -#var/lib/asterisk/sounds/conf-youareinconfnum.gsm -#var/lib/asterisk/sounds/conference-call.gsm -#var/lib/asterisk/sounds/conference-reservations.gsm -#var/lib/asterisk/sounds/conference.gsm -#var/lib/asterisk/sounds/confirm-number-is.gsm -#var/lib/asterisk/sounds/connected.gsm -#var/lib/asterisk/sounds/connecticut.gsm -#var/lib/asterisk/sounds/connecting.gsm -#var/lib/asterisk/sounds/connection-failed.gsm -#var/lib/asterisk/sounds/connection-timed-out.gsm -#var/lib/asterisk/sounds/continue-english-press.gsm -#var/lib/asterisk/sounds/continue-in-english.gsm -#var/lib/asterisk/sounds/copy-center.gsm -#var/lib/asterisk/sounds/could-lose-a-few-pounds.gsm -#var/lib/asterisk/sounds/counseling-services.gsm -#var/lib/asterisk/sounds/count.gsm -#var/lib/asterisk/sounds/crash.gsm -#var/lib/asterisk/sounds/current-time-is.gsm -#var/lib/asterisk/sounds/currently.gsm -#var/lib/asterisk/sounds/customer-accounts.gsm -#var/lib/asterisk/sounds/customer-relations.gsm -#var/lib/asterisk/sounds/customer-service.gsm -#var/lib/asterisk/sounds/cyclone.gsm -#var/lib/asterisk/sounds/dallas.gsm -#var/lib/asterisk/sounds/dash.gsm -#var/lib/asterisk/sounds/date.gsm -#var/lib/asterisk/sounds/day.gsm -#var/lib/asterisk/sounds/daylight.gsm -#var/lib/asterisk/sounds/days.gsm -#var/lib/asterisk/sounds/de-activated.gsm -#var/lib/asterisk/sounds/deadbeat.gsm -#var/lib/asterisk/sounds/decode.gsm -#var/lib/asterisk/sounds/default-attendant.gsm -#var/lib/asterisk/sounds/degrees.gsm -#var/lib/asterisk/sounds/delaware.gsm -#var/lib/asterisk/sounds/denial-of-service.gsm -#var/lib/asterisk/sounds/denver.gsm -#var/lib/asterisk/sounds/department-administrator.gsm -#var/lib/asterisk/sounds/department.gsm -#var/lib/asterisk/sounds/deposit.gsm -#var/lib/asterisk/sounds/design.gsm -#var/lib/asterisk/sounds/detroit.gsm -#var/lib/asterisk/sounds/development.gsm -#var/lib/asterisk/sounds/dial-here-often.gsm -#var/lib/asterisk/sounds/digit.gsm -#var/lib/asterisk/sounds/digits.gsm -#var/lib/asterisk/sounds/directory-assistance.gsm -#var/lib/asterisk/sounds/directory.gsm -#var/lib/asterisk/sounds/disabled.gsm -#var/lib/asterisk/sounds/discon-or-out-of-service.gsm -#var/lib/asterisk/sounds/disconnected.gsm -#var/lib/asterisk/sounds/disk.gsm -#var/lib/asterisk/sounds/distribution.gsm -#var/lib/asterisk/sounds/divided-by.gsm -#var/lib/asterisk/sounds/dns.gsm -#var/lib/asterisk/sounds/do-not-disturb.gsm -#var/lib/asterisk/sounds/doing-enum-lookup.gsm -#var/lib/asterisk/sounds/dollar.gsm -#var/lib/asterisk/sounds/dollars.gsm -#var/lib/asterisk/sounds/dont-know-who-sent.gsm -#var/lib/asterisk/sounds/doppler-radar.gsm -#var/lib/asterisk/sounds/dot.gsm -#var/lib/asterisk/sounds/down.gsm -#var/lib/asterisk/sounds/driving-directions.gsm -#var/lib/asterisk/sounds/duplex.gsm -#var/lib/asterisk/sounds/duplication.gsm -#var/lib/asterisk/sounds/early.gsm -#var/lib/asterisk/sounds/east.gsm -#var/lib/asterisk/sounds/easterly.gsm -#var/lib/asterisk/sounds/eastern.gsm -#var/lib/asterisk/sounds/echo-test.gsm -#var/lib/asterisk/sounds/ed.gsm -#var/lib/asterisk/sounds/eighteenth.gsm -#var/lib/asterisk/sounds/eighth.gsm -#var/lib/asterisk/sounds/eightieth.gsm -#var/lib/asterisk/sounds/el-paso.gsm -#var/lib/asterisk/sounds/eleventh.gsm -#var/lib/asterisk/sounds/email.gsm -#var/lib/asterisk/sounds/emergency.gsm -#var/lib/asterisk/sounds/enabled.gsm -#var/lib/asterisk/sounds/encode.gsm -#var/lib/asterisk/sounds/engineering.gsm -#var/lib/asterisk/sounds/ent-target-attendant.gsm -#var/lib/asterisk/sounds/enter-a-time.gsm -#var/lib/asterisk/sounds/enter-conf-call-number.gsm -#var/lib/asterisk/sounds/enter-conf-pin-number.gsm -#var/lib/asterisk/sounds/enter-ext-of-person.gsm -#var/lib/asterisk/sounds/enter-num-blacklist.gsm -#var/lib/asterisk/sounds/enter-password.gsm -#var/lib/asterisk/sounds/enter-phone-number10.gsm -#var/lib/asterisk/sounds/entering-conf-number.gsm -#var/lib/asterisk/sounds/entr-num-rmv-blklist.gsm -#var/lib/asterisk/sounds/enum-lookup-failed.gsm -#var/lib/asterisk/sounds/enum-lookup-successful.gsm -#var/lib/asterisk/sounds/equals.gsm -#var/lib/asterisk/sounds/error-number.gsm -#var/lib/asterisk/sounds/est-hold-time-is.gsm -#var/lib/asterisk/sounds/euro.gsm -#var/lib/asterisk/sounds/european.gsm -#var/lib/asterisk/sounds/euros.gsm -#var/lib/asterisk/sounds/evening.gsm -#var/lib/asterisk/sounds/exclaimation-point.gsm -#var/lib/asterisk/sounds/explanation.gsm -#var/lib/asterisk/sounds/ext-or-zero.gsm -#var/lib/asterisk/sounds/extension.gsm -#var/lib/asterisk/sounds/extensions.gsm -#var/lib/asterisk/sounds/facilities.gsm -#var/lib/asterisk/sounds/fahrenheit.gsm -#var/lib/asterisk/sounds/falling.gsm -#var/lib/asterisk/sounds/fast.gsm -#var/lib/asterisk/sounds/feature-not-avail-line.gsm -#var/lib/asterisk/sounds/feet.gsm -#var/lib/asterisk/sounds/female.gsm -#var/lib/asterisk/sounds/fifteenth.gsm -#var/lib/asterisk/sounds/fifth.gsm -#var/lib/asterisk/sounds/fiftieth.gsm -#var/lib/asterisk/sounds/finals.gsm -#var/lib/asterisk/sounds/finance.gsm -#var/lib/asterisk/sounds/first-in-line.gsm -#var/lib/asterisk/sounds/first.gsm -#var/lib/asterisk/sounds/flagged-for-lea.gsm -#var/lib/asterisk/sounds/flooding.gsm -#var/lib/asterisk/sounds/florida.gsm -#var/lib/asterisk/sounds/fog.gsm -#var/lib/asterisk/sounds/foggy.gsm -#var/lib/asterisk/sounds/followed-by.gsm -#var/lib/asterisk/sounds/food-service.gsm -#var/lib/asterisk/sounds/food-services.gsm -#var/lib/asterisk/sounds/for-a-daily-wakeup-call.gsm -#var/lib/asterisk/sounds/for-a-list-of.gsm -#var/lib/asterisk/sounds/for-accounting.gsm -#var/lib/asterisk/sounds/for-billing.gsm -#var/lib/asterisk/sounds/for-english-press.gsm -#var/lib/asterisk/sounds/for-investor-relations.gsm -#var/lib/asterisk/sounds/for-louie-louie.gsm -#var/lib/asterisk/sounds/for-no-press.gsm -#var/lib/asterisk/sounds/for-qc-and-training-purposes.gsm -#var/lib/asterisk/sounds/for-quality-purposes.gsm -#var/lib/asterisk/sounds/for-sales.gsm -#var/lib/asterisk/sounds/for-service.gsm -#var/lib/asterisk/sounds/for-tech-support.gsm -#var/lib/asterisk/sounds/for-the-first.gsm -#var/lib/asterisk/sounds/for-the-weather.gsm -#var/lib/asterisk/sounds/for-wakeup-call.gsm -#var/lib/asterisk/sounds/for-yes-press.gsm -#var/lib/asterisk/sounds/for.gsm -#var/lib/asterisk/sounds/fort-worth.gsm -#var/lib/asterisk/sounds/fortieth.gsm -#var/lib/asterisk/sounds/fourteenth.gsm -#var/lib/asterisk/sounds/fourth.gsm -#var/lib/asterisk/sounds/freeze.gsm -#var/lib/asterisk/sounds/freezing.gsm -#var/lib/asterisk/sounds/frequency.gsm -#var/lib/asterisk/sounds/fresno.gsm -#var/lib/asterisk/sounds/from-unknown-caller.gsm -#var/lib/asterisk/sounds/from.gsm -#var/lib/asterisk/sounds/ftp.gsm -#var/lib/asterisk/sounds/gale.gsm -#var/lib/asterisk/sounds/gambling-drunk.gsm -#var/lib/asterisk/sounds/georgia.gsm -#var/lib/asterisk/sounds/gigabits.gsm -#var/lib/asterisk/sounds/gigabytes.gsm -#var/lib/asterisk/sounds/gigahertz.gsm -#var/lib/asterisk/sounds/giggle1.gsm -#var/lib/asterisk/sounds/gmt.gsm -#var/lib/asterisk/sounds/go-away1.gsm -#var/lib/asterisk/sounds/go-away2.gsm -#var/lib/asterisk/sounds/good.gsm -#var/lib/asterisk/sounds/goodbye.gsm -#var/lib/asterisk/sounds/greater-than.gsm -#var/lib/asterisk/sounds/groovy.gsm -#var/lib/asterisk/sounds/ha -#var/lib/asterisk/sounds/ha/ac.gsm -#var/lib/asterisk/sounds/ha/air-conditioner.gsm -#var/lib/asterisk/sounds/ha/alarm.gsm -#var/lib/asterisk/sounds/ha/amp.gsm -#var/lib/asterisk/sounds/ha/amps.gsm -#var/lib/asterisk/sounds/ha/attic.gsm -#var/lib/asterisk/sounds/ha/baby-sleeping-mode.gsm -#var/lib/asterisk/sounds/ha/back.gsm -#var/lib/asterisk/sounds/ha/basement.gsm -#var/lib/asterisk/sounds/ha/bathroom.gsm -#var/lib/asterisk/sounds/ha/bedroom.gsm -#var/lib/asterisk/sounds/ha/bright.gsm -#var/lib/asterisk/sounds/ha/callerid.gsm -#var/lib/asterisk/sounds/ha/carport.gsm -#var/lib/asterisk/sounds/ha/closet.gsm -#var/lib/asterisk/sounds/ha/coffee-pot.gsm -#var/lib/asterisk/sounds/ha/cool.gsm -#var/lib/asterisk/sounds/ha/cooling.gsm -#var/lib/asterisk/sounds/ha/dc.gsm -#var/lib/asterisk/sounds/ha/decibel.gsm -#var/lib/asterisk/sounds/ha/decibels.gsm -#var/lib/asterisk/sounds/ha/deck.gsm -#var/lib/asterisk/sounds/ha/degree.gsm -#var/lib/asterisk/sounds/ha/degrees.gsm -#var/lib/asterisk/sounds/ha/den.gsm -#var/lib/asterisk/sounds/ha/dim.gsm -#var/lib/asterisk/sounds/ha/dining-room.gsm -#var/lib/asterisk/sounds/ha/door.gsm -#var/lib/asterisk/sounds/ha/doors.gsm -#var/lib/asterisk/sounds/ha/down.gsm -#var/lib/asterisk/sounds/ha/driveway.gsm -#var/lib/asterisk/sounds/ha/dryer.gsm -#var/lib/asterisk/sounds/ha/fan.gsm -#var/lib/asterisk/sounds/ha/farad.gsm -#var/lib/asterisk/sounds/ha/farads.gsm -#var/lib/asterisk/sounds/ha/first-floor.gsm -#var/lib/asterisk/sounds/ha/floor.gsm -#var/lib/asterisk/sounds/ha/floors.gsm -#var/lib/asterisk/sounds/ha/for-extended-status-report.gsm -#var/lib/asterisk/sounds/ha/for-quick-status-report.gsm -#var/lib/asterisk/sounds/ha/for-wx-report.gsm -#var/lib/asterisk/sounds/ha/fountain.gsm -#var/lib/asterisk/sounds/ha/foyer.gsm -#var/lib/asterisk/sounds/ha/front.gsm -#var/lib/asterisk/sounds/ha/furnace.gsm -#var/lib/asterisk/sounds/ha/game-room.gsm -#var/lib/asterisk/sounds/ha/garage.gsm -#var/lib/asterisk/sounds/ha/great-room.gsm -#var/lib/asterisk/sounds/ha/guest-room.gsm -#var/lib/asterisk/sounds/ha/hall.gsm -#var/lib/asterisk/sounds/ha/has-been-left.gsm -#var/lib/asterisk/sounds/ha/heat-pump.gsm -#var/lib/asterisk/sounds/ha/heat.gsm -#var/lib/asterisk/sounds/ha/heating.gsm -#var/lib/asterisk/sounds/ha/hot-tub.gsm -#var/lib/asterisk/sounds/ha/house.gsm -#var/lib/asterisk/sounds/ha/intruder.gsm -#var/lib/asterisk/sounds/ha/is.gsm -#var/lib/asterisk/sounds/ha/kelvin.gsm -#var/lib/asterisk/sounds/ha/kitchen.gsm -#var/lib/asterisk/sounds/ha/lamp.gsm -#var/lib/asterisk/sounds/ha/lamps.gsm -#var/lib/asterisk/sounds/ha/landscape.gsm -#var/lib/asterisk/sounds/ha/laundry.gsm -#var/lib/asterisk/sounds/ha/library.gsm -#var/lib/asterisk/sounds/ha/light.gsm -#var/lib/asterisk/sounds/ha/lights.gsm -#var/lib/asterisk/sounds/ha/living-room.gsm -#var/lib/asterisk/sounds/ha/locked.gsm -#var/lib/asterisk/sounds/ha/locking.gsm -#var/lib/asterisk/sounds/ha/mailbox.gsm -#var/lib/asterisk/sounds/ha/master.gsm -#var/lib/asterisk/sounds/ha/off.gsm -#var/lib/asterisk/sounds/ha/office.gsm -#var/lib/asterisk/sounds/ha/ohm.gsm -#var/lib/asterisk/sounds/ha/ohms.gsm -#var/lib/asterisk/sounds/ha/on.gsm -#var/lib/asterisk/sounds/ha/open.gsm -#var/lib/asterisk/sounds/ha/patio.gsm -#var/lib/asterisk/sounds/ha/phone.gsm -#var/lib/asterisk/sounds/ha/play-room.gsm -#var/lib/asterisk/sounds/ha/play.gsm -#var/lib/asterisk/sounds/ha/pool.gsm -#var/lib/asterisk/sounds/ha/porch.gsm -#var/lib/asterisk/sounds/ha/power-failure.gsm -#var/lib/asterisk/sounds/ha/pressure.gsm -#var/lib/asterisk/sounds/ha/psi.gsm -#var/lib/asterisk/sounds/ha/quiet-mode.gsm -#var/lib/asterisk/sounds/ha/reset.gsm -#var/lib/asterisk/sounds/ha/roof.gsm -#var/lib/asterisk/sounds/ha/room.gsm -#var/lib/asterisk/sounds/ha/rooms.gsm -#var/lib/asterisk/sounds/ha/second-floor.gsm -#var/lib/asterisk/sounds/ha/secure.gsm -#var/lib/asterisk/sounds/ha/security-system.gsm -#var/lib/asterisk/sounds/ha/set.gsm -#var/lib/asterisk/sounds/ha/side.gsm -#var/lib/asterisk/sounds/ha/solar.gsm -#var/lib/asterisk/sounds/ha/sprinklers.gsm -#var/lib/asterisk/sounds/ha/still.gsm -#var/lib/asterisk/sounds/ha/stove.gsm -#var/lib/asterisk/sounds/ha/sump-pump.gsm -#var/lib/asterisk/sounds/ha/sun-room.gsm -#var/lib/asterisk/sounds/ha/system.gsm -#var/lib/asterisk/sounds/ha/systems.gsm -#var/lib/asterisk/sounds/ha/thermostat.gsm -#var/lib/asterisk/sounds/ha/to-control-environ-sys.gsm -#var/lib/asterisk/sounds/ha/to-control-lights-appl.gsm -#var/lib/asterisk/sounds/ha/tower.gsm -#var/lib/asterisk/sounds/ha/unlocked.gsm -#var/lib/asterisk/sounds/ha/unlocking.gsm -#var/lib/asterisk/sounds/ha/up.gsm -#var/lib/asterisk/sounds/ha/volt.gsm -#var/lib/asterisk/sounds/ha/volts.gsm -#var/lib/asterisk/sounds/ha/washing-machine.gsm -#var/lib/asterisk/sounds/ha/water-heater.gsm -#var/lib/asterisk/sounds/ha/watt.gsm -#var/lib/asterisk/sounds/ha/watts.gsm -#var/lib/asterisk/sounds/ha/well-pump.gsm -#var/lib/asterisk/sounds/ha/window.gsm -#var/lib/asterisk/sounds/ha/windows.gsm -#var/lib/asterisk/sounds/ha/xmas-lights.gsm -#var/lib/asterisk/sounds/ha/xmas-tree.gsm -#var/lib/asterisk/sounds/ha/yard.gsm -#var/lib/asterisk/sounds/hail.gsm -#var/lib/asterisk/sounds/half.gsm -#var/lib/asterisk/sounds/hang-on-a-second-angry.gsm -#var/lib/asterisk/sounds/hang-on-a-second.gsm -#var/lib/asterisk/sounds/hangup-try-again.gsm -#var/lib/asterisk/sounds/has-arrived-at.gsm -#var/lib/asterisk/sounds/has-been-changed-to.gsm -#var/lib/asterisk/sounds/has-been-cleared.gsm -#var/lib/asterisk/sounds/has-been-disconnected.gsm -#var/lib/asterisk/sounds/has-been-set-to.gsm -#var/lib/asterisk/sounds/has-been.gsm -#var/lib/asterisk/sounds/has-expired.gsm -#var/lib/asterisk/sounds/has-issued-a.gsm -#var/lib/asterisk/sounds/has-not-been-seen-for.gsm -#var/lib/asterisk/sounds/has.gsm -#var/lib/asterisk/sounds/hash.gsm -#var/lib/asterisk/sounds/hawaii.gsm -#var/lib/asterisk/sounds/headed-towards.gsm -#var/lib/asterisk/sounds/heading.gsm -#var/lib/asterisk/sounds/health-center.gsm -#var/lib/asterisk/sounds/hear-odd-noise.gsm -#var/lib/asterisk/sounds/hear-toilet-flush.gsm -#var/lib/asterisk/sounds/hectopascal.gsm -#var/lib/asterisk/sounds/helpdesk.gsm -#var/lib/asterisk/sounds/hertz.gsm -#var/lib/asterisk/sounds/high.gsm -#var/lib/asterisk/sounds/highway.gsm -#var/lib/asterisk/sounds/hit.gsm -#var/lib/asterisk/sounds/hold-or-dial-0.gsm -#var/lib/asterisk/sounds/home.gsm -#var/lib/asterisk/sounds/honolulu.gsm -#var/lib/asterisk/sounds/hours.gsm -#var/lib/asterisk/sounds/housekeeping.gsm -#var/lib/asterisk/sounds/houston.gsm -#var/lib/asterisk/sounds/http.gsm -#var/lib/asterisk/sounds/human-resources.gsm -#var/lib/asterisk/sounds/humidity.gsm -#var/lib/asterisk/sounds/hundredth.gsm -#var/lib/asterisk/sounds/hurricane.gsm -#var/lib/asterisk/sounds/hz.gsm -#var/lib/asterisk/sounds/i-dont-understand.gsm -#var/lib/asterisk/sounds/i-dont-understand2.gsm -#var/lib/asterisk/sounds/i-dont-understand3.gsm -#var/lib/asterisk/sounds/i-dont-understand4.gsm -#var/lib/asterisk/sounds/i-dont-understand5.gsm -#var/lib/asterisk/sounds/i-grow-bored.gsm -#var/lib/asterisk/sounds/ice.gsm -#var/lib/asterisk/sounds/icmp.gsm -#var/lib/asterisk/sounds/icy.gsm -#var/lib/asterisk/sounds/idaho.gsm -#var/lib/asterisk/sounds/if-correct-press.gsm -#var/lib/asterisk/sounds/if-grtg-played-indefinately.gsm -#var/lib/asterisk/sounds/if-grtg-should-expire-at.gsm -#var/lib/asterisk/sounds/if-maint-contract-or-emergency.gsm -#var/lib/asterisk/sounds/if-rotary-phone.gsm -#var/lib/asterisk/sounds/if-this-is-correct-press.gsm -#var/lib/asterisk/sounds/if-this-is-correct.gsm -#var/lib/asterisk/sounds/if-this-is-not-correct.gsm -#var/lib/asterisk/sounds/if-u-know-ext-dial.gsm -#var/lib/asterisk/sounds/if-unsuccessful-speak-to.gsm -#var/lib/asterisk/sounds/if-you-know-the.gsm -#var/lib/asterisk/sounds/if-you-need-help.gsm -#var/lib/asterisk/sounds/if-youd-like-to-make-a-call.gsm -#var/lib/asterisk/sounds/illinois.gsm -#var/lib/asterisk/sounds/im-sorry-unable-to-connect-to-eng.gsm -#var/lib/asterisk/sounds/im-sorry.gsm -#var/lib/asterisk/sounds/imap.gsm -#var/lib/asterisk/sounds/in-service.gsm -#var/lib/asterisk/sounds/in-the-line.gsm -#var/lib/asterisk/sounds/in-the-queue.gsm -#var/lib/asterisk/sounds/in-the.gsm -#var/lib/asterisk/sounds/in-your-city.gsm -#var/lib/asterisk/sounds/in-your-zip-code.gsm -#var/lib/asterisk/sounds/inbound.gsm -#var/lib/asterisk/sounds/indiana.gsm -#var/lib/asterisk/sounds/indianapolis.gsm -#var/lib/asterisk/sounds/indicated.gsm -#var/lib/asterisk/sounds/info-about-last-call.gsm -#var/lib/asterisk/sounds/information-technology.gsm -#var/lib/asterisk/sounds/information.gsm -#var/lib/asterisk/sounds/infuriate-tech-staff.gsm -#var/lib/asterisk/sounds/initiated.gsm -#var/lib/asterisk/sounds/initiating.gsm -#var/lib/asterisk/sounds/inside-sales.gsm -#var/lib/asterisk/sounds/internal-audit.gsm -#var/lib/asterisk/sounds/international-call.gsm -#var/lib/asterisk/sounds/interstate.gsm -#var/lib/asterisk/sounds/invalid-date.gsm -#var/lib/asterisk/sounds/investor-relations.gsm -#var/lib/asterisk/sounds/iowa.gsm -#var/lib/asterisk/sounds/is-at.gsm -#var/lib/asterisk/sounds/is-curntly-busy.gsm -#var/lib/asterisk/sounds/is-curntly-unavail.gsm -#var/lib/asterisk/sounds/is-currently.gsm -#var/lib/asterisk/sounds/is-in-use.gsm -#var/lib/asterisk/sounds/is-not-in-the.gsm -#var/lib/asterisk/sounds/is-not-set.gsm -#var/lib/asterisk/sounds/is-now-being-recorded.gsm -#var/lib/asterisk/sounds/is-set-to.gsm -#var/lib/asterisk/sounds/is.gsm -#var/lib/asterisk/sounds/it-now.gsm -#var/lib/asterisk/sounds/it-services.gsm -#var/lib/asterisk/sounds/jacksonville.gsm -#var/lib/asterisk/sounds/janitorial.gsm -#var/lib/asterisk/sounds/jason.gsm -#var/lib/asterisk/sounds/jedi-extension-trick.gsm -#var/lib/asterisk/sounds/john.gsm -#var/lib/asterisk/sounds/just-kidding-not-upset.gsm -#var/lib/asterisk/sounds/just-kidding-not-upset2.gsm -#var/lib/asterisk/sounds/kansas-city.gsm -#var/lib/asterisk/sounds/kansas.gsm -#var/lib/asterisk/sounds/kentucky.gsm -#var/lib/asterisk/sounds/kilobits.gsm -#var/lib/asterisk/sounds/kilobytes.gsm -#var/lib/asterisk/sounds/kilohertz.gsm -#var/lib/asterisk/sounds/kilometer.gsm -#var/lib/asterisk/sounds/kilometers-per-hour.gsm -#var/lib/asterisk/sounds/knock-knock.gsm -#var/lib/asterisk/sounds/knots.gsm -#var/lib/asterisk/sounds/language.gsm -#var/lib/asterisk/sounds/las-vegas.gsm -#var/lib/asterisk/sounds/last-error-was.gsm -#var/lib/asterisk/sounds/last-num-to-call.gsm -#var/lib/asterisk/sounds/late.gsm -#var/lib/asterisk/sounds/later.gsm -#var/lib/asterisk/sounds/lea-may-request-info.gsm -#var/lib/asterisk/sounds/left-bracket.gsm -#var/lib/asterisk/sounds/legal.gsm -#var/lib/asterisk/sounds/len.gsm -#var/lib/asterisk/sounds/less-than.gsm -#var/lib/asterisk/sounds/library.gsm -#var/lib/asterisk/sounds/lightning.gsm -#var/lib/asterisk/sounds/limit-simul-calls.gsm -#var/lib/asterisk/sounds/lines-complaining-customers.gsm -#var/lib/asterisk/sounds/linux.gsm -#var/lib/asterisk/sounds/list.gsm -#var/lib/asterisk/sounds/load-average.gsm -#var/lib/asterisk/sounds/local-authorities.gsm -#var/lib/asterisk/sounds/location.gsm -#var/lib/asterisk/sounds/login-fail.gsm -#var/lib/asterisk/sounds/long-beach.gsm -#var/lib/asterisk/sounds/los-angeles.gsm -#var/lib/asterisk/sounds/loss-prevention.gsm -#var/lib/asterisk/sounds/loss.gsm -#var/lib/asterisk/sounds/lots-o-monkeys.gsm -#var/lib/asterisk/sounds/louisiana.gsm -#var/lib/asterisk/sounds/low.gsm -#var/lib/asterisk/sounds/lunch.gsm -#var/lib/asterisk/sounds/lyrics-louie-louie.gsm -#var/lib/asterisk/sounds/machine.gsm -#var/lib/asterisk/sounds/made-it-up.gsm -#var/lib/asterisk/sounds/mail.gsm -#var/lib/asterisk/sounds/mailroom.gsm -#var/lib/asterisk/sounds/main-menu.gsm -#var/lib/asterisk/sounds/maine.gsm -#var/lib/asterisk/sounds/maintenance.gsm -#var/lib/asterisk/sounds/male.gsm -#var/lib/asterisk/sounds/management.gsm -#var/lib/asterisk/sounds/manufacturing.gsm -#var/lib/asterisk/sounds/marketing.gsm -#var/lib/asterisk/sounds/marryme.gsm -#var/lib/asterisk/sounds/maryland.gsm -#var/lib/asterisk/sounds/massachusetts.gsm -#var/lib/asterisk/sounds/mathematics.gsm -#var/lib/asterisk/sounds/maximum.gsm -#var/lib/asterisk/sounds/megabits.gsm -#var/lib/asterisk/sounds/megabytes.gsm -#var/lib/asterisk/sounds/megahertz.gsm -#var/lib/asterisk/sounds/memory.gsm -#var/lib/asterisk/sounds/memphis.gsm -#var/lib/asterisk/sounds/menu.gsm -#var/lib/asterisk/sounds/mesa.gsm -#var/lib/asterisk/sounds/message-from.gsm -#var/lib/asterisk/sounds/message-number.gsm -#var/lib/asterisk/sounds/meter.gsm -#var/lib/asterisk/sounds/meters.gsm -#var/lib/asterisk/sounds/miami.gsm -#var/lib/asterisk/sounds/michigan.gsm -#var/lib/asterisk/sounds/midnight-tomorrow-night.gsm -#var/lib/asterisk/sounds/midnight-tonight.gsm -#var/lib/asterisk/sounds/midnight.gsm -#var/lib/asterisk/sounds/mike.gsm -#var/lib/asterisk/sounds/miles-per-hour.gsm -#var/lib/asterisk/sounds/miles.gsm -#var/lib/asterisk/sounds/millionth.gsm -#var/lib/asterisk/sounds/milwaukee.gsm -#var/lib/asterisk/sounds/minimum.gsm -#var/lib/asterisk/sounds/minneapolis.gsm -#var/lib/asterisk/sounds/minnesota.gsm -#var/lib/asterisk/sounds/minus.gsm -#var/lib/asterisk/sounds/minute.gsm -#var/lib/asterisk/sounds/minutes.gsm -#var/lib/asterisk/sounds/missed.gsm -#var/lib/asterisk/sounds/mississippi.gsm -#var/lib/asterisk/sounds/missouri.gsm -#var/lib/asterisk/sounds/misty.gsm -#var/lib/asterisk/sounds/monitored.gsm -#var/lib/asterisk/sounds/montana.gsm -#var/lib/asterisk/sounds/month.gsm -#var/lib/asterisk/sounds/months.gsm -#var/lib/asterisk/sounds/moo1.gsm -#var/lib/asterisk/sounds/moo2.gsm -#var/lib/asterisk/sounds/morning.gsm -#var/lib/asterisk/sounds/moron.gsm -#var/lib/asterisk/sounds/mostly.gsm -#var/lib/asterisk/sounds/motor-pool.gsm -#var/lib/asterisk/sounds/mountain.gsm -#var/lib/asterisk/sounds/moving.gsm -#var/lib/asterisk/sounds/ms.gsm -#var/lib/asterisk/sounds/nashville.gsm -#var/lib/asterisk/sounds/national-weather-service.gsm -#var/lib/asterisk/sounds/nautical-miles.gsm -#var/lib/asterisk/sounds/nbdy-avail-to-take-call.gsm -#var/lib/asterisk/sounds/near.gsm -#var/lib/asterisk/sounds/nebraska.gsm -#var/lib/asterisk/sounds/negative.gsm -#var/lib/asterisk/sounds/network-operations-center.gsm -#var/lib/asterisk/sounds/network-operations.gsm -#var/lib/asterisk/sounds/nevada.gsm -#var/lib/asterisk/sounds/new-accounts.gsm -#var/lib/asterisk/sounds/new-hampshire.gsm -#var/lib/asterisk/sounds/new-jersey.gsm -#var/lib/asterisk/sounds/new-mexico.gsm -#var/lib/asterisk/sounds/new-orleans.gsm -#var/lib/asterisk/sounds/new-york.gsm -#var/lib/asterisk/sounds/nineteenth.gsm -#var/lib/asterisk/sounds/ninetieth.gsm -#var/lib/asterisk/sounds/ninth.gsm -#var/lib/asterisk/sounds/no-112-1.gsm -#var/lib/asterisk/sounds/no-112-2.gsm -#var/lib/asterisk/sounds/no-911-1.gsm -#var/lib/asterisk/sounds/no-911-2.gsm -#var/lib/asterisk/sounds/no-empty-conferences.gsm -#var/lib/asterisk/sounds/no-info-about-number.gsm -#var/lib/asterisk/sounds/no-longer-in-service.gsm -#var/lib/asterisk/sounds/no-reply-no-mailbox.gsm -#var/lib/asterisk/sounds/no-route-exists-to-dest.gsm -#var/lib/asterisk/sounds/nobody-but-chickens.gsm -#var/lib/asterisk/sounds/node.gsm -#var/lib/asterisk/sounds/north-carolina.gsm -#var/lib/asterisk/sounds/north-dakota.gsm -#var/lib/asterisk/sounds/north.gsm -#var/lib/asterisk/sounds/northerly.gsm -#var/lib/asterisk/sounds/not-auth-pstn.gsm -#var/lib/asterisk/sounds/not-enough-credit.gsm -#var/lib/asterisk/sounds/not-necessary-1.gsm -#var/lib/asterisk/sounds/not-necessary-ac.gsm -#var/lib/asterisk/sounds/not-necessary-dial-1-or-ac.gsm -#var/lib/asterisk/sounds/not-rqsted-wakeup.gsm -#var/lib/asterisk/sounds/not-taking-your-call.gsm -#var/lib/asterisk/sounds/not-yet-assigned.gsm -#var/lib/asterisk/sounds/not-yet-connected.gsm -#var/lib/asterisk/sounds/nothing-recorded.gsm -#var/lib/asterisk/sounds/now.gsm -#var/lib/asterisk/sounds/num-not-in-db.gsm -#var/lib/asterisk/sounds/num-outside-area.gsm -#var/lib/asterisk/sounds/num-was-successfully.gsm -#var/lib/asterisk/sounds/number-not-answering.gsm -#var/lib/asterisk/sounds/number.gsm -#var/lib/asterisk/sounds/oakland.gsm -#var/lib/asterisk/sounds/octothorpe.gsm -#var/lib/asterisk/sounds/off-duty.gsm -#var/lib/asterisk/sounds/office-code.gsm -#var/lib/asterisk/sounds/office-iguanas.gsm -#var/lib/asterisk/sounds/office.gsm -#var/lib/asterisk/sounds/ohio.gsm -#var/lib/asterisk/sounds/oklahoma-city.gsm -#var/lib/asterisk/sounds/oklahoma.gsm -#var/lib/asterisk/sounds/omaha.gsm -#var/lib/asterisk/sounds/on-busy.gsm -#var/lib/asterisk/sounds/on-monthly-tel-stment.gsm -#var/lib/asterisk/sounds/on-no-answer.gsm -#var/lib/asterisk/sounds/on.gsm -#var/lib/asterisk/sounds/one-moment-please.gsm -#var/lib/asterisk/sounds/one-small-step.gsm -#var/lib/asterisk/sounds/one-small-step2.gsm -#var/lib/asterisk/sounds/oops1.gsm -#var/lib/asterisk/sounds/oops2.gsm -#var/lib/asterisk/sounds/oops3.gsm -#var/lib/asterisk/sounds/open-parenthesis.gsm -#var/lib/asterisk/sounds/operations.gsm -#var/lib/asterisk/sounds/option-not-implemented.gsm -#var/lib/asterisk/sounds/or-press.gsm -#var/lib/asterisk/sounds/or.gsm -#var/lib/asterisk/sounds/order-desk.gsm -#var/lib/asterisk/sounds/orders.gsm -#var/lib/asterisk/sounds/oregon.gsm -#var/lib/asterisk/sounds/other-options-exercise.gsm -#var/lib/asterisk/sounds/otherwise-press.gsm -#var/lib/asterisk/sounds/otherwise.gsm -#var/lib/asterisk/sounds/our-business-hours-are.gsm -#var/lib/asterisk/sounds/outbound.gsm -#var/lib/asterisk/sounds/outside-sales.gsm -#var/lib/asterisk/sounds/outside-transfer.gsm -#var/lib/asterisk/sounds/p.gsm -#var/lib/asterisk/sounds/pacific.gsm -#var/lib/asterisk/sounds/packet.gsm -#var/lib/asterisk/sounds/panic.gsm -#var/lib/asterisk/sounds/partially.gsm -#var/lib/asterisk/sounds/partly.gsm -#var/lib/asterisk/sounds/pascal.gsm -#var/lib/asterisk/sounds/pascal2.gsm -#var/lib/asterisk/sounds/patchy.gsm -#var/lib/asterisk/sounds/pence.gsm -#var/lib/asterisk/sounds/pennies.gsm -#var/lib/asterisk/sounds/pennsylvania.gsm -#var/lib/asterisk/sounds/penny.gsm -#var/lib/asterisk/sounds/percent.gsm -#var/lib/asterisk/sounds/perhaps-we-are.gsm -#var/lib/asterisk/sounds/perhaps-we-are2.gsm -#var/lib/asterisk/sounds/period.gsm -#var/lib/asterisk/sounds/personnel.gsm -#var/lib/asterisk/sounds/persons-in-path-of.gsm -#var/lib/asterisk/sounds/philadelphia.gsm -#var/lib/asterisk/sounds/phoenix.gsm -#var/lib/asterisk/sounds/phonetic/alpha.gsm -#var/lib/asterisk/sounds/phonetic/bravo.gsm -#var/lib/asterisk/sounds/phonetic/charlie.gsm -#var/lib/asterisk/sounds/phonetic/delta.gsm -#var/lib/asterisk/sounds/phonetic/echo.gsm -#var/lib/asterisk/sounds/phonetic/foxtrot.gsm -#var/lib/asterisk/sounds/phonetic/golf.gsm -#var/lib/asterisk/sounds/phonetic/hotel.gsm -#var/lib/asterisk/sounds/phonetic/india.gsm -#var/lib/asterisk/sounds/phonetic/juliet.gsm -#var/lib/asterisk/sounds/phonetic/kilo.gsm -#var/lib/asterisk/sounds/phonetic/lima.gsm -#var/lib/asterisk/sounds/phonetic/mike.gsm -#var/lib/asterisk/sounds/phonetic/niner.gsm -#var/lib/asterisk/sounds/phonetic/november.gsm -#var/lib/asterisk/sounds/phonetic/oscar.gsm -#var/lib/asterisk/sounds/phonetic/papa.gsm -#var/lib/asterisk/sounds/phonetic/quebec.gsm -#var/lib/asterisk/sounds/phonetic/romeo.gsm -#var/lib/asterisk/sounds/phonetic/sierra.gsm -#var/lib/asterisk/sounds/phonetic/tango.gsm -#var/lib/asterisk/sounds/phonetic/uniform.gsm -#var/lib/asterisk/sounds/phonetic/victor.gsm -#var/lib/asterisk/sounds/phonetic/whiskey.gsm -#var/lib/asterisk/sounds/phonetic/xray.gsm -#var/lib/asterisk/sounds/phonetic/yankee.gsm -#var/lib/asterisk/sounds/phonetic/zulu.gsm -#var/lib/asterisk/sounds/physics.gsm -#var/lib/asterisk/sounds/pin-invalid.gsm -#var/lib/asterisk/sounds/pin-number-accepted.gsm -#var/lib/asterisk/sounds/ping.gsm -#var/lib/asterisk/sounds/pipe.gsm -#var/lib/asterisk/sounds/planning.gsm -#var/lib/asterisk/sounds/please-answer-the-following.gsm -#var/lib/asterisk/sounds/please-contact-tech-supt.gsm -#var/lib/asterisk/sounds/please-enter-first-three-letters.gsm -#var/lib/asterisk/sounds/please-enter-the.gsm -#var/lib/asterisk/sounds/please-enter-your.gsm -#var/lib/asterisk/sounds/please-hang-up-and-dial-operator.gsm -#var/lib/asterisk/sounds/please-hang-up-and-try-again.gsm -#var/lib/asterisk/sounds/please-try-again-later.gsm -#var/lib/asterisk/sounds/please-try-again.gsm -#var/lib/asterisk/sounds/please-try.gsm -#var/lib/asterisk/sounds/please-wait-connect-oncall-eng.gsm -#var/lib/asterisk/sounds/pls-ent-num-transfer.gsm -#var/lib/asterisk/sounds/pls-enter-conf-password.gsm -#var/lib/asterisk/sounds/pls-enter-num-message-after-tone.gsm -#var/lib/asterisk/sounds/pls-enter-vm-password.gsm -#var/lib/asterisk/sounds/pls-entr-num-uwish2-call.gsm -#var/lib/asterisk/sounds/pls-hold-silent30.gsm -#var/lib/asterisk/sounds/pls-hold-while-try.gsm -#var/lib/asterisk/sounds/pls-lv-msg-will-contact.gsm -#var/lib/asterisk/sounds/pls-rcrd-name-at-tone.gsm -#var/lib/asterisk/sounds/pls-stay-on-line.gsm -#var/lib/asterisk/sounds/pls-try-again.gsm -#var/lib/asterisk/sounds/pls-try-area-code.gsm -#var/lib/asterisk/sounds/pls-try-call-later.gsm -#var/lib/asterisk/sounds/pls-try-manually.gsm -#var/lib/asterisk/sounds/pls-wait-connect-call.gsm -#var/lib/asterisk/sounds/plugh.gsm -#var/lib/asterisk/sounds/plus.gsm -#var/lib/asterisk/sounds/pm-announcement-number.gsm -#var/lib/asterisk/sounds/pm-invalid-option.gsm -#var/lib/asterisk/sounds/pm-phrase-management.gsm -#var/lib/asterisk/sounds/pm-prompt-number.gsm -#var/lib/asterisk/sounds/pm-to-record-phrase.gsm -#var/lib/asterisk/sounds/pm-to-review-phrase.gsm -#var/lib/asterisk/sounds/point.gsm -#var/lib/asterisk/sounds/pop.gsm -#var/lib/asterisk/sounds/port.gsm -#var/lib/asterisk/sounds/portland.gsm -#var/lib/asterisk/sounds/portnumber.gsm -#var/lib/asterisk/sounds/position.gsm -#var/lib/asterisk/sounds/post-entry-pound.gsm -#var/lib/asterisk/sounds/pound.gsm -#var/lib/asterisk/sounds/pounds.gsm -#var/lib/asterisk/sounds/presales-support.gsm -#var/lib/asterisk/sounds/presidents-office.gsm -#var/lib/asterisk/sounds/press-0.gsm -#var/lib/asterisk/sounds/press-1.gsm -#var/lib/asterisk/sounds/press-2.gsm -#var/lib/asterisk/sounds/press-3.gsm -#var/lib/asterisk/sounds/press-4.gsm -#var/lib/asterisk/sounds/press-5.gsm -#var/lib/asterisk/sounds/press-6-to-eject.gsm -#var/lib/asterisk/sounds/press-6.gsm -#var/lib/asterisk/sounds/press-7.gsm -#var/lib/asterisk/sounds/press-8.gsm -#var/lib/asterisk/sounds/press-9.gsm -#var/lib/asterisk/sounds/press-button-again.gsm -#var/lib/asterisk/sounds/press-enter.gsm -#var/lib/asterisk/sounds/press-escape.gsm -#var/lib/asterisk/sounds/press-hash.gsm -#var/lib/asterisk/sounds/press-pound-save-changes.gsm -#var/lib/asterisk/sounds/press-pound-to-login-star-to-hangup.gsm -#var/lib/asterisk/sounds/press-pound.gsm -#var/lib/asterisk/sounds/press-return.gsm -#var/lib/asterisk/sounds/press-star-cancel.gsm -#var/lib/asterisk/sounds/press-star.gsm -#var/lib/asterisk/sounds/press-the-space-bar.gsm -#var/lib/asterisk/sounds/press-tilde.gsm -#var/lib/asterisk/sounds/press.gsm -#var/lib/asterisk/sounds/pressure.gsm -#var/lib/asterisk/sounds/printing.gsm -#var/lib/asterisk/sounds/privacy-blacklisted.gsm -#var/lib/asterisk/sounds/privacy-blocked.gsm -#var/lib/asterisk/sounds/privacy-if-error-leave-message-or-hangup.gsm -#var/lib/asterisk/sounds/privacy-if-error.gsm -#var/lib/asterisk/sounds/privacy-if-sales-call-contact-in-writing.gsm -#var/lib/asterisk/sounds/privacy-last-caller-was.gsm -#var/lib/asterisk/sounds/privacy-not.gsm -#var/lib/asterisk/sounds/privacy-please-dial.gsm -#var/lib/asterisk/sounds/privacy-please-stay-on-line-to-be-connected.gsm -#var/lib/asterisk/sounds/privacy-screening-unidentified-calls.gsm -#var/lib/asterisk/sounds/privacy-stop-calling-not-welcome.gsm -#var/lib/asterisk/sounds/privacy-stop-calling-not-welcome2.gsm -#var/lib/asterisk/sounds/privacy-this-number-is.gsm -#var/lib/asterisk/sounds/privacy-to-blacklist-last-caller.gsm -#var/lib/asterisk/sounds/privacy-to-blacklist-this-number.gsm -#var/lib/asterisk/sounds/privacy-to-hear-our-contact-details.gsm -#var/lib/asterisk/sounds/privacy-to-whitelist-last-caller.gsm -#var/lib/asterisk/sounds/privacy-to-whitelist-this-number.gsm -#var/lib/asterisk/sounds/privacy-whitelisted.gsm -#var/lib/asterisk/sounds/privacy-you-are-blacklisted.gsm -#var/lib/asterisk/sounds/privacy-you-are-calling-from.gsm -#var/lib/asterisk/sounds/privacy-your-callerid-is.gsm -#var/lib/asterisk/sounds/product.gsm -#var/lib/asterisk/sounds/production.gsm -#var/lib/asterisk/sounds/projects.gsm -#var/lib/asterisk/sounds/protocol.gsm -#var/lib/asterisk/sounds/public-relations.gsm -#var/lib/asterisk/sounds/purchasing.gsm -#var/lib/asterisk/sounds/purposes.gsm -#var/lib/asterisk/sounds/q-dot-931.gsm -#var/lib/asterisk/sounds/q-dot-9thirty1.gsm -#var/lib/asterisk/sounds/quality-assurance.gsm -#var/lib/asterisk/sounds/quality-control.gsm -#var/lib/asterisk/sounds/quarter.gsm -#var/lib/asterisk/sounds/quickly.gsm -#var/lib/asterisk/sounds/quote.gsm -#var/lib/asterisk/sounds/race.gsm -#var/lib/asterisk/sounds/rain.gsm -#var/lib/asterisk/sounds/rainfall.gsm -#var/lib/asterisk/sounds/rainy.gsm -#var/lib/asterisk/sounds/range.gsm -#var/lib/asterisk/sounds/reassigned-new-areacode.gsm -#var/lib/asterisk/sounds/rebates.gsm -#var/lib/asterisk/sounds/received.gsm -#var/lib/asterisk/sounds/receiving.gsm -#var/lib/asterisk/sounds/reception.gsm -#var/lib/asterisk/sounds/recorded.gsm -#var/lib/asterisk/sounds/registrar.gsm -#var/lib/asterisk/sounds/remote-already-in-this-mode-2.gsm -#var/lib/asterisk/sounds/remote-already-in-this-mode.gsm -#var/lib/asterisk/sounds/remote-base.gsm -#var/lib/asterisk/sounds/removed.gsm -#var/lib/asterisk/sounds/repair.gsm -#var/lib/asterisk/sounds/repeat-only.gsm -#var/lib/asterisk/sounds/repeater.gsm -#var/lib/asterisk/sounds/research-and-development.gsm -#var/lib/asterisk/sounds/research.gsm -#var/lib/asterisk/sounds/reservations.gsm -#var/lib/asterisk/sounds/restarting.gsm -#var/lib/asterisk/sounds/rhode-island.gsm -#var/lib/asterisk/sounds/right-bracket.gsm -#var/lib/asterisk/sounds/rising.gsm -#var/lib/asterisk/sounds/risk-management.gsm -#var/lib/asterisk/sounds/roaming.gsm -#var/lib/asterisk/sounds/room-service.gsm -#var/lib/asterisk/sounds/route-sip.gsm -#var/lib/asterisk/sounds/rqsted-wakeup-for.gsm -#var/lib/asterisk/sounds/sacramento.gsm -#var/lib/asterisk/sounds/saint-louis.gsm -#var/lib/asterisk/sounds/sales-floor.gsm -#var/lib/asterisk/sounds/sales.gsm -#var/lib/asterisk/sounds/san-antonio.gsm -#var/lib/asterisk/sounds/san-diego.gsm -#var/lib/asterisk/sounds/san-francisco.gsm -#var/lib/asterisk/sounds/san-jose.gsm -#var/lib/asterisk/sounds/save-announce-press.gsm -#var/lib/asterisk/sounds/say-temp-msg-prs-pound.gsm -#var/lib/asterisk/sounds/says-thats-stupid.gsm -#var/lib/asterisk/sounds/scattered.gsm -#var/lib/asterisk/sounds/sciences.gsm -#var/lib/asterisk/sounds/seattle.gsm -#var/lib/asterisk/sounds/second.gsm -#var/lib/asterisk/sounds/seconds.gsm -#var/lib/asterisk/sounds/secretary.gsm -#var/lib/asterisk/sounds/security.gsm -#var/lib/asterisk/sounds/self-destruct-in.gsm -#var/lib/asterisk/sounds/self-destruct.gsm -#var/lib/asterisk/sounds/server.gsm -#var/lib/asterisk/sounds/service-not-implemented.gsm -#var/lib/asterisk/sounds/service.gsm -#var/lib/asterisk/sounds/seventeenth.gsm -#var/lib/asterisk/sounds/seventh.gsm -#var/lib/asterisk/sounds/seventieth.gsm -#var/lib/asterisk/sounds/severe.gsm -#var/lib/asterisk/sounds/shall-i-try-again.gsm -#var/lib/asterisk/sounds/shiny-brass-lamp.gsm -#var/lib/asterisk/sounds/shipping.gsm -#var/lib/asterisk/sounds/shop.gsm -#var/lib/asterisk/sounds/show-office.gsm -#var/lib/asterisk/sounds/sighted.gsm -#var/lib/asterisk/sounds/silence -#var/lib/asterisk/sounds/silence/1.gsm -#var/lib/asterisk/sounds/silence/10.gsm -#var/lib/asterisk/sounds/silence/2.gsm -#var/lib/asterisk/sounds/silence/3.gsm -#var/lib/asterisk/sounds/silence/4.gsm -#var/lib/asterisk/sounds/silence/5.gsm -#var/lib/asterisk/sounds/silence/6.gsm -#var/lib/asterisk/sounds/silence/7.gsm -#var/lib/asterisk/sounds/silence/8.gsm -#var/lib/asterisk/sounds/silence/9.gsm -#var/lib/asterisk/sounds/simplex.gsm -#var/lib/asterisk/sounds/simul-call-limit-reached.gsm -#var/lib/asterisk/sounds/sixteenth.gsm -#var/lib/asterisk/sounds/sixth.gsm -#var/lib/asterisk/sounds/sixtieth.gsm -#var/lib/asterisk/sounds/slash.gsm -#var/lib/asterisk/sounds/sleet.gsm -#var/lib/asterisk/sounds/sleeting.gsm -#var/lib/asterisk/sounds/slow.gsm -#var/lib/asterisk/sounds/slowly.gsm -#var/lib/asterisk/sounds/snow.gsm -#var/lib/asterisk/sounds/snowing.gsm -#var/lib/asterisk/sounds/snowy.gsm -#var/lib/asterisk/sounds/software.gsm -#var/lib/asterisk/sounds/someone-you-trust1.gsm -#var/lib/asterisk/sounds/someone-you-trust2.gsm -#var/lib/asterisk/sounds/someone-you-trust3.gsm -#var/lib/asterisk/sounds/something-terribly-wrong.gsm -#var/lib/asterisk/sounds/sorry-cant-let-you-do-that.gsm -#var/lib/asterisk/sounds/sorry-cant-let-you-do-that2.gsm -#var/lib/asterisk/sounds/sorry-cant-let-you-do-that3.gsm -#var/lib/asterisk/sounds/sorry-mailbox-full.gsm -#var/lib/asterisk/sounds/sorry-youre-having-problems.gsm -#var/lib/asterisk/sounds/sorry.gsm -#var/lib/asterisk/sounds/sorry2.gsm -#var/lib/asterisk/sounds/south-carolina.gsm -#var/lib/asterisk/sounds/south-dakota.gsm -#var/lib/asterisk/sounds/south.gsm -#var/lib/asterisk/sounds/southerly.gsm -#var/lib/asterisk/sounds/space.gsm -#var/lib/asterisk/sounds/spam.gsm -#var/lib/asterisk/sounds/spam2.gsm -#var/lib/asterisk/sounds/speak-louder-into-phone.gsm -#var/lib/asterisk/sounds/speak-louder.gsm -#var/lib/asterisk/sounds/speak-to-the-operator.gsm -#var/lib/asterisk/sounds/speed-dial-empty.gsm -#var/lib/asterisk/sounds/speed-dial.gsm -#var/lib/asterisk/sounds/speed.gsm -#var/lib/asterisk/sounds/splat.gsm -#var/lib/asterisk/sounds/ssh.gsm -#var/lib/asterisk/sounds/staff.gsm -#var/lib/asterisk/sounds/staffing.gsm -#var/lib/asterisk/sounds/standard.gsm -#var/lib/asterisk/sounds/star-for-menu-again.gsm -#var/lib/asterisk/sounds/star.gsm -#var/lib/asterisk/sounds/starting-with-either.gsm -#var/lib/asterisk/sounds/station.gsm -#var/lib/asterisk/sounds/status.gsm -#var/lib/asterisk/sounds/step-in-stream.gsm -#var/lib/asterisk/sounds/sterling.gsm -#var/lib/asterisk/sounds/store-accounting.gsm -#var/lib/asterisk/sounds/storm.gsm -#var/lib/asterisk/sounds/sun.gsm -#var/lib/asterisk/sounds/sunny.gsm -#var/lib/asterisk/sounds/support.gsm -#var/lib/asterisk/sounds/swap.gsm -#var/lib/asterisk/sounds/system-crashed.gsm -#var/lib/asterisk/sounds/system-status-msg.gsm -#var/lib/asterisk/sounds/system.gsm -#var/lib/asterisk/sounds/systems.gsm -#var/lib/asterisk/sounds/talking-to-myself.gsm -#var/lib/asterisk/sounds/target-attendant.gsm -#var/lib/asterisk/sounds/tcp.gsm -#var/lib/asterisk/sounds/technical-support.gsm -#var/lib/asterisk/sounds/telephone-in-your-pocket.gsm -#var/lib/asterisk/sounds/telephone-in-your-pocket2.gsm -#var/lib/asterisk/sounds/telephone-number.gsm -#var/lib/asterisk/sounds/telesales.gsm -#var/lib/asterisk/sounds/teletubbie-murder.gsm -#var/lib/asterisk/sounds/telnet.gsm -#var/lib/asterisk/sounds/temp-disconnected.gsm -#var/lib/asterisk/sounds/temperature.gsm -#var/lib/asterisk/sounds/tennessee.gsm -#var/lib/asterisk/sounds/tenth.gsm -#var/lib/asterisk/sounds/terabits.gsm -#var/lib/asterisk/sounds/terabytes.gsm -#var/lib/asterisk/sounds/terminated.gsm -#var/lib/asterisk/sounds/terminating.gsm -#var/lib/asterisk/sounds/test-tones-follow.gsm -#var/lib/asterisk/sounds/texas.gsm -#var/lib/asterisk/sounds/thank-you-cooperation.gsm -#var/lib/asterisk/sounds/thank-you-for-calling.gsm -#var/lib/asterisk/sounds/thanks-for-calling-today.gsm -#var/lib/asterisk/sounds/thanks-for-using.gsm -#var/lib/asterisk/sounds/that-is-not-rec-phn-num.gsm -#var/lib/asterisk/sounds/that-number.gsm -#var/lib/asterisk/sounds/that-tickles.gsm -#var/lib/asterisk/sounds/that-you-require.gsm -#var/lib/asterisk/sounds/the-mailbox.gsm -#var/lib/asterisk/sounds/the-monkeys-twice.gsm -#var/lib/asterisk/sounds/the-new-number-is.gsm -#var/lib/asterisk/sounds/the-next.gsm -#var/lib/asterisk/sounds/the-num-i-have-is.gsm -#var/lib/asterisk/sounds/the-number-u-dialed.gsm -#var/lib/asterisk/sounds/the-party-you-are-calling.gsm -#var/lib/asterisk/sounds/the-weather-at.gsm -#var/lib/asterisk/sounds/then-press-pound.gsm -#var/lib/asterisk/sounds/there-is-no-customer-support.gsm -#var/lib/asterisk/sounds/these-are-currently.gsm -#var/lib/asterisk/sounds/third.gsm -#var/lib/asterisk/sounds/thirteenth.gsm -#var/lib/asterisk/sounds/thirtieth.gsm -#var/lib/asterisk/sounds/this-call-may-be-monitored-or-recorded.gsm -#var/lib/asterisk/sounds/this-call-may-be.gsm -#var/lib/asterisk/sounds/this-call-will-cost.gsm -#var/lib/asterisk/sounds/this-call-will-end-in.gsm -#var/lib/asterisk/sounds/this-is-the-voice-mail-system.gsm -#var/lib/asterisk/sounds/this-is-yr-wakeup-call.gsm -#var/lib/asterisk/sounds/this.gsm -#var/lib/asterisk/sounds/thnk-u-for-patience.gsm -#var/lib/asterisk/sounds/thousandth.gsm -#var/lib/asterisk/sounds/through.gsm -#var/lib/asterisk/sounds/thunderstorm.gsm -#var/lib/asterisk/sounds/tide.gsm -#var/lib/asterisk/sounds/time.gsm -#var/lib/asterisk/sounds/times.gsm -#var/lib/asterisk/sounds/to-accept-recording.gsm -#var/lib/asterisk/sounds/to-be-called-back.gsm -#var/lib/asterisk/sounds/to-blklist-last-caller.gsm -#var/lib/asterisk/sounds/to-blklist-last-num.gsm -#var/lib/asterisk/sounds/to-call-num-press.gsm -#var/lib/asterisk/sounds/to-call-prson-w-sent-msg.gsm -#var/lib/asterisk/sounds/to-call-this-number.gsm -#var/lib/asterisk/sounds/to-cancel-this-msg.gsm -#var/lib/asterisk/sounds/to-cancel-wakeup.gsm -#var/lib/asterisk/sounds/to-change-exp-date.gsm -#var/lib/asterisk/sounds/to-change-your-pin-number.gsm -#var/lib/asterisk/sounds/to-collect-voicemail.gsm -#var/lib/asterisk/sounds/to-compose-a-message.gsm -#var/lib/asterisk/sounds/to-confirm-wakeup.gsm -#var/lib/asterisk/sounds/to-dial-by-name-press.gsm -#var/lib/asterisk/sounds/to-dial-by-name.gsm -#var/lib/asterisk/sounds/to-enter-a-diff-number.gsm -#var/lib/asterisk/sounds/to-enter-a-number.gsm -#var/lib/asterisk/sounds/to-erase-yr-temp-grtg.gsm -#var/lib/asterisk/sounds/to-extension.gsm -#var/lib/asterisk/sounds/to-hang-up-2.gsm -#var/lib/asterisk/sounds/to-hang-up.gsm -#var/lib/asterisk/sounds/to-hear-callerid.gsm -#var/lib/asterisk/sounds/to-hear-menu-again.gsm -#var/lib/asterisk/sounds/to-hear-msg-again.gsm -#var/lib/asterisk/sounds/to-hear-msg-envelope.gsm -#var/lib/asterisk/sounds/to-hear-net-status.gsm -#var/lib/asterisk/sounds/to-hear-weather-status.gsm -#var/lib/asterisk/sounds/to-hear-your-account-balance.gsm -#var/lib/asterisk/sounds/to-join-a-meeting.gsm -#var/lib/asterisk/sounds/to-leave-message-for.gsm -#var/lib/asterisk/sounds/to-listen-to-it.gsm -#var/lib/asterisk/sounds/to-log-in-to-voice-mail.gsm -#var/lib/asterisk/sounds/to-place-outgoing-call.gsm -#var/lib/asterisk/sounds/to-reach-first-rep.gsm -#var/lib/asterisk/sounds/to-reach-operator.gsm -#var/lib/asterisk/sounds/to-rec-yr-temp-grtg.gsm -#var/lib/asterisk/sounds/to-record-call.gsm -#var/lib/asterisk/sounds/to-redial-the-last-number-you-called.gsm -#var/lib/asterisk/sounds/to-report-emergency.gsm -#var/lib/asterisk/sounds/to-report-system-network-down.gsm -#var/lib/asterisk/sounds/to-rerecord-announce.gsm -#var/lib/asterisk/sounds/to-rerecord-it.gsm -#var/lib/asterisk/sounds/to-rerecord-yr-message.gsm -#var/lib/asterisk/sounds/to-rmv-num-blklist.gsm -#var/lib/asterisk/sounds/to-rqst-wakeup-call.gsm -#var/lib/asterisk/sounds/to-send-a-reply.gsm -#var/lib/asterisk/sounds/to-snooze-for.gsm -#var/lib/asterisk/sounds/to-use-def-attendant.gsm -#var/lib/asterisk/sounds/today.gsm -#var/lib/asterisk/sounds/tomorrow-night.gsm -#var/lib/asterisk/sounds/tomorrow.gsm -#var/lib/asterisk/sounds/tones-that-follow-are-for-the-deaf.gsm -#var/lib/asterisk/sounds/tonight.gsm -#var/lib/asterisk/sounds/too-low.gsm -#var/lib/asterisk/sounds/tornado.gsm -#var/lib/asterisk/sounds/touchtone1.gsm -#var/lib/asterisk/sounds/touchtone2.gsm -#var/lib/asterisk/sounds/touchtone3.gsm -#var/lib/asterisk/sounds/towards.gsm -#var/lib/asterisk/sounds/trading-desk.gsm -#var/lib/asterisk/sounds/traffic.gsm -#var/lib/asterisk/sounds/training.gsm -#var/lib/asterisk/sounds/transportation.gsm -#var/lib/asterisk/sounds/travel.gsm -#var/lib/asterisk/sounds/treasury.gsm -#var/lib/asterisk/sounds/tucson.gsm -#var/lib/asterisk/sounds/tulsa.gsm -#var/lib/asterisk/sounds/turn-off-recording.gsm -#var/lib/asterisk/sounds/turning-to.gsm -#var/lib/asterisk/sounds/twelveth.gsm -#var/lib/asterisk/sounds/twentieth.gsm -#var/lib/asterisk/sounds/twisty-maze.gsm -#var/lib/asterisk/sounds/typhoon.gsm -#var/lib/asterisk/sounds/udp.gsm -#var/lib/asterisk/sounds/uh-oh1.gsm -#var/lib/asterisk/sounds/uh-oh2.gsm -#var/lib/asterisk/sounds/uk.gsm -#var/lib/asterisk/sounds/unavailable.gsm -#var/lib/asterisk/sounds/unconditional.gsm -#var/lib/asterisk/sounds/unidentified-no-callback.gsm -#var/lib/asterisk/sounds/units.gsm -#var/lib/asterisk/sounds/unix.gsm -#var/lib/asterisk/sounds/up.gsm -#var/lib/asterisk/sounds/uptime.gsm -#var/lib/asterisk/sounds/user.gsm -#var/lib/asterisk/sounds/users.gsm -#var/lib/asterisk/sounds/utah.gsm -#var/lib/asterisk/sounds/variable.gsm -#var/lib/asterisk/sounds/vermont.gsm -#var/lib/asterisk/sounds/virginia-beach.gsm -#var/lib/asterisk/sounds/virginia.gsm -#var/lib/asterisk/sounds/visibility.gsm -#var/lib/asterisk/sounds/visit-asterisk-website.gsm -#var/lib/asterisk/sounds/voice-mail-system.gsm -#var/lib/asterisk/sounds/wait-moment.gsm -#var/lib/asterisk/sounds/wait-offensive-sounds.gsm -#var/lib/asterisk/sounds/wakeup-call-cancelled.gsm -#var/lib/asterisk/sounds/wakeup-call.gsm -#var/lib/asterisk/sounds/wakeup-daily.gsm -#var/lib/asterisk/sounds/wakeup-for-daily.gsm -#var/lib/asterisk/sounds/wakeup-for-one-time.gsm -#var/lib/asterisk/sounds/wakeup-onetime.gsm -#var/lib/asterisk/sounds/walks-into-bar-mail.gsm -#var/lib/asterisk/sounds/warning.gsm -#var/lib/asterisk/sounds/was-last-seen.gsm -#var/lib/asterisk/sounds/was.gsm -#var/lib/asterisk/sounds/washington-dc.gsm -#var/lib/asterisk/sounds/washington.gsm -#var/lib/asterisk/sounds/watch.gsm -#var/lib/asterisk/sounds/we-apologize.gsm -#var/lib/asterisk/sounds/we-dont-have-tech-support.gsm -#var/lib/asterisk/sounds/weasels-eaten-phonesys.gsm -#var/lib/asterisk/sounds/weather-station.gsm -#var/lib/asterisk/sounds/weather.gsm -#var/lib/asterisk/sounds/web.gsm -#var/lib/asterisk/sounds/weeks.gsm -#var/lib/asterisk/sounds/welcome.gsm -#var/lib/asterisk/sounds/were-sorry.gsm -#var/lib/asterisk/sounds/west-virginia.gsm -#var/lib/asterisk/sounds/west.gsm -#var/lib/asterisk/sounds/westerly.gsm -#var/lib/asterisk/sounds/what-are-you-wearing.gsm -#var/lib/asterisk/sounds/what-time-it-is.gsm -#var/lib/asterisk/sounds/what-time-it-is2.gsm -#var/lib/asterisk/sounds/when-dialing-this-number.gsm -#var/lib/asterisk/sounds/who-would-you-like-to-call.gsm -#var/lib/asterisk/sounds/why-no-answer-mystery.gsm -#var/lib/asterisk/sounds/wichita.gsm -#var/lib/asterisk/sounds/will-apply.gsm -#var/lib/asterisk/sounds/will-expire.gsm -#var/lib/asterisk/sounds/will-not-expire.gsm -#var/lib/asterisk/sounds/will-reflect-charge-of.gsm -#var/lib/asterisk/sounds/wind.gsm -#var/lib/asterisk/sounds/windows.gsm -#var/lib/asterisk/sounds/windy.gsm -#var/lib/asterisk/sounds/wisconsin.gsm -#var/lib/asterisk/sounds/wish-to-continue.gsm -#var/lib/asterisk/sounds/with.gsm -#var/lib/asterisk/sounds/within.gsm -#var/lib/asterisk/sounds/work.gsm -#var/lib/asterisk/sounds/wrong-try-again-smarty.gsm -#var/lib/asterisk/sounds/wtng-to-spk-w-rep.gsm -#var/lib/asterisk/sounds/www-switchboard-com.gsm -#var/lib/asterisk/sounds/wx -#var/lib/asterisk/sounds/wx/around.gsm -#var/lib/asterisk/sounds/wx/barometer.gsm -#var/lib/asterisk/sounds/wx/ceiling.gsm -#var/lib/asterisk/sounds/wx/dew-point.gsm -#var/lib/asterisk/sounds/wx/falling.gsm -#var/lib/asterisk/sounds/wx/feet.gsm -#var/lib/asterisk/sounds/wx/foot.gsm -#var/lib/asterisk/sounds/wx/gust.gsm -#var/lib/asterisk/sounds/wx/gusting-to.gsm -#var/lib/asterisk/sounds/wx/gusts.gsm -#var/lib/asterisk/sounds/wx/gusty.gsm -#var/lib/asterisk/sounds/wx/heat-index.gsm -#var/lib/asterisk/sounds/wx/humidity.gsm -#var/lib/asterisk/sounds/wx/inch.gsm -#var/lib/asterisk/sounds/wx/inches.gsm -#var/lib/asterisk/sounds/wx/kilometer.gsm -#var/lib/asterisk/sounds/wx/large.gsm -#var/lib/asterisk/sounds/wx/meter.gsm -#var/lib/asterisk/sounds/wx/mist.gsm -#var/lib/asterisk/sounds/wx/northeast.gsm -#var/lib/asterisk/sounds/wx/northwest.gsm -#var/lib/asterisk/sounds/wx/percent.gsm -#var/lib/asterisk/sounds/wx/point.gsm -#var/lib/asterisk/sounds/wx/rising.gsm -#var/lib/asterisk/sounds/wx/southeast.gsm -#var/lib/asterisk/sounds/wx/southwest.gsm -#var/lib/asterisk/sounds/wx/steady.gsm -#var/lib/asterisk/sounds/wx/temperature.gsm -#var/lib/asterisk/sounds/wx/wind-chill.gsm -#var/lib/asterisk/sounds/wx/winds.gsm -#var/lib/asterisk/sounds/wyoming.gsm -#var/lib/asterisk/sounds/yeah.gsm -#var/lib/asterisk/sounds/year.gsm -#var/lib/asterisk/sounds/years.gsm -#var/lib/asterisk/sounds/yes-dear.gsm -#var/lib/asterisk/sounds/yes-dear2.gsm -#var/lib/asterisk/sounds/yesterday.gsm -#var/lib/asterisk/sounds/you-are-caller-num.gsm -#var/lib/asterisk/sounds/you-are-curr-call-num.gsm -#var/lib/asterisk/sounds/you-can-press.gsm -#var/lib/asterisk/sounds/you-dialed-wrong-number.gsm -#var/lib/asterisk/sounds/you-entered.gsm -#var/lib/asterisk/sounds/you-have-dialed.gsm -#var/lib/asterisk/sounds/you-have-reached-a-test-number.gsm -#var/lib/asterisk/sounds/you-have-these-options.gsm -#var/lib/asterisk/sounds/you-must-first-dial.gsm -#var/lib/asterisk/sounds/you-seem-impatient.gsm -#var/lib/asterisk/sounds/you-sound-cute.gsm -#var/lib/asterisk/sounds/you-wish-to-join.gsm -#var/lib/asterisk/sounds/your-account.gsm -#var/lib/asterisk/sounds/your-msg-has-been-saved.gsm -#var/lib/asterisk/sounds/your-msg-is-too-short.gsm -#var/lib/asterisk/sounds/your-temp-greeting.gsm -#var/lib/asterisk/sounds/your.gsm -#var/lib/asterisk/sounds/zip-code.gsm -var/log/asterisk -#var/log/asterisk/cdr-csv -#var/log/asterisk/cdr-custom -var/spool/asterisk -#var/spool/asterisk/dictate -#var/spool/asterisk/meetme -#var/spool/asterisk/monitor -#var/spool/asterisk/system -#var/spool/asterisk/tmp -#var/spool/asterisk/voicemail -#var/spool/asterisk/voicemail/default -#var/spool/asterisk/voicemail/default/1234 -#var/spool/asterisk/voicemail/default/1234/INBOX -#var/spool/asterisk/voicemail/default/1234/busy.gsm -#var/spool/asterisk/voicemail/default/1234/unavail.gsm -usr/lib/perl5/site_perl/5.8.5/Asterisk -usr/lib/perl5/site_perl/5.8.5/Asterisk.pm -#usr/lib/perl5/site_perl/5.8.5/Asterisk/AGI.pm -#usr/lib/perl5/site_perl/5.8.5/Asterisk/Manager.pm -#usr/lib/perl5/site_perl/5.8.5/Asterisk/Outgoing.pm -#usr/lib/perl5/site_perl/5.8.5/Asterisk/QCall.pm -#usr/lib/perl5/site_perl/5.8.5/Asterisk/Voicemail.pm -#usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/asterisk-perl -#usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/asterisk-perl/.packlist -#usr/share/man/man3/Asterisk::AGI.3 -#usr/share/man/man3/Asterisk::Manager.3 -#usr/share/man/man3/Asterisk::Outgoing.3 -#usr/share/man/man3/Asterisk::Voicemail.3 diff --git a/src/paks/asterisk/depends.txt b/src/paks/asterisk/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/asterisk/install.sh b/src/paks/asterisk/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/asterisk/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/asterisk/uninstall.sh b/src/paks/asterisk/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/asterisk/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/bristuff/ROOTFILES b/src/paks/bristuff/ROOTFILES deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/bristuff/depends.txt b/src/paks/bristuff/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/bristuff/install.sh b/src/paks/bristuff/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/bristuff/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/bristuff/uninstall.sh b/src/paks/bristuff/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/bristuff/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/cftp/ROOTFILES b/src/paks/cftp/ROOTFILES deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/cftp/depends.txt b/src/paks/cftp/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/cftp/install.sh b/src/paks/cftp/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/cftp/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/cftp/uninstall.sh b/src/paks/cftp/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/cftp/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/clamav/ROOTFILES b/src/paks/clamav/ROOTFILES deleted file mode 100644 index 712f8141ce..0000000000 --- a/src/paks/clamav/ROOTFILES +++ /dev/null @@ -1,27 +0,0 @@ -usr/bin/clamav-config -usr/bin/clamdscan -usr/bin/clamscan -usr/bin/freshclam -usr/bin/sigtool -#usr/include/clamav.h -#usr/lib/libclamav.a -#usr/lib/libclamav.la -usr/lib/libclamav.so -usr/lib/libclamav.so.1 -usr/lib/libclamav.so.1.0.17 -#usr/lib/pkgconfig/libclamav.pc -usr/sbin/clamd -usr/share/clamav -usr/share/clamav/daily.cvd -usr/share/clamav/main.cvd -#usr/share/man/man1/clamdscan.1 -#usr/share/man/man1/clamscan.1 -#usr/share/man/man1/freshclam.1 -#usr/share/man/man1/sigtool.1 -#usr/share/man/man5/clamd.conf.5 -#usr/share/man/man5/freshclam.conf.5 -#usr/share/man/man8/clamav-milter.8 -#usr/share/man/man8/clamd.8 -var/ipfire/clamav -var/ipfire/clamav/clamd.conf -var/ipfire/clamav/freshclam.conf diff --git a/src/paks/clamav/depends.txt b/src/paks/clamav/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/clamav/install.sh b/src/paks/clamav/install.sh deleted file mode 100644 index 2f78907fa2..0000000000 --- a/src/paks/clamav/install.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / diff --git a/src/paks/clamav/uninstall.sh b/src/paks/clamav/uninstall.sh deleted file mode 100644 index 7ee2885e73..0000000000 --- a/src/paks/clamav/uninstall.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files diff --git a/src/paks/cups/ROOTFILES b/src/paks/cups/ROOTFILES deleted file mode 100644 index d07ef9592d..0000000000 --- a/src/paks/cups/ROOTFILES +++ /dev/null @@ -1,1032 +0,0 @@ -#etc/pam.d/cups -#etc/rc0.d -#etc/rc0.d/K00cups -#etc/rc2.d -#etc/rc2.d/S99cups -#etc/rc3.d -#etc/rc3.d/S99cups -#etc/rc5.d -#etc/rc5.d/S99cups -usr/bin/cancel -usr/bin/cups-config -usr/bin/cupstestdsc -usr/bin/cupstestppd -usr/bin/lp -usr/bin/lpoptions -usr/bin/lppasswd -usr/bin/lpq -usr/bin/lpr -usr/bin/lprm -usr/bin/lpstat -#usr/include/cups -#usr/include/cups/adminutil.h -#usr/include/cups/array.h -#usr/include/cups/cups.h -#usr/include/cups/dir.h -#usr/include/cups/file.h -#usr/include/cups/http.h -#usr/include/cups/i18n.h -#usr/include/cups/image.h -#usr/include/cups/ipp.h -#usr/include/cups/language.h -#usr/include/cups/md5.h -#usr/include/cups/ppd.h -#usr/include/cups/raster.h -#usr/include/cups/transcode.h -usr/lib/cups -#usr/lib/cups/backend -#usr/lib/cups/backend/http -#usr/lib/cups/backend/ipp -#usr/lib/cups/backend/lpd -#usr/lib/cups/backend/parallel -#usr/lib/cups/backend/scsi -#usr/lib/cups/backend/serial -#usr/lib/cups/backend/smb -#usr/lib/cups/backend/snmp -#usr/lib/cups/backend/socket -#usr/lib/cups/backend/usb -#usr/lib/cups/cgi-bin -#usr/lib/cups/cgi-bin/admin.cgi -#usr/lib/cups/cgi-bin/classes.cgi -#usr/lib/cups/cgi-bin/help.cgi -#usr/lib/cups/cgi-bin/jobs.cgi -#usr/lib/cups/cgi-bin/printers.cgi -#usr/lib/cups/daemon -#usr/lib/cups/daemon/cups-deviced -#usr/lib/cups/daemon/cups-driverd -#usr/lib/cups/daemon/cups-lpd -#usr/lib/cups/daemon/cups-polld -#usr/lib/cups/driver -#usr/lib/cups/filter -#usr/lib/cups/filter/gziptoany -#usr/lib/cups/filter/hpgltops -#usr/lib/cups/filter/imagetops -#usr/lib/cups/filter/imagetoraster -#usr/lib/cups/filter/pdftops -#usr/lib/cups/filter/pstops -#usr/lib/cups/filter/rastertodymo -#usr/lib/cups/filter/rastertoepson -#usr/lib/cups/filter/rastertohp -#usr/lib/cups/filter/rastertolabel -#usr/lib/cups/filter/texttops -#usr/lib/cups/monitor -#usr/lib/cups/monitor/bcp -#usr/lib/cups/monitor/tbcp -#usr/lib/cups/notifier -#usr/lib/cups/notifier/mailto -#usr/lib/cups/notifier/testnotify -usr/lib/libcups.so -usr/lib/libcups.so.2 -usr/lib/libcupsimage.so -usr/lib/libcupsimage.so.2 -usr/sbin/accept -usr/sbin/cupsaddsmb -usr/sbin/cupsd -usr/sbin/cupsdisable -usr/sbin/cupsenable -usr/sbin/lpadmin -usr/sbin/lpc -usr/sbin/lpinfo -usr/sbin/lpmove -usr/sbin/reject -usr/share/cups -#usr/share/cups/banners -#usr/share/cups/banners/classified -#usr/share/cups/banners/confidential -#usr/share/cups/banners/secret -#usr/share/cups/banners/standard -#usr/share/cups/banners/topsecret -#usr/share/cups/banners/unclassified -#usr/share/cups/charmaps -#usr/share/cups/charmaps/euc-cn.txt -#usr/share/cups/charmaps/euc-jp.txt -#usr/share/cups/charmaps/euc-kr.txt -#usr/share/cups/charmaps/euc-tw.txt -#usr/share/cups/charmaps/iso-8859-1.txt -#usr/share/cups/charmaps/iso-8859-10.txt -#usr/share/cups/charmaps/iso-8859-11.txt -#usr/share/cups/charmaps/iso-8859-13.txt -#usr/share/cups/charmaps/iso-8859-14.txt -#usr/share/cups/charmaps/iso-8859-15.txt -#usr/share/cups/charmaps/iso-8859-16.txt -#usr/share/cups/charmaps/iso-8859-2.txt -#usr/share/cups/charmaps/iso-8859-3.txt -#usr/share/cups/charmaps/iso-8859-4.txt -#usr/share/cups/charmaps/iso-8859-5.txt -#usr/share/cups/charmaps/iso-8859-6.txt -#usr/share/cups/charmaps/iso-8859-7.txt -#usr/share/cups/charmaps/iso-8859-8.txt -#usr/share/cups/charmaps/iso-8859-9.txt -#usr/share/cups/charmaps/koi8-r.txt -#usr/share/cups/charmaps/koi8-u.txt -#usr/share/cups/charmaps/mac-roman.txt -#usr/share/cups/charmaps/windows-1250.txt -#usr/share/cups/charmaps/windows-1251.txt -#usr/share/cups/charmaps/windows-1252.txt -#usr/share/cups/charmaps/windows-1253.txt -#usr/share/cups/charmaps/windows-1254.txt -#usr/share/cups/charmaps/windows-1255.txt -#usr/share/cups/charmaps/windows-1256.txt -#usr/share/cups/charmaps/windows-1257.txt -#usr/share/cups/charmaps/windows-1258.txt -#usr/share/cups/charmaps/windows-1361.txt -#usr/share/cups/charmaps/windows-874.txt -#usr/share/cups/charmaps/windows-932.txt -#usr/share/cups/charmaps/windows-936.txt -#usr/share/cups/charmaps/windows-949.txt -#usr/share/cups/charmaps/windows-950.txt -#usr/share/cups/charsets -#usr/share/cups/charsets/iso-8859-1 -#usr/share/cups/charsets/iso-8859-10 -#usr/share/cups/charsets/iso-8859-13 -#usr/share/cups/charsets/iso-8859-14 -#usr/share/cups/charsets/iso-8859-15 -#usr/share/cups/charsets/iso-8859-2 -#usr/share/cups/charsets/iso-8859-3 -#usr/share/cups/charsets/iso-8859-4 -#usr/share/cups/charsets/iso-8859-5 -#usr/share/cups/charsets/iso-8859-6 -#usr/share/cups/charsets/iso-8859-7 -#usr/share/cups/charsets/iso-8859-8 -#usr/share/cups/charsets/iso-8859-9 -#usr/share/cups/charsets/koi8-r -#usr/share/cups/charsets/koi8-u -#usr/share/cups/charsets/utf-8 -#usr/share/cups/charsets/windows-1250 -#usr/share/cups/charsets/windows-1251 -#usr/share/cups/charsets/windows-1252 -#usr/share/cups/charsets/windows-1253 -#usr/share/cups/charsets/windows-1254 -#usr/share/cups/charsets/windows-1255 -#usr/share/cups/charsets/windows-1256 -#usr/share/cups/charsets/windows-1257 -#usr/share/cups/charsets/windows-1258 -#usr/share/cups/charsets/windows-874 -#usr/share/cups/data -#usr/share/cups/data/HPGLprolog -#usr/share/cups/data/psglyphs -#usr/share/cups/data/testprint.ps -#usr/share/cups/fonts -#usr/share/cups/fonts/Courier -#usr/share/cups/fonts/Courier-Bold -#usr/share/cups/fonts/Courier-BoldOblique -#usr/share/cups/fonts/Courier-Oblique -#usr/share/cups/fonts/Symbol -#usr/share/cups/model -#usr/share/cups/model/deskjet.ppd -#usr/share/cups/model/deskjet2.ppd -#usr/share/cups/model/dymo.ppd -#usr/share/cups/model/epson24.ppd -#usr/share/cups/model/epson9.ppd -#usr/share/cups/model/laserjet.ppd -#usr/share/cups/model/okidat24.ppd -#usr/share/cups/model/okidata9.ppd -#usr/share/cups/model/stcolor.ppd -#usr/share/cups/model/stcolor2.ppd -#usr/share/cups/model/stphoto.ppd -#usr/share/cups/model/stphoto2.ppd -#usr/share/cups/model/zebra.ppd -#usr/share/cups/model/zebraep1.ppd -#usr/share/cups/model/zebraep2.ppd -#usr/share/cups/profiles -#usr/share/cups/templates -#usr/share/cups/templates/add-class.tmpl -#usr/share/cups/templates/add-printer.tmpl -#usr/share/cups/templates/admin.tmpl -#usr/share/cups/templates/choose-device.tmpl -#usr/share/cups/templates/choose-make.tmpl -#usr/share/cups/templates/choose-model.tmpl -#usr/share/cups/templates/choose-serial.tmpl -#usr/share/cups/templates/choose-uri.tmpl -#usr/share/cups/templates/class-added.tmpl -#usr/share/cups/templates/class-confirm.tmpl -#usr/share/cups/templates/class-deleted.tmpl -#usr/share/cups/templates/class-jobs-header.tmpl -#usr/share/cups/templates/class-modified.tmpl -#usr/share/cups/templates/classes-header.tmpl -#usr/share/cups/templates/classes.tmpl -#usr/share/cups/templates/de -#usr/share/cups/templates/de/add-class.tmpl -#usr/share/cups/templates/de/add-printer.tmpl -#usr/share/cups/templates/de/admin.tmpl -#usr/share/cups/templates/de/choose-device.tmpl -#usr/share/cups/templates/de/choose-make.tmpl -#usr/share/cups/templates/de/choose-model.tmpl -#usr/share/cups/templates/de/choose-serial.tmpl -#usr/share/cups/templates/de/choose-uri.tmpl -#usr/share/cups/templates/de/class-added.tmpl -#usr/share/cups/templates/de/class-confirm.tmpl -#usr/share/cups/templates/de/class-deleted.tmpl -#usr/share/cups/templates/de/class-jobs-header.tmpl -#usr/share/cups/templates/de/class-modified.tmpl -#usr/share/cups/templates/de/classes-header.tmpl -#usr/share/cups/templates/de/classes.tmpl -#usr/share/cups/templates/de/edit-config.tmpl -#usr/share/cups/templates/de/error-op.tmpl -#usr/share/cups/templates/de/error.tmpl -#usr/share/cups/templates/de/header.tmpl -#usr/share/cups/templates/de/help-header.tmpl -#usr/share/cups/templates/de/help-printable.tmpl -#usr/share/cups/templates/de/job-cancel.tmpl -#usr/share/cups/templates/de/job-hold.tmpl -#usr/share/cups/templates/de/job-move.tmpl -#usr/share/cups/templates/de/job-moved.tmpl -#usr/share/cups/templates/de/job-release.tmpl -#usr/share/cups/templates/de/job-restart.tmpl -#usr/share/cups/templates/de/jobs-header.tmpl -#usr/share/cups/templates/de/jobs.tmpl -#usr/share/cups/templates/de/maintenance.tmpl -#usr/share/cups/templates/de/modify-class.tmpl -#usr/share/cups/templates/de/modify-printer.tmpl -#usr/share/cups/templates/de/option-boolean.tmpl -#usr/share/cups/templates/de/option-conflict.tmpl -#usr/share/cups/templates/de/option-header.tmpl -#usr/share/cups/templates/de/option-pickmany.tmpl -#usr/share/cups/templates/de/option-pickone.tmpl -#usr/share/cups/templates/de/option-trailer.tmpl -#usr/share/cups/templates/de/pager.tmpl -#usr/share/cups/templates/de/printer-accept.tmpl -#usr/share/cups/templates/de/printer-added.tmpl -#usr/share/cups/templates/de/printer-configured.tmpl -#usr/share/cups/templates/de/printer-confirm.tmpl -#usr/share/cups/templates/de/printer-default.tmpl -#usr/share/cups/templates/de/printer-deleted.tmpl -#usr/share/cups/templates/de/printer-jobs-header.tmpl -#usr/share/cups/templates/de/printer-modified.tmpl -#usr/share/cups/templates/de/printer-purge.tmpl -#usr/share/cups/templates/de/printer-reject.tmpl -#usr/share/cups/templates/de/printer-start.tmpl -#usr/share/cups/templates/de/printer-stop.tmpl -#usr/share/cups/templates/de/printers-header.tmpl -#usr/share/cups/templates/de/printers.tmpl -#usr/share/cups/templates/de/restart.tmpl -#usr/share/cups/templates/de/samba-export.tmpl -#usr/share/cups/templates/de/samba-exported.tmpl -#usr/share/cups/templates/de/search.tmpl -#usr/share/cups/templates/de/set-printer-options-header.tmpl -#usr/share/cups/templates/de/set-printer-options-trailer.tmpl -#usr/share/cups/templates/de/test-page.tmpl -#usr/share/cups/templates/de/trailer.tmpl -#usr/share/cups/templates/de/users.tmpl -#usr/share/cups/templates/edit-config.tmpl -#usr/share/cups/templates/error-op.tmpl -#usr/share/cups/templates/error.tmpl -#usr/share/cups/templates/es -#usr/share/cups/templates/es/add-class.tmpl -#usr/share/cups/templates/es/add-printer.tmpl -#usr/share/cups/templates/es/admin.tmpl -#usr/share/cups/templates/es/choose-device.tmpl -#usr/share/cups/templates/es/choose-make.tmpl -#usr/share/cups/templates/es/choose-model.tmpl -#usr/share/cups/templates/es/choose-serial.tmpl -#usr/share/cups/templates/es/choose-uri.tmpl -#usr/share/cups/templates/es/class-added.tmpl -#usr/share/cups/templates/es/class-confirm.tmpl -#usr/share/cups/templates/es/class-deleted.tmpl -#usr/share/cups/templates/es/class-jobs-header.tmpl -#usr/share/cups/templates/es/class-modified.tmpl -#usr/share/cups/templates/es/classes-header.tmpl -#usr/share/cups/templates/es/classes.tmpl -#usr/share/cups/templates/es/edit-config.tmpl -#usr/share/cups/templates/es/error-op.tmpl -#usr/share/cups/templates/es/error.tmpl -#usr/share/cups/templates/es/header.tmpl -#usr/share/cups/templates/es/help-header.tmpl -#usr/share/cups/templates/es/help-printable.tmpl -#usr/share/cups/templates/es/job-cancel.tmpl -#usr/share/cups/templates/es/job-hold.tmpl -#usr/share/cups/templates/es/job-move.tmpl -#usr/share/cups/templates/es/job-moved.tmpl -#usr/share/cups/templates/es/job-release.tmpl -#usr/share/cups/templates/es/job-restart.tmpl -#usr/share/cups/templates/es/jobs-header.tmpl -#usr/share/cups/templates/es/jobs.tmpl -#usr/share/cups/templates/es/maintenance.tmpl -#usr/share/cups/templates/es/modify-class.tmpl -#usr/share/cups/templates/es/modify-printer.tmpl -#usr/share/cups/templates/es/option-boolean.tmpl -#usr/share/cups/templates/es/option-conflict.tmpl -#usr/share/cups/templates/es/option-header.tmpl -#usr/share/cups/templates/es/option-pickmany.tmpl -#usr/share/cups/templates/es/option-pickone.tmpl -#usr/share/cups/templates/es/option-trailer.tmpl -#usr/share/cups/templates/es/pager.tmpl -#usr/share/cups/templates/es/printer-accept.tmpl -#usr/share/cups/templates/es/printer-added.tmpl -#usr/share/cups/templates/es/printer-configured.tmpl -#usr/share/cups/templates/es/printer-confirm.tmpl -#usr/share/cups/templates/es/printer-default.tmpl -#usr/share/cups/templates/es/printer-deleted.tmpl -#usr/share/cups/templates/es/printer-jobs-header.tmpl -#usr/share/cups/templates/es/printer-modified.tmpl -#usr/share/cups/templates/es/printer-purge.tmpl -#usr/share/cups/templates/es/printer-reject.tmpl -#usr/share/cups/templates/es/printer-start.tmpl -#usr/share/cups/templates/es/printer-stop.tmpl -#usr/share/cups/templates/es/printers-header.tmpl -#usr/share/cups/templates/es/printers.tmpl -#usr/share/cups/templates/es/restart.tmpl -#usr/share/cups/templates/es/samba-export.tmpl -#usr/share/cups/templates/es/samba-exported.tmpl -#usr/share/cups/templates/es/search.tmpl -#usr/share/cups/templates/es/set-printer-options-header.tmpl -#usr/share/cups/templates/es/set-printer-options-trailer.tmpl -#usr/share/cups/templates/es/test-page.tmpl -#usr/share/cups/templates/es/trailer.tmpl -#usr/share/cups/templates/es/users.tmpl -#usr/share/cups/templates/header.tmpl -#usr/share/cups/templates/help-header.tmpl -#usr/share/cups/templates/help-printable.tmpl -#usr/share/cups/templates/ja -#usr/share/cups/templates/ja/add-class.tmpl -#usr/share/cups/templates/ja/add-printer.tmpl -#usr/share/cups/templates/ja/admin.tmpl -#usr/share/cups/templates/ja/choose-device.tmpl -#usr/share/cups/templates/ja/choose-make.tmpl -#usr/share/cups/templates/ja/choose-model.tmpl -#usr/share/cups/templates/ja/choose-serial.tmpl -#usr/share/cups/templates/ja/choose-uri.tmpl -#usr/share/cups/templates/ja/class-added.tmpl -#usr/share/cups/templates/ja/class-confirm.tmpl -#usr/share/cups/templates/ja/class-deleted.tmpl -#usr/share/cups/templates/ja/class-jobs-header.tmpl -#usr/share/cups/templates/ja/class-modified.tmpl -#usr/share/cups/templates/ja/classes-header.tmpl -#usr/share/cups/templates/ja/classes.tmpl -#usr/share/cups/templates/ja/edit-config.tmpl -#usr/share/cups/templates/ja/error-op.tmpl -#usr/share/cups/templates/ja/error.tmpl -#usr/share/cups/templates/ja/header.tmpl -#usr/share/cups/templates/ja/help-header.tmpl -#usr/share/cups/templates/ja/job-cancel.tmpl -#usr/share/cups/templates/ja/job-hold.tmpl -#usr/share/cups/templates/ja/job-move.tmpl -#usr/share/cups/templates/ja/job-moved.tmpl -#usr/share/cups/templates/ja/job-release.tmpl -#usr/share/cups/templates/ja/job-restart.tmpl -#usr/share/cups/templates/ja/jobs-header.tmpl -#usr/share/cups/templates/ja/jobs.tmpl -#usr/share/cups/templates/ja/maintenance.tmpl -#usr/share/cups/templates/ja/modify-class.tmpl -#usr/share/cups/templates/ja/modify-printer.tmpl -#usr/share/cups/templates/ja/option-conflict.tmpl -#usr/share/cups/templates/ja/option-trailer.tmpl -#usr/share/cups/templates/ja/pager.tmpl -#usr/share/cups/templates/ja/printer-accept.tmpl -#usr/share/cups/templates/ja/printer-added.tmpl -#usr/share/cups/templates/ja/printer-configured.tmpl -#usr/share/cups/templates/ja/printer-confirm.tmpl -#usr/share/cups/templates/ja/printer-default.tmpl -#usr/share/cups/templates/ja/printer-deleted.tmpl -#usr/share/cups/templates/ja/printer-jobs-header.tmpl -#usr/share/cups/templates/ja/printer-modified.tmpl -#usr/share/cups/templates/ja/printer-purge.tmpl -#usr/share/cups/templates/ja/printer-reject.tmpl -#usr/share/cups/templates/ja/printer-start.tmpl -#usr/share/cups/templates/ja/printer-stop.tmpl -#usr/share/cups/templates/ja/printers-header.tmpl -#usr/share/cups/templates/ja/printers.tmpl -#usr/share/cups/templates/ja/restart.tmpl -#usr/share/cups/templates/ja/samba-export.tmpl -#usr/share/cups/templates/ja/samba-exported.tmpl -#usr/share/cups/templates/ja/search.tmpl -#usr/share/cups/templates/ja/test-page.tmpl -#usr/share/cups/templates/ja/users.tmpl -#usr/share/cups/templates/job-cancel.tmpl -#usr/share/cups/templates/job-hold.tmpl -#usr/share/cups/templates/job-move.tmpl -#usr/share/cups/templates/job-moved.tmpl -#usr/share/cups/templates/job-release.tmpl -#usr/share/cups/templates/job-restart.tmpl -#usr/share/cups/templates/jobs-header.tmpl -#usr/share/cups/templates/jobs.tmpl -#usr/share/cups/templates/maintenance.tmpl -#usr/share/cups/templates/modify-class.tmpl -#usr/share/cups/templates/modify-printer.tmpl -#usr/share/cups/templates/option-boolean.tmpl -#usr/share/cups/templates/option-conflict.tmpl -#usr/share/cups/templates/option-header.tmpl -#usr/share/cups/templates/option-pickmany.tmpl -#usr/share/cups/templates/option-pickone.tmpl -#usr/share/cups/templates/option-trailer.tmpl -#usr/share/cups/templates/pager.tmpl -#usr/share/cups/templates/pl -#usr/share/cups/templates/pl/add-class.tmpl -#usr/share/cups/templates/pl/add-printer.tmpl -#usr/share/cups/templates/pl/admin.tmpl -#usr/share/cups/templates/pl/choose-device.tmpl -#usr/share/cups/templates/pl/choose-make.tmpl -#usr/share/cups/templates/pl/choose-model.tmpl -#usr/share/cups/templates/pl/choose-serial.tmpl -#usr/share/cups/templates/pl/choose-uri.tmpl -#usr/share/cups/templates/pl/class-added.tmpl -#usr/share/cups/templates/pl/class-confirm.tmpl -#usr/share/cups/templates/pl/class-deleted.tmpl -#usr/share/cups/templates/pl/class-jobs-header.tmpl -#usr/share/cups/templates/pl/class-modified.tmpl -#usr/share/cups/templates/pl/classes-header.tmpl -#usr/share/cups/templates/pl/classes.tmpl -#usr/share/cups/templates/pl/edit-config.tmpl -#usr/share/cups/templates/pl/error-op.tmpl -#usr/share/cups/templates/pl/error.tmpl -#usr/share/cups/templates/pl/header.tmpl -#usr/share/cups/templates/pl/help-header.tmpl -#usr/share/cups/templates/pl/help-printable.tmpl -#usr/share/cups/templates/pl/job-cancel.tmpl -#usr/share/cups/templates/pl/job-hold.tmpl -#usr/share/cups/templates/pl/job-move.tmpl -#usr/share/cups/templates/pl/job-moved.tmpl -#usr/share/cups/templates/pl/job-release.tmpl -#usr/share/cups/templates/pl/job-restart.tmpl -#usr/share/cups/templates/pl/jobs-header.tmpl -#usr/share/cups/templates/pl/jobs.tmpl -#usr/share/cups/templates/pl/maintenance.tmpl -#usr/share/cups/templates/pl/modify-class.tmpl -#usr/share/cups/templates/pl/modify-printer.tmpl -#usr/share/cups/templates/pl/option-boolean.tmpl -#usr/share/cups/templates/pl/option-conflict.tmpl -#usr/share/cups/templates/pl/option-header.tmpl -#usr/share/cups/templates/pl/option-pickmany.tmpl -#usr/share/cups/templates/pl/option-pickone.tmpl -#usr/share/cups/templates/pl/option-trailer.tmpl -#usr/share/cups/templates/pl/pager.tmpl -#usr/share/cups/templates/pl/printer-accept.tmpl -#usr/share/cups/templates/pl/printer-added.tmpl -#usr/share/cups/templates/pl/printer-configured.tmpl -#usr/share/cups/templates/pl/printer-confirm.tmpl -#usr/share/cups/templates/pl/printer-default.tmpl -#usr/share/cups/templates/pl/printer-deleted.tmpl -#usr/share/cups/templates/pl/printer-jobs-header.tmpl -#usr/share/cups/templates/pl/printer-modified.tmpl -#usr/share/cups/templates/pl/printer-purge.tmpl -#usr/share/cups/templates/pl/printer-reject.tmpl -#usr/share/cups/templates/pl/printer-start.tmpl -#usr/share/cups/templates/pl/printer-stop.tmpl -#usr/share/cups/templates/pl/printers-header.tmpl -#usr/share/cups/templates/pl/printers.tmpl -#usr/share/cups/templates/pl/restart.tmpl -#usr/share/cups/templates/pl/samba-export.tmpl -#usr/share/cups/templates/pl/samba-exported.tmpl -#usr/share/cups/templates/pl/search.tmpl -#usr/share/cups/templates/pl/set-printer-options-header.tmpl -#usr/share/cups/templates/pl/set-printer-options-trailer.tmpl -#usr/share/cups/templates/pl/test-page.tmpl -#usr/share/cups/templates/pl/trailer.tmpl -#usr/share/cups/templates/pl/users.tmpl -#usr/share/cups/templates/printer-accept.tmpl -#usr/share/cups/templates/printer-added.tmpl -#usr/share/cups/templates/printer-configured.tmpl -#usr/share/cups/templates/printer-confirm.tmpl -#usr/share/cups/templates/printer-default.tmpl -#usr/share/cups/templates/printer-deleted.tmpl -#usr/share/cups/templates/printer-jobs-header.tmpl -#usr/share/cups/templates/printer-modified.tmpl -#usr/share/cups/templates/printer-purge.tmpl -#usr/share/cups/templates/printer-reject.tmpl -#usr/share/cups/templates/printer-start.tmpl -#usr/share/cups/templates/printer-stop.tmpl -#usr/share/cups/templates/printers-header.tmpl -#usr/share/cups/templates/printers.tmpl -#usr/share/cups/templates/restart.tmpl -#usr/share/cups/templates/samba-export.tmpl -#usr/share/cups/templates/samba-exported.tmpl -#usr/share/cups/templates/search.tmpl -#usr/share/cups/templates/set-printer-options-header.tmpl -#usr/share/cups/templates/set-printer-options-trailer.tmpl -#usr/share/cups/templates/sv -#usr/share/cups/templates/sv/add-class.tmpl -#usr/share/cups/templates/sv/add-printer.tmpl -#usr/share/cups/templates/sv/admin.tmpl -#usr/share/cups/templates/sv/choose-device.tmpl -#usr/share/cups/templates/sv/choose-make.tmpl -#usr/share/cups/templates/sv/choose-model.tmpl -#usr/share/cups/templates/sv/choose-serial.tmpl -#usr/share/cups/templates/sv/choose-uri.tmpl -#usr/share/cups/templates/sv/class-added.tmpl -#usr/share/cups/templates/sv/class-confirm.tmpl -#usr/share/cups/templates/sv/class-deleted.tmpl -#usr/share/cups/templates/sv/class-jobs-header.tmpl -#usr/share/cups/templates/sv/class-modified.tmpl -#usr/share/cups/templates/sv/classes-header.tmpl -#usr/share/cups/templates/sv/classes.tmpl -#usr/share/cups/templates/sv/edit-config.tmpl -#usr/share/cups/templates/sv/error-op.tmpl -#usr/share/cups/templates/sv/error.tmpl -#usr/share/cups/templates/sv/header.tmpl -#usr/share/cups/templates/sv/help-header.tmpl -#usr/share/cups/templates/sv/help-printable.tmpl -#usr/share/cups/templates/sv/job-cancel.tmpl -#usr/share/cups/templates/sv/job-hold.tmpl -#usr/share/cups/templates/sv/job-move.tmpl -#usr/share/cups/templates/sv/job-moved.tmpl -#usr/share/cups/templates/sv/job-release.tmpl -#usr/share/cups/templates/sv/job-restart.tmpl -#usr/share/cups/templates/sv/jobs-header.tmpl -#usr/share/cups/templates/sv/jobs.tmpl -#usr/share/cups/templates/sv/maintenance.tmpl -#usr/share/cups/templates/sv/modify-class.tmpl -#usr/share/cups/templates/sv/modify-printer.tmpl -#usr/share/cups/templates/sv/option-boolean.tmpl -#usr/share/cups/templates/sv/option-conflict.tmpl -#usr/share/cups/templates/sv/option-header.tmpl -#usr/share/cups/templates/sv/option-pickmany.tmpl -#usr/share/cups/templates/sv/option-pickone.tmpl -#usr/share/cups/templates/sv/option-trailer.tmpl -#usr/share/cups/templates/sv/pager.tmpl -#usr/share/cups/templates/sv/printer-accept.tmpl -#usr/share/cups/templates/sv/printer-added.tmpl -#usr/share/cups/templates/sv/printer-configured.tmpl -#usr/share/cups/templates/sv/printer-confirm.tmpl -#usr/share/cups/templates/sv/printer-default.tmpl -#usr/share/cups/templates/sv/printer-deleted.tmpl -#usr/share/cups/templates/sv/printer-jobs-header.tmpl -#usr/share/cups/templates/sv/printer-modified.tmpl -#usr/share/cups/templates/sv/printer-purge.tmpl -#usr/share/cups/templates/sv/printer-reject.tmpl -#usr/share/cups/templates/sv/printer-start.tmpl -#usr/share/cups/templates/sv/printer-stop.tmpl -#usr/share/cups/templates/sv/printers-header.tmpl -#usr/share/cups/templates/sv/printers.tmpl -#usr/share/cups/templates/sv/restart.tmpl -#usr/share/cups/templates/sv/samba-export.tmpl -#usr/share/cups/templates/sv/samba-exported.tmpl -#usr/share/cups/templates/sv/search.tmpl -#usr/share/cups/templates/sv/set-printer-options-header.tmpl -#usr/share/cups/templates/sv/set-printer-options-trailer.tmpl -#usr/share/cups/templates/sv/test-page.tmpl -#usr/share/cups/templates/sv/trailer.tmpl -#usr/share/cups/templates/sv/users.tmpl -#usr/share/cups/templates/test-page.tmpl -#usr/share/cups/templates/trailer.tmpl -#usr/share/cups/templates/users.tmpl -#usr/share/doc/cups -#usr/share/doc/cups/cups-printable.css -#usr/share/doc/cups/cups.css -#usr/share/doc/cups/de -#usr/share/doc/cups/de/images -#usr/share/doc/cups/de/images/button-accept-jobs.gif -#usr/share/doc/cups/de/images/button-add-class.gif -#usr/share/doc/cups/de/images/button-add-printer.gif -#usr/share/doc/cups/de/images/button-add-this-printer.gif -#usr/share/doc/cups/de/images/button-cancel-all-jobs.gif -#usr/share/doc/cups/de/images/button-cancel-job.gif -#usr/share/doc/cups/de/images/button-change-settings.gif -#usr/share/doc/cups/de/images/button-clean-print-heads.gif -#usr/share/doc/cups/de/images/button-clear.gif -#usr/share/doc/cups/de/images/button-continue.gif -#usr/share/doc/cups/de/images/button-delete-class.gif -#usr/share/doc/cups/de/images/button-delete-printer.gif -#usr/share/doc/cups/de/images/button-edit-configuration-file.gif -#usr/share/doc/cups/de/images/button-export-samba.gif -#usr/share/doc/cups/de/images/button-help.gif -#usr/share/doc/cups/de/images/button-hold-job.gif -#usr/share/doc/cups/de/images/button-manage-classes.gif -#usr/share/doc/cups/de/images/button-manage-jobs.gif -#usr/share/doc/cups/de/images/button-manage-printers.gif -#usr/share/doc/cups/de/images/button-manage-server.gif -#usr/share/doc/cups/de/images/button-modify-class.gif -#usr/share/doc/cups/de/images/button-modify-printer.gif -#usr/share/doc/cups/de/images/button-move-job.gif -#usr/share/doc/cups/de/images/button-move-jobs.gif -#usr/share/doc/cups/de/images/button-print-self-test-page.gif -#usr/share/doc/cups/de/images/button-print-test-page.gif -#usr/share/doc/cups/de/images/button-publish-printer.gif -#usr/share/doc/cups/de/images/button-reject-jobs.gif -#usr/share/doc/cups/de/images/button-release-job.gif -#usr/share/doc/cups/de/images/button-restart-job.gif -#usr/share/doc/cups/de/images/button-save-changes.gif -#usr/share/doc/cups/de/images/button-search.gif -#usr/share/doc/cups/de/images/button-set-allowed-users.gif -#usr/share/doc/cups/de/images/button-set-as-default.gif -#usr/share/doc/cups/de/images/button-set-printer-options.gif -#usr/share/doc/cups/de/images/button-show-active.gif -#usr/share/doc/cups/de/images/button-show-all.gif -#usr/share/doc/cups/de/images/button-show-completed.gif -#usr/share/doc/cups/de/images/button-show-next.gif -#usr/share/doc/cups/de/images/button-show-previous.gif -#usr/share/doc/cups/de/images/button-sort-ascending.gif -#usr/share/doc/cups/de/images/button-sort-descending.gif -#usr/share/doc/cups/de/images/button-start-class.gif -#usr/share/doc/cups/de/images/button-start-printer.gif -#usr/share/doc/cups/de/images/button-stop-class.gif -#usr/share/doc/cups/de/images/button-stop-printer.gif -#usr/share/doc/cups/de/images/button-unpublish-printer.gif -#usr/share/doc/cups/de/images/button-view-access-log.gif -#usr/share/doc/cups/de/images/button-view-error-log.gif -#usr/share/doc/cups/de/images/button-view-page-log.gif -#usr/share/doc/cups/de/images/button-view-printable-version.gif -#usr/share/doc/cups/de/index.html -#usr/share/doc/cups/es -#usr/share/doc/cups/es/images -#usr/share/doc/cups/es/images/button-accept-jobs.gif -#usr/share/doc/cups/es/images/button-add-class.gif -#usr/share/doc/cups/es/images/button-add-printer.gif -#usr/share/doc/cups/es/images/button-add-this-printer.gif -#usr/share/doc/cups/es/images/button-cancel-all-jobs.gif -#usr/share/doc/cups/es/images/button-cancel-job.gif -#usr/share/doc/cups/es/images/button-change-settings.gif -#usr/share/doc/cups/es/images/button-clean-print-heads.gif -#usr/share/doc/cups/es/images/button-clear.gif -#usr/share/doc/cups/es/images/button-continue.gif -#usr/share/doc/cups/es/images/button-delete-class.gif -#usr/share/doc/cups/es/images/button-delete-printer.gif -#usr/share/doc/cups/es/images/button-edit-configuration-file.gif -#usr/share/doc/cups/es/images/button-export-samba.gif -#usr/share/doc/cups/es/images/button-help.gif -#usr/share/doc/cups/es/images/button-hold-job.gif -#usr/share/doc/cups/es/images/button-manage-classes.gif -#usr/share/doc/cups/es/images/button-manage-jobs.gif -#usr/share/doc/cups/es/images/button-manage-printers.gif -#usr/share/doc/cups/es/images/button-manage-server.gif -#usr/share/doc/cups/es/images/button-modify-class.gif -#usr/share/doc/cups/es/images/button-modify-printer.gif -#usr/share/doc/cups/es/images/button-move-job.gif -#usr/share/doc/cups/es/images/button-move-jobs.gif -#usr/share/doc/cups/es/images/button-print-self-test-page.gif -#usr/share/doc/cups/es/images/button-print-test-page.gif -#usr/share/doc/cups/es/images/button-publish-printer.gif -#usr/share/doc/cups/es/images/button-reject-jobs.gif -#usr/share/doc/cups/es/images/button-release-job.gif -#usr/share/doc/cups/es/images/button-restart-job.gif -#usr/share/doc/cups/es/images/button-save-changes.gif -#usr/share/doc/cups/es/images/button-search.gif -#usr/share/doc/cups/es/images/button-set-allowed-users.gif -#usr/share/doc/cups/es/images/button-set-as-default.gif -#usr/share/doc/cups/es/images/button-set-printer-options.gif -#usr/share/doc/cups/es/images/button-show-active.gif -#usr/share/doc/cups/es/images/button-show-all.gif -#usr/share/doc/cups/es/images/button-show-completed.gif -#usr/share/doc/cups/es/images/button-show-next.gif -#usr/share/doc/cups/es/images/button-show-previous.gif -#usr/share/doc/cups/es/images/button-sort-ascending.gif -#usr/share/doc/cups/es/images/button-sort-descending.gif -#usr/share/doc/cups/es/images/button-start-class.gif -#usr/share/doc/cups/es/images/button-start-printer.gif -#usr/share/doc/cups/es/images/button-stop-class.gif -#usr/share/doc/cups/es/images/button-stop-printer.gif -#usr/share/doc/cups/es/images/button-unpublish-printer.gif -#usr/share/doc/cups/es/images/button-use-default-config.gif -#usr/share/doc/cups/es/images/button-view-access-log.gif -#usr/share/doc/cups/es/images/button-view-error-log.gif -#usr/share/doc/cups/es/images/button-view-page-log.gif -#usr/share/doc/cups/es/images/button-view-printable-version.gif -#usr/share/doc/cups/es/index.html -#usr/share/doc/cups/favicon.ico -#usr/share/doc/cups/help -#usr/share/doc/cups/help/api-array.html -#usr/share/doc/cups/help/api-cups.html -#usr/share/doc/cups/help/api-filedir.html -#usr/share/doc/cups/help/api-filter.html -#usr/share/doc/cups/help/api-httpipp.html -#usr/share/doc/cups/help/api-ppd.html -#usr/share/doc/cups/help/api-raster.html -#usr/share/doc/cups/help/cgi.html -#usr/share/doc/cups/help/glossary.html -#usr/share/doc/cups/help/license.html -#usr/share/doc/cups/help/man-accept.html -#usr/share/doc/cups/help/man-backend.html -#usr/share/doc/cups/help/man-cancel.html -#usr/share/doc/cups/help/man-classes.conf.html -#usr/share/doc/cups/help/man-client.conf.html -#usr/share/doc/cups/help/man-cups-config.html -#usr/share/doc/cups/help/man-cups-lpd.html -#usr/share/doc/cups/help/man-cups-polld.html -#usr/share/doc/cups/help/man-cupsaddsmb.html -#usr/share/doc/cups/help/man-cupsd.conf.html -#usr/share/doc/cups/help/man-cupsd.html -#usr/share/doc/cups/help/man-cupsenable.html -#usr/share/doc/cups/help/man-cupstestdsc.html -#usr/share/doc/cups/help/man-cupstestppd.html -#usr/share/doc/cups/help/man-filter.html -#usr/share/doc/cups/help/man-lp.html -#usr/share/doc/cups/help/man-lpadmin.html -#usr/share/doc/cups/help/man-lpc.html -#usr/share/doc/cups/help/man-lpinfo.html -#usr/share/doc/cups/help/man-lpmove.html -#usr/share/doc/cups/help/man-lpoptions.html -#usr/share/doc/cups/help/man-lppasswd.html -#usr/share/doc/cups/help/man-lpq.html -#usr/share/doc/cups/help/man-lpr.html -#usr/share/doc/cups/help/man-lprm.html -#usr/share/doc/cups/help/man-lpstat.html -#usr/share/doc/cups/help/man-mime.convs.html -#usr/share/doc/cups/help/man-mime.types.html -#usr/share/doc/cups/help/man-printers.conf.html -#usr/share/doc/cups/help/network.html -#usr/share/doc/cups/help/options.html -#usr/share/doc/cups/help/overview.html -#usr/share/doc/cups/help/policies.html -#usr/share/doc/cups/help/ref-access_log.html -#usr/share/doc/cups/help/ref-classes-conf.html -#usr/share/doc/cups/help/ref-client-conf.html -#usr/share/doc/cups/help/ref-cupsd-conf.html -#usr/share/doc/cups/help/ref-error_log.html -#usr/share/doc/cups/help/ref-mailto-conf.html -#usr/share/doc/cups/help/ref-page_log.html -#usr/share/doc/cups/help/ref-printers-conf.html -#usr/share/doc/cups/help/ref-snmp-conf.html -#usr/share/doc/cups/help/ref-subscriptions-conf.html -#usr/share/doc/cups/help/security.html -#usr/share/doc/cups/help/spec-cmp.html -#usr/share/doc/cups/help/spec-command.html -#usr/share/doc/cups/help/spec-design.html -#usr/share/doc/cups/help/spec-ipp.html -#usr/share/doc/cups/help/spec-ppd.html -#usr/share/doc/cups/help/spec-raster.html -#usr/share/doc/cups/help/spec-stp.html -#usr/share/doc/cups/help/standard.html -#usr/share/doc/cups/help/translation.html -#usr/share/doc/cups/help/whatsnew.html -#usr/share/doc/cups/images -#usr/share/doc/cups/images/bottom-left.gif -#usr/share/doc/cups/images/bottom-right.gif -#usr/share/doc/cups/images/button-accept-jobs.gif -#usr/share/doc/cups/images/button-add-class.gif -#usr/share/doc/cups/images/button-add-printer.gif -#usr/share/doc/cups/images/button-add-this-printer.gif -#usr/share/doc/cups/images/button-cancel-all-jobs.gif -#usr/share/doc/cups/images/button-cancel-job.gif -#usr/share/doc/cups/images/button-change-settings.gif -#usr/share/doc/cups/images/button-clean-print-heads.gif -#usr/share/doc/cups/images/button-clear.gif -#usr/share/doc/cups/images/button-continue.gif -#usr/share/doc/cups/images/button-delete-class.gif -#usr/share/doc/cups/images/button-delete-printer.gif -#usr/share/doc/cups/images/button-edit-configuration-file.gif -#usr/share/doc/cups/images/button-export-samba.gif -#usr/share/doc/cups/images/button-help.gif -#usr/share/doc/cups/images/button-hold-job.gif -#usr/share/doc/cups/images/button-manage-classes.gif -#usr/share/doc/cups/images/button-manage-jobs.gif -#usr/share/doc/cups/images/button-manage-printers.gif -#usr/share/doc/cups/images/button-manage-server.gif -#usr/share/doc/cups/images/button-modify-class.gif -#usr/share/doc/cups/images/button-modify-printer.gif -#usr/share/doc/cups/images/button-move-job.gif -#usr/share/doc/cups/images/button-move-jobs.gif -#usr/share/doc/cups/images/button-print-self-test-page.gif -#usr/share/doc/cups/images/button-print-test-page.gif -#usr/share/doc/cups/images/button-publish-printer.gif -#usr/share/doc/cups/images/button-reject-jobs.gif -#usr/share/doc/cups/images/button-release-job.gif -#usr/share/doc/cups/images/button-restart-job.gif -#usr/share/doc/cups/images/button-save-changes.gif -#usr/share/doc/cups/images/button-search.gif -#usr/share/doc/cups/images/button-set-allowed-users.gif -#usr/share/doc/cups/images/button-set-as-default.gif -#usr/share/doc/cups/images/button-set-printer-options.gif -#usr/share/doc/cups/images/button-show-active.gif -#usr/share/doc/cups/images/button-show-all.gif -#usr/share/doc/cups/images/button-show-completed.gif -#usr/share/doc/cups/images/button-show-next.gif -#usr/share/doc/cups/images/button-show-previous.gif -#usr/share/doc/cups/images/button-sort-ascending.gif -#usr/share/doc/cups/images/button-sort-descending.gif -#usr/share/doc/cups/images/button-start-class.gif -#usr/share/doc/cups/images/button-start-printer.gif -#usr/share/doc/cups/images/button-stop-class.gif -#usr/share/doc/cups/images/button-stop-printer.gif -#usr/share/doc/cups/images/button-unpublish-printer.gif -#usr/share/doc/cups/images/button-use-default-config.gif -#usr/share/doc/cups/images/button-view-access-log.gif -#usr/share/doc/cups/images/button-view-error-log.gif -#usr/share/doc/cups/images/button-view-page-log.gif -#usr/share/doc/cups/images/button-view-printable-version.gif -#usr/share/doc/cups/images/classes.gif -#usr/share/doc/cups/images/cups-block-diagram.gif -#usr/share/doc/cups/images/esp-logo.gif -#usr/share/doc/cups/images/happy.gif -#usr/share/doc/cups/images/logo.gif -#usr/share/doc/cups/images/printer-idle.gif -#usr/share/doc/cups/images/printer-processing.gif -#usr/share/doc/cups/images/printer-stopped.gif -#usr/share/doc/cups/images/smiley.jpg -#usr/share/doc/cups/images/tab-left.gif -#usr/share/doc/cups/images/tab-right.gif -#usr/share/doc/cups/images/top-left.gif -#usr/share/doc/cups/images/top-middle.gif -#usr/share/doc/cups/images/top-right.gif -#usr/share/doc/cups/images/web-add-this-printer.gif -#usr/share/doc/cups/images/web-password.gif -#usr/share/doc/cups/images/web-printer-driver.gif -#usr/share/doc/cups/images/web-printer-status.gif -#usr/share/doc/cups/images/web-set-printer-options.gif -#usr/share/doc/cups/images/web-test-page.gif -#usr/share/doc/cups/index.html -#usr/share/doc/cups/ja -#usr/share/doc/cups/ja/images -#usr/share/doc/cups/ja/images/button-accept-jobs.gif -#usr/share/doc/cups/ja/images/button-add-class.gif -#usr/share/doc/cups/ja/images/button-add-printer.gif -#usr/share/doc/cups/ja/images/button-add-this-printer.gif -#usr/share/doc/cups/ja/images/button-cancel-all-jobs.gif -#usr/share/doc/cups/ja/images/button-cancel-job.gif -#usr/share/doc/cups/ja/images/button-change-settings.gif -#usr/share/doc/cups/ja/images/button-continue.gif -#usr/share/doc/cups/ja/images/button-delete-class.gif -#usr/share/doc/cups/ja/images/button-delete-printer.gif -#usr/share/doc/cups/ja/images/button-edit-configuration-file.gif -#usr/share/doc/cups/ja/images/button-export-samba.gif -#usr/share/doc/cups/ja/images/button-help.gif -#usr/share/doc/cups/ja/images/button-hold-job.gif -#usr/share/doc/cups/ja/images/button-manage-classes.gif -#usr/share/doc/cups/ja/images/button-manage-jobs.gif -#usr/share/doc/cups/ja/images/button-manage-printers.gif -#usr/share/doc/cups/ja/images/button-manage-server.gif -#usr/share/doc/cups/ja/images/button-modify-class.gif -#usr/share/doc/cups/ja/images/button-modify-printer.gif -#usr/share/doc/cups/ja/images/button-move-job.gif -#usr/share/doc/cups/ja/images/button-move-jobs.gif -#usr/share/doc/cups/ja/images/button-print-test-page.gif -#usr/share/doc/cups/ja/images/button-publish-printer.gif -#usr/share/doc/cups/ja/images/button-reject-jobs.gif -#usr/share/doc/cups/ja/images/button-release-job.gif -#usr/share/doc/cups/ja/images/button-restart-job.gif -#usr/share/doc/cups/ja/images/button-save-changes.gif -#usr/share/doc/cups/ja/images/button-search.gif -#usr/share/doc/cups/ja/images/button-set-allowed-users.gif -#usr/share/doc/cups/ja/images/button-set-as-default.gif -#usr/share/doc/cups/ja/images/button-set-printer-options.gif -#usr/share/doc/cups/ja/images/button-show-active.gif -#usr/share/doc/cups/ja/images/button-show-all.gif -#usr/share/doc/cups/ja/images/button-show-completed.gif -#usr/share/doc/cups/ja/images/button-show-next.gif -#usr/share/doc/cups/ja/images/button-show-previous.gif -#usr/share/doc/cups/ja/images/button-sort-ascending.gif -#usr/share/doc/cups/ja/images/button-sort-descending.gif -#usr/share/doc/cups/ja/images/button-start-class.gif -#usr/share/doc/cups/ja/images/button-start-printer.gif -#usr/share/doc/cups/ja/images/button-stop-class.gif -#usr/share/doc/cups/ja/images/button-stop-printer.gif -#usr/share/doc/cups/ja/images/button-unpublish-printer.gif -#usr/share/doc/cups/ja/images/button-use-default-config.gif -#usr/share/doc/cups/ja/images/button-view-access-log.gif -#usr/share/doc/cups/ja/images/button-view-error-log.gif -#usr/share/doc/cups/ja/images/button-view-page-log.gif -#usr/share/doc/cups/ja/index.html -#usr/share/doc/cups/pl -#usr/share/doc/cups/pl/images -#usr/share/doc/cups/pl/images/button-accept-jobs.gif -#usr/share/doc/cups/pl/images/button-add-class.gif -#usr/share/doc/cups/pl/images/button-add-printer.gif -#usr/share/doc/cups/pl/images/button-add-this-printer.gif -#usr/share/doc/cups/pl/images/button-cancel-all-jobs.gif -#usr/share/doc/cups/pl/images/button-cancel-job.gif -#usr/share/doc/cups/pl/images/button-change-settings.gif -#usr/share/doc/cups/pl/images/button-clean-print-heads.gif -#usr/share/doc/cups/pl/images/button-clear.gif -#usr/share/doc/cups/pl/images/button-continue.gif -#usr/share/doc/cups/pl/images/button-delete-class.gif -#usr/share/doc/cups/pl/images/button-delete-printer.gif -#usr/share/doc/cups/pl/images/button-edit-configuration-file.gif -#usr/share/doc/cups/pl/images/button-export-samba.gif -#usr/share/doc/cups/pl/images/button-help.gif -#usr/share/doc/cups/pl/images/button-hold-job.gif -#usr/share/doc/cups/pl/images/button-manage-classes.gif -#usr/share/doc/cups/pl/images/button-manage-jobs.gif -#usr/share/doc/cups/pl/images/button-manage-printers.gif -#usr/share/doc/cups/pl/images/button-manage-server.gif -#usr/share/doc/cups/pl/images/button-modify-class.gif -#usr/share/doc/cups/pl/images/button-modify-printer.gif -#usr/share/doc/cups/pl/images/button-move-job.gif -#usr/share/doc/cups/pl/images/button-move-jobs.gif -#usr/share/doc/cups/pl/images/button-print-self-test-page.gif -#usr/share/doc/cups/pl/images/button-print-test-page.gif -#usr/share/doc/cups/pl/images/button-publish-printer.gif -#usr/share/doc/cups/pl/images/button-reject-jobs.gif -#usr/share/doc/cups/pl/images/button-release-job.gif -#usr/share/doc/cups/pl/images/button-restart-job.gif -#usr/share/doc/cups/pl/images/button-save-changes.gif -#usr/share/doc/cups/pl/images/button-search.gif -#usr/share/doc/cups/pl/images/button-set-allowed-users.gif -#usr/share/doc/cups/pl/images/button-set-as-default.gif -#usr/share/doc/cups/pl/images/button-set-printer-options.gif -#usr/share/doc/cups/pl/images/button-show-active.gif -#usr/share/doc/cups/pl/images/button-show-all.gif -#usr/share/doc/cups/pl/images/button-show-completed.gif -#usr/share/doc/cups/pl/images/button-show-next.gif -#usr/share/doc/cups/pl/images/button-show-previous.gif -#usr/share/doc/cups/pl/images/button-sort-ascending.gif -#usr/share/doc/cups/pl/images/button-sort-descending.gif -#usr/share/doc/cups/pl/images/button-start-class.gif -#usr/share/doc/cups/pl/images/button-start-printer.gif -#usr/share/doc/cups/pl/images/button-stop-class.gif -#usr/share/doc/cups/pl/images/button-stop-printer.gif -#usr/share/doc/cups/pl/images/button-unpublish-printer.gif -#usr/share/doc/cups/pl/images/button-use-default-config.gif -#usr/share/doc/cups/pl/images/button-view-access-log.gif -#usr/share/doc/cups/pl/images/button-view-error-log.gif -#usr/share/doc/cups/pl/images/button-view-page-log.gif -#usr/share/doc/cups/pl/images/button-view-printable-version.gif -#usr/share/doc/cups/pl/index.html -#usr/share/doc/cups/robots.txt -#usr/share/doc/cups/sv -#usr/share/doc/cups/sv/images -#usr/share/doc/cups/sv/images/button-accept-jobs.gif -#usr/share/doc/cups/sv/images/button-add-class.gif -#usr/share/doc/cups/sv/images/button-add-printer.gif -#usr/share/doc/cups/sv/images/button-add-this-printer.gif -#usr/share/doc/cups/sv/images/button-cancel-all-jobs.gif -#usr/share/doc/cups/sv/images/button-cancel-job.gif -#usr/share/doc/cups/sv/images/button-change-settings.gif -#usr/share/doc/cups/sv/images/button-clean-print-heads.gif -#usr/share/doc/cups/sv/images/button-clear.gif -#usr/share/doc/cups/sv/images/button-continue.gif -#usr/share/doc/cups/sv/images/button-delete-class.gif -#usr/share/doc/cups/sv/images/button-delete-printer.gif -#usr/share/doc/cups/sv/images/button-edit-configuration-file.gif -#usr/share/doc/cups/sv/images/button-export-samba.gif -#usr/share/doc/cups/sv/images/button-help.gif -#usr/share/doc/cups/sv/images/button-hold-job.gif -#usr/share/doc/cups/sv/images/button-manage-classes.gif -#usr/share/doc/cups/sv/images/button-manage-jobs.gif -#usr/share/doc/cups/sv/images/button-manage-printers.gif -#usr/share/doc/cups/sv/images/button-manage-server.gif -#usr/share/doc/cups/sv/images/button-modify-class.gif -#usr/share/doc/cups/sv/images/button-modify-printer.gif -#usr/share/doc/cups/sv/images/button-move-job.gif -#usr/share/doc/cups/sv/images/button-move-jobs.gif -#usr/share/doc/cups/sv/images/button-print-self-test-page.gif -#usr/share/doc/cups/sv/images/button-print-test-page.gif -#usr/share/doc/cups/sv/images/button-publish-printer.gif -#usr/share/doc/cups/sv/images/button-reject-jobs.gif -#usr/share/doc/cups/sv/images/button-release-job.gif -#usr/share/doc/cups/sv/images/button-restart-job.gif -#usr/share/doc/cups/sv/images/button-save-changes.gif -#usr/share/doc/cups/sv/images/button-search.gif -#usr/share/doc/cups/sv/images/button-set-allowed-users.gif -#usr/share/doc/cups/sv/images/button-set-as-default.gif -#usr/share/doc/cups/sv/images/button-set-printer-options.gif -#usr/share/doc/cups/sv/images/button-show-active.gif -#usr/share/doc/cups/sv/images/button-show-all.gif -#usr/share/doc/cups/sv/images/button-show-completed.gif -#usr/share/doc/cups/sv/images/button-show-next.gif -#usr/share/doc/cups/sv/images/button-show-previous.gif -#usr/share/doc/cups/sv/images/button-sort-ascending.gif -#usr/share/doc/cups/sv/images/button-sort-descending.gif -#usr/share/doc/cups/sv/images/button-start-class.gif -#usr/share/doc/cups/sv/images/button-start-printer.gif -#usr/share/doc/cups/sv/images/button-stop-class.gif -#usr/share/doc/cups/sv/images/button-stop-printer.gif -#usr/share/doc/cups/sv/images/button-unpublish-printer.gif -#usr/share/doc/cups/sv/images/button-use-default-config.gif -#usr/share/doc/cups/sv/images/button-view-access-log.gif -#usr/share/doc/cups/sv/images/button-view-error-log.gif -#usr/share/doc/cups/sv/images/button-view-page-log.gif -#usr/share/doc/cups/sv/images/button-view-printable-version.gif -#usr/share/doc/cups/sv/index.html -#usr/share/locale/de/cups_de.po -#usr/share/locale/es/cups_es.po -#usr/share/locale/ja/cups_ja.po -#usr/share/locale/pl/cups_pl.po -#usr/share/locale/sv/cups_sv.po -#usr/share/man/man1/cancel.1.gz -#usr/share/man/man1/cups-config.1.gz -#usr/share/man/man1/cupstestdsc.1.gz -#usr/share/man/man1/cupstestppd.1.gz -#usr/share/man/man1/lp.1.gz -#usr/share/man/man1/lpoptions.1.gz -#usr/share/man/man1/lppasswd.1.gz -#usr/share/man/man1/lpq.1.gz -#usr/share/man/man1/lpr.1.gz -#usr/share/man/man1/lprm.1.gz -#usr/share/man/man1/lpstat.1.gz -#usr/share/man/man5/classes.conf.5.gz -#usr/share/man/man5/client.conf.5.gz -#usr/share/man/man5/cups-snmp.conf.5.gz -#usr/share/man/man5/cupsd.conf.5.gz -#usr/share/man/man5/mailto.conf.5.gz -#usr/share/man/man5/mime.convs.5.gz -#usr/share/man/man5/mime.types.5.gz -#usr/share/man/man5/printers.conf.5.gz -#usr/share/man/man5/subscriptions.conf.5.gz -#usr/share/man/man7/backend.7.gz -#usr/share/man/man7/filter.7.gz -#usr/share/man/man8/accept.8.gz -#usr/share/man/man8/cups-deviced.8.gz -#usr/share/man/man8/cups-driverd.8.gz -#usr/share/man/man8/cups-lpd.8.gz -#usr/share/man/man8/cups-polld.8.gz -#usr/share/man/man8/cupsaddsmb.8.gz -#usr/share/man/man8/cupsd.8.gz -#usr/share/man/man8/cupsdisable.8.gz -#usr/share/man/man8/cupsenable.8.gz -#usr/share/man/man8/lpadmin.8.gz -#usr/share/man/man8/lpc.8.gz -#usr/share/man/man8/lpinfo.8.gz -#usr/share/man/man8/lpmove.8.gz -#usr/share/man/man8/reject.8.gz -var/cache/cups -var/ipfire/cups -#var/ipfire/cups/cupsd.conf -#var/ipfire/cups/cupsd.conf.default -#var/ipfire/cups/interfaces -#var/ipfire/cups/mime.convs -#var/ipfire/cups/mime.types -#var/ipfire/cups/ppd -#var/ipfire/cups/ssl -var/log/cups -var/run/cups -var/run/cups/certs -var/spool/cups -var/spool/cups/tmp diff --git a/src/paks/cups/depends.txt b/src/paks/cups/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/cups/install.sh b/src/paks/cups/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/cups/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/cups/uninstall.sh b/src/paks/cups/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/cups/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/cyrusimap/ROOTFILES b/src/paks/cyrusimap/ROOTFILES deleted file mode 100644 index 3f97feb2ab..0000000000 --- a/src/paks/cyrusimap/ROOTFILES +++ /dev/null @@ -1,145 +0,0 @@ -usr/bin/cyradm -usr/bin/imtest -usr/bin/installsieve -usr/bin/lmtptest -usr/bin/mupdatetest -usr/bin/nntptest -usr/bin/pop3test -usr/bin/sieveshell -usr/bin/sivtest -usr/bin/smtptest -#usr/lib/cyrus -usr/lib/cyrus/arbitron -usr/lib/cyrus/chk_cyrus -usr/lib/cyrus/compile_sieve -usr/lib/cyrus/ctl_cyrusdb -usr/lib/cyrus/ctl_deliver -usr/lib/cyrus/ctl_mboxlist -usr/lib/cyrus/cvt_cyrusdb -usr/lib/cyrus/cyr_expire -usr/lib/cyrus/cyrdump -usr/lib/cyrus/deliver -usr/lib/cyrus/fud -usr/lib/cyrus/idled -usr/lib/cyrus/imapd -usr/lib/cyrus/ipurge -usr/lib/cyrus/lmtpd -usr/lib/cyrus/master -usr/lib/cyrus/mbexamine -usr/lib/cyrus/mbpath -usr/lib/cyrus/notifyd -usr/lib/cyrus/pop3d -usr/lib/cyrus/pop3proxyd -usr/lib/cyrus/quota -usr/lib/cyrus/reconstruct -usr/lib/cyrus/sievec -usr/lib/cyrus/smmapd -usr/lib/cyrus/squatter -usr/lib/cyrus/timsieved -usr/lib/cyrus/tls_prune -#usr/include/cyrus/byteorder64.h -#usr/include/cyrus -#usr/include/cyrus/acl.h -#usr/include/cyrus/assert.h -#usr/include/cyrus/auth.h -#usr/include/cyrus/bsearch.h -#usr/include/cyrus/charset.h -#usr/include/cyrus/cyrusdb.h -#usr/include/cyrus/glob.h -#usr/include/cyrus/gmtoff.h -#usr/include/cyrus/hash.h -#usr/include/cyrus/imapopts.h -#usr/include/cyrus/imapurl.h -#usr/include/cyrus/imclient.h -#usr/include/cyrus/imparse.h -#usr/include/cyrus/iptostring.h -#usr/include/cyrus/libconfig.h -#usr/include/cyrus/libcyr_cfg.h -#usr/include/cyrus/lock.h -#usr/include/cyrus/lsort.h -#usr/include/cyrus/map.h -#usr/include/cyrus/mkgmtime.h -#usr/include/cyrus/mpool.h -#usr/include/cyrus/nonblock.h -#usr/include/cyrus/parseaddr.h -#usr/include/cyrus/prot.h -#usr/include/cyrus/retry.h -#usr/include/cyrus/rfc822date.h -#usr/include/cyrus/strhash.h -#usr/include/cyrus/strhash.o -#usr/include/cyrus/stristr.h -#usr/include/cyrus/sysexits.h -#usr/include/cyrus/util.h -#usr/include/cyrus/xmalloc.h -#usr/include/cyrus/xstrlcat.h -#usr/include/cyrus/xstrlcpy.h -usr/lib/libcyrus.a -usr/lib/libcyrus_min.a -#usr/lib/perl5/site_perl/5.8.5/i386-linux/Cyrus -#usr/lib/perl5/site_perl/5.8.5/i386-linux/Cyrus/IMAP -usr/lib/perl5/site_perl/5.8.5/i386-linux/Cyrus/IMAP.pm -usr/lib/perl5/site_perl/5.8.5/i386-linux/Cyrus/IMAP/Admin.pm -usr/lib/perl5/site_perl/5.8.5/i386-linux/Cyrus/IMAP/IMSP.pm -usr/lib/perl5/site_perl/5.8.5/i386-linux/Cyrus/IMAP/Shell.pm -#usr/lib/perl5/site_perl/5.8.5/i386-linux/Cyrus/SIEVE -usr/lib/perl5/site_perl/5.8.5/i386-linux/Cyrus/SIEVE/managesieve.pm -#usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Cyrus -#usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Cyrus/IMAP -#usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Cyrus/IMAP/.packlist -usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Cyrus/IMAP/IMAP.bs -usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Cyrus/IMAP/IMAP.so -#usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Cyrus/SIEVE -#usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Cyrus/SIEVE/managesieve -#usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Cyrus/SIEVE/managesieve/.packlist -usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Cyrus/SIEVE/managesieve/managesieve.bs -usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Cyrus/SIEVE/managesieve/managesieve.so -#usr/share/man/man1/cyradm.1 -#usr/share/man/man1/imtest.1 -#usr/share/man/man1/installsieve.1 -#usr/share/man/man1/lmtptest.1 -#usr/share/man/man1/mupdatetest.1 -#usr/share/man/man1/nntptest.1 -#usr/share/man/man1/pop3test.1 -#usr/share/man/man1/sieveshell.1 -#usr/share/man/man1/sivtest.1 -#usr/share/man/man1/smtptest.1 -#usr/share/man/man3/Cyrus::IMAP.3 -#usr/share/man/man3/Cyrus::IMAP::Admin.3 -#usr/share/man/man3/Cyrus::IMAP::IMSP.3 -#usr/share/man/man3/Cyrus::IMAP::Shell.3 -#usr/share/man/man3/Cyrus::SIEVE::managesieve.3 -#usr/share/man/man3/imclient.3 -#usr/share/man/man5/cyrus.conf.5 -#usr/share/man/man5/imapd.conf.5 -#usr/share/man/man5/krb.equiv.5 -#usr/share/man/man8/arbitron.8 -#usr/share/man/man8/chk_cyrus.8 -#usr/share/man/man8/ctl_cyrusdb.8 -#usr/share/man/man8/ctl_deliver.8 -#usr/share/man/man8/ctl_mboxlist.8 -#usr/share/man/man8/cvt_cyrusdb.8 -#usr/share/man/man8/cyr_expire.8 -#usr/share/man/man8/deliver.8 -#usr/share/man/man8/fetchnews.8 -#usr/share/man/man8/fud.8 -#usr/share/man/man8/idled.8 -#usr/share/man/man8/imapd.8 -#usr/share/man/man8/ipurge.8 -#usr/share/man/man8/lmtpd.8 -#usr/share/man/man8/mbexamine.8 -#usr/share/man/man8/mbpath.8 -#usr/share/man/man8/nntpd.8 -#usr/share/man/man8/notifyd.8 -#usr/share/man/man8/pop3d.8 -#usr/share/man/man8/quota.8 -#usr/share/man/man8/reconstruct.8 -#usr/share/man/man8/rmnews.8 -#usr/share/man/man8/smmapd.8 -#usr/share/man/man8/squatter.8 -#usr/share/man/man8/syncnews.8 -#usr/share/man/man8/timsieved.8 -#usr/share/man/man8/tls_prune.8 -var/imap -var/log/imap -usr/sieve -var/ipfire/cyrusimap diff --git a/src/paks/cyrusimap/depends.txt b/src/paks/cyrusimap/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/cyrusimap/install.sh b/src/paks/cyrusimap/install.sh deleted file mode 100644 index 11b2c421a8..0000000000 --- a/src/paks/cyrusimap/install.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -CONFIGDIR=/var/ipfire/cyrusimap -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 - - - -if [ ! -f $CONFIGDIR/server.pm ]; then - cd /tmp && openssl req -new -nodes -out req.pem -keyout key.pem - cd /tmp && openssl rsa -in key.pem -out new.key.pem - cd /tmp && openssl x509 -in req.pem -out ca-cert -req -signkey new.key.pem -days 999 - - cd /tmp && cp new.key.pem $CONFIGDIR/server.pem - cd /tmp && rm new.key.pem - cd /tmp && cat ca-cert >> $CONFIGDIR/server.pem - chown cyrus:mail $CONFIGDIR/server.pem - chmod 600 $CONFIGDIR/server.pem # Your key should be protected -fi diff --git a/src/paks/cyrusimap/uninstall.sh b/src/paks/cyrusimap/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/cyrusimap/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/ethereal/ROOTFILES b/src/paks/ethereal/ROOTFILES deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/ethereal/depends.txt b/src/paks/ethereal/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/ethereal/install.sh b/src/paks/ethereal/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/ethereal/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/ethereal/uninstall.sh b/src/paks/ethereal/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/ethereal/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/fetchmail/ROOTFILES b/src/paks/fetchmail/ROOTFILES deleted file mode 100644 index 00338a0f71..0000000000 --- a/src/paks/fetchmail/ROOTFILES +++ /dev/null @@ -1,6 +0,0 @@ -usr/bin/fetchmail -usr/bin/fetchmailconf -#usr/lib/python2.3/site-packages/fetchmailconf.py -#usr/lib/python2.3/site-packages/fetchmailconf.pyc -#usr/lib/python2.3/site-packages/fetchmailconf.pyo -root/.fetchmailrc \ No newline at end of file diff --git a/src/paks/fetchmail/depends.txt b/src/paks/fetchmail/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/fetchmail/install.sh b/src/paks/fetchmail/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/fetchmail/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/fetchmail/uninstall.sh b/src/paks/fetchmail/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/fetchmail/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/ffmpeg/ROOTFILES b/src/paks/ffmpeg/ROOTFILES deleted file mode 100644 index f30cfaf0cf..0000000000 --- a/src/paks/ffmpeg/ROOTFILES +++ /dev/null @@ -1,34 +0,0 @@ -usr/bin/ffmpeg -usr/bin/ffserver -#usr/include/ffmpeg -#usr/include/ffmpeg/avcodec.h -#usr/include/ffmpeg/avformat.h -#usr/include/ffmpeg/avio.h -#usr/include/ffmpeg/avutil.h -#usr/include/ffmpeg/common.h -#usr/include/ffmpeg/integer.h -#usr/include/ffmpeg/intfloat_readwrite.h -#usr/include/ffmpeg/mathematics.h -#usr/include/ffmpeg/rational.h -#usr/include/ffmpeg/rtp.h -#usr/include/ffmpeg/rtsp.h -#usr/include/ffmpeg/rtspcodes.h -#usr/include/postproc -#usr/include/postproc/postprocess.h -#usr/lib/libavcodec-CVS.so -usr/lib/libavcodec.so -#usr/lib/libavformat-CVS.so -usr/lib/libavformat.so -#usr/lib/libavutil-CVS.so -usr/lib/libavutil.so -#usr/lib/pkgconfig/libavcodec.pc -#usr/lib/pkgconfig/libavformat.pc -#usr/lib/pkgconfig/libavutil.pc -#usr/lib/vhook -#usr/lib/vhook/drawtext.so -#usr/lib/vhook/fish.so -#usr/lib/vhook/null.so -#usr/lib/vhook/ppm.so -#usr/lib/vhook/watermark.so -#usr/share/man/man1/ffmpeg.1 -#usr/share/man/man1/ffserver.1 diff --git a/src/paks/ffmpeg/depends.txt b/src/paks/ffmpeg/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/ffmpeg/install.sh b/src/paks/ffmpeg/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/ffmpeg/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/ffmpeg/uninstall.sh b/src/paks/ffmpeg/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/ffmpeg/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/ghostscript/ROOTFILES b/src/paks/ghostscript/ROOTFILES deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/ghostscript/depends.txt b/src/paks/ghostscript/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/ghostscript/install.sh b/src/paks/ghostscript/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/ghostscript/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/ghostscript/uninstall.sh b/src/paks/ghostscript/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/ghostscript/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/gnump3d/ROOTFILES b/src/paks/gnump3d/ROOTFILES deleted file mode 100644 index 2ada546576..0000000000 --- a/src/paks/gnump3d/ROOTFILES +++ /dev/null @@ -1,411 +0,0 @@ -etc/gnump3d -etc/gnump3d/gnump3d.conf -etc/gnump3d/mime.types -usr/bin/gnump3d -usr/bin/gnump3d-index -usr/bin/gnump3d-top -usr/bin/gnump3d2 -usr/lib/perl5/5.8.5/gnump3d -usr/lib/perl5/5.8.5/gnump3d/IP.pm -usr/lib/perl5/5.8.5/gnump3d/MD5.pm -usr/lib/perl5/5.8.5/gnump3d/WMA.pm -usr/lib/perl5/5.8.5/gnump3d/base64.pm -usr/lib/perl5/5.8.5/gnump3d/config.pm -usr/lib/perl5/5.8.5/gnump3d/files.pm -usr/lib/perl5/5.8.5/gnump3d/lang -usr/lib/perl5/5.8.5/gnump3d/lang/de.pm -usr/lib/perl5/5.8.5/gnump3d/lang/en.pm -usr/lib/perl5/5.8.5/gnump3d/lang/es.pm -usr/lib/perl5/5.8.5/gnump3d/lang/fr.pm -usr/lib/perl5/5.8.5/gnump3d/lang/lookup.pm -usr/lib/perl5/5.8.5/gnump3d/mp3info.pm -usr/lib/perl5/5.8.5/gnump3d/mp4info.pm -usr/lib/perl5/5.8.5/gnump3d/ogginfo.pm -usr/lib/perl5/5.8.5/gnump3d/oggtagreader.pm -usr/lib/perl5/5.8.5/gnump3d/plugins -usr/lib/perl5/5.8.5/gnump3d/plugins/bug.pm -usr/lib/perl5/5.8.5/gnump3d/plugins/copying.pm -usr/lib/perl5/5.8.5/gnump3d/plugins/info.pm -usr/lib/perl5/5.8.5/gnump3d/plugins/now.pm -usr/lib/perl5/5.8.5/gnump3d/plugins/playlist.pm -usr/lib/perl5/5.8.5/gnump3d/plugins/prefs.pm -usr/lib/perl5/5.8.5/gnump3d/plugins/random.pm -usr/lib/perl5/5.8.5/gnump3d/plugins/recent.pm -usr/lib/perl5/5.8.5/gnump3d/plugins/search.pm -usr/lib/perl5/5.8.5/gnump3d/plugins/size.pm -usr/lib/perl5/5.8.5/gnump3d/plugins/stats.pm -usr/lib/perl5/5.8.5/gnump3d/plugins/tagbrowse.pm -usr/lib/perl5/5.8.5/gnump3d/readtags.pm -usr/lib/perl5/5.8.5/gnump3d/sorting.pm -usr/lib/perl5/5.8.5/gnump3d/tagcache.pm -usr/lib/perl5/5.8.5/gnump3d/url.pm -usr/share/gnump3d -usr/share/gnump3d/Avalon -usr/share/gnump3d/Avalon/AUTHOR -usr/share/gnump3d/Avalon/COPYING.html -usr/share/gnump3d/Avalon/base.css -usr/share/gnump3d/Avalon/bug.html -usr/share/gnump3d/Avalon/config.ini -usr/share/gnump3d/Avalon/error.html -usr/share/gnump3d/Avalon/gnump3d-logo.jpg -usr/share/gnump3d/Avalon/html_footer.tmpl -usr/share/gnump3d/Avalon/html_header.tmpl -usr/share/gnump3d/Avalon/index.html -usr/share/gnump3d/Avalon/info.html -usr/share/gnump3d/Avalon/now.html -usr/share/gnump3d/Avalon/page_footer.tmpl -usr/share/gnump3d/Avalon/page_header.tmpl -usr/share/gnump3d/Avalon/playlist.html -usr/share/gnump3d/Avalon/prefs.html -usr/share/gnump3d/Avalon/random.html -usr/share/gnump3d/Avalon/readme.txt -usr/share/gnump3d/Avalon/recent.html -usr/share/gnump3d/Avalon/results.html -usr/share/gnump3d/Avalon/search.html -usr/share/gnump3d/Avalon/size.html -usr/share/gnump3d/Avalon/stats.html -usr/share/gnump3d/Avalon/tagbrowse.html -usr/share/gnump3d/BlueBox -usr/share/gnump3d/BlueBox/AUTHOR -usr/share/gnump3d/BlueBox/BlueBox.css -usr/share/gnump3d/BlueBox/COPYING.html -usr/share/gnump3d/BlueBox/bug.html -usr/share/gnump3d/BlueBox/config.ini -usr/share/gnump3d/BlueBox/error.html -usr/share/gnump3d/BlueBox/extras.html -usr/share/gnump3d/BlueBox/footer.tmpl -usr/share/gnump3d/BlueBox/header.tmpl -usr/share/gnump3d/BlueBox/index.html -usr/share/gnump3d/BlueBox/info.html -usr/share/gnump3d/BlueBox/now.html -usr/share/gnump3d/BlueBox/playlist.html -usr/share/gnump3d/BlueBox/prefs.html -usr/share/gnump3d/BlueBox/random.html -usr/share/gnump3d/BlueBox/recent.html -usr/share/gnump3d/BlueBox/results.html -usr/share/gnump3d/BlueBox/search.html -usr/share/gnump3d/BlueBox/size.html -usr/share/gnump3d/BlueBox/statistics.html -usr/share/gnump3d/BlueBox/stats.html -usr/share/gnump3d/BlueBox/tagbrowse.html -usr/share/gnump3d/BlueBox/template.ini -usr/share/gnump3d/Clean -usr/share/gnump3d/Clean/AUTHOR -usr/share/gnump3d/Clean/COPYING.html -usr/share/gnump3d/Clean/bug.html -usr/share/gnump3d/Clean/config.ini -usr/share/gnump3d/Clean/error.html -usr/share/gnump3d/Clean/index.html -usr/share/gnump3d/Clean/info.html -usr/share/gnump3d/Clean/layout.css -usr/share/gnump3d/Clean/menu.tmpl -usr/share/gnump3d/Clean/now.html -usr/share/gnump3d/Clean/playlist.html -usr/share/gnump3d/Clean/prefs.html -usr/share/gnump3d/Clean/random.html -usr/share/gnump3d/Clean/recent.html -usr/share/gnump3d/Clean/results.html -usr/share/gnump3d/Clean/search.html -usr/share/gnump3d/Clean/size.html -usr/share/gnump3d/Clean/stats.html -usr/share/gnump3d/Clean/tagbrowse.html -usr/share/gnump3d/LaFrere -usr/share/gnump3d/LaFrere/AUTHOR -usr/share/gnump3d/LaFrere/COPYING.html -usr/share/gnump3d/LaFrere/bug.html -usr/share/gnump3d/LaFrere/config.ini -usr/share/gnump3d/LaFrere/error.html -usr/share/gnump3d/LaFrere/index.html -usr/share/gnump3d/LaFrere/info.html -usr/share/gnump3d/LaFrere/logo.png -usr/share/gnump3d/LaFrere/now.html -usr/share/gnump3d/LaFrere/playlist.html -usr/share/gnump3d/LaFrere/prefs.html -usr/share/gnump3d/LaFrere/random.html -usr/share/gnump3d/LaFrere/recent.html -usr/share/gnump3d/LaFrere/results.html -usr/share/gnump3d/LaFrere/search.html -usr/share/gnump3d/LaFrere/size.html -usr/share/gnump3d/LaFrere/stats.html -usr/share/gnump3d/LaFrere/tagbrowse.html -usr/share/gnump3d/Liquid -usr/share/gnump3d/Liquid/AUTHOR -usr/share/gnump3d/Liquid/COPYING.html -usr/share/gnump3d/Liquid/bck.gif -usr/share/gnump3d/Liquid/bug.html -usr/share/gnump3d/Liquid/cel-bar-anthrazite-act.gif -usr/share/gnump3d/Liquid/cel-bar-anthrazite.gif -usr/share/gnump3d/Liquid/cel-bar-aqua-act.gif -usr/share/gnump3d/Liquid/cel-bar-aqua.gif -usr/share/gnump3d/Liquid/cel-bar-lime-act.gif -usr/share/gnump3d/Liquid/cel-bar-lime.gif -usr/share/gnump3d/Liquid/cel-bar-purple-act.gif -usr/share/gnump3d/Liquid/cel-bar-purple.gif -usr/share/gnump3d/Liquid/cel-bar-ruby-act.gif -usr/share/gnump3d/Liquid/cel-bar-ruby.gif -usr/share/gnump3d/Liquid/cel-bar-tangerine-act.gif -usr/share/gnump3d/Liquid/cel-bar-tangerine.gif -usr/share/gnump3d/Liquid/cel-bar-turqois-act.gif -usr/share/gnump3d/Liquid/cel-bar-turqois.gif -usr/share/gnump3d/Liquid/cel-bar-yellow-act.gif -usr/share/gnump3d/Liquid/cel-bar-yellow.gif -usr/share/gnump3d/Liquid/config.ini -usr/share/gnump3d/Liquid/error.html -usr/share/gnump3d/Liquid/footer.tmpl -usr/share/gnump3d/Liquid/gnump3dskin.webprj -usr/share/gnump3d/Liquid/header.tmpl -usr/share/gnump3d/Liquid/index.html -usr/share/gnump3d/Liquid/info.html -usr/share/gnump3d/Liquid/now.html -usr/share/gnump3d/Liquid/playlist.html -usr/share/gnump3d/Liquid/prefs.html -usr/share/gnump3d/Liquid/random.html -usr/share/gnump3d/Liquid/recent.html -usr/share/gnump3d/Liquid/results.html -usr/share/gnump3d/Liquid/search.html -usr/share/gnump3d/Liquid/size.html -usr/share/gnump3d/Liquid/stats.html -usr/share/gnump3d/Liquid/style.css -usr/share/gnump3d/Liquid/tab-aqua-act.gif -usr/share/gnump3d/Liquid/tab-athrazite-act.gif -usr/share/gnump3d/Liquid/tab-lime-act.gif -usr/share/gnump3d/Liquid/tab-purple-act.gif -usr/share/gnump3d/Liquid/tab-ruby-act.gif -usr/share/gnump3d/Liquid/tab-tangerine-act.gif -usr/share/gnump3d/Liquid/tab-turqois-act.gif -usr/share/gnump3d/Liquid/tab-white-act.gif -usr/share/gnump3d/Liquid/tab-white-mo.gif -usr/share/gnump3d/Liquid/tab-yellow-act.gif -usr/share/gnump3d/Liquid/tabel-header-left-ruby.gif -usr/share/gnump3d/Liquid/tabel-header-middle-ruby.gif -usr/share/gnump3d/Liquid/tabel-header-middle-white.gif -usr/share/gnump3d/Liquid/tabel-header-right-ruby.gif -usr/share/gnump3d/Liquid/tagbrowse.html -usr/share/gnump3d/Musicus -usr/share/gnump3d/Musicus/AUTHOR -usr/share/gnump3d/Musicus/COPYING.html -usr/share/gnump3d/Musicus/bug.html -usr/share/gnump3d/Musicus/config.ini -usr/share/gnump3d/Musicus/error.html -usr/share/gnump3d/Musicus/extras.html -usr/share/gnump3d/Musicus/footer.tmpl -usr/share/gnump3d/Musicus/index.html -usr/share/gnump3d/Musicus/info.html -usr/share/gnump3d/Musicus/now.html -usr/share/gnump3d/Musicus/playlist.html -usr/share/gnump3d/Musicus/prefs.html -usr/share/gnump3d/Musicus/random.html -usr/share/gnump3d/Musicus/recent.html -usr/share/gnump3d/Musicus/results.html -usr/share/gnump3d/Musicus/search.html -usr/share/gnump3d/Musicus/size.html -usr/share/gnump3d/Musicus/statistics.html -usr/share/gnump3d/Musicus/stats.html -usr/share/gnump3d/Musicus/style.css -usr/share/gnump3d/Musicus/tagbrowse.html -usr/share/gnump3d/Musicus/template.ini -usr/share/gnump3d/Nomad -usr/share/gnump3d/Nomad/COPYING.html -usr/share/gnump3d/Nomad/ClubNomadLogo.gif -usr/share/gnump3d/Nomad/GNUMP3dLogo.jpg -usr/share/gnump3d/Nomad/Nomad_theme.css -usr/share/gnump3d/Nomad/SmallHome.gif -usr/share/gnump3d/Nomad/bg.gif -usr/share/gnump3d/Nomad/bug.html -usr/share/gnump3d/Nomad/config.ini -usr/share/gnump3d/Nomad/error.html -usr/share/gnump3d/Nomad/gnump3d_themes_footer.tmpl -usr/share/gnump3d/Nomad/gnump3d_themes_header.tmpl -usr/share/gnump3d/Nomad/index.html -usr/share/gnump3d/Nomad/info.html -usr/share/gnump3d/Nomad/logo.png -usr/share/gnump3d/Nomad/now.html -usr/share/gnump3d/Nomad/playlist.html -usr/share/gnump3d/Nomad/prefs.html -usr/share/gnump3d/Nomad/random.html -usr/share/gnump3d/Nomad/recent.html -usr/share/gnump3d/Nomad/results.html -usr/share/gnump3d/Nomad/search.html -usr/share/gnump3d/Nomad/size.html -usr/share/gnump3d/Nomad/stats.html -usr/share/gnump3d/Nomad/tagbrowse.html -usr/share/gnump3d/README -usr/share/gnump3d/SchwartzNGrau -usr/share/gnump3d/SchwartzNGrau/AUTHOR -usr/share/gnump3d/SchwartzNGrau/COPYING.html -usr/share/gnump3d/SchwartzNGrau/bug.html -usr/share/gnump3d/SchwartzNGrau/clear.gif -usr/share/gnump3d/SchwartzNGrau/config.ini -usr/share/gnump3d/SchwartzNGrau/error.html -usr/share/gnump3d/SchwartzNGrau/index.html -usr/share/gnump3d/SchwartzNGrau/info.html -usr/share/gnump3d/SchwartzNGrau/master.css -usr/share/gnump3d/SchwartzNGrau/now.html -usr/share/gnump3d/SchwartzNGrau/playlist.html -usr/share/gnump3d/SchwartzNGrau/prefs.html -usr/share/gnump3d/SchwartzNGrau/random.html -usr/share/gnump3d/SchwartzNGrau/recent.html -usr/share/gnump3d/SchwartzNGrau/results.html -usr/share/gnump3d/SchwartzNGrau/search.html -usr/share/gnump3d/SchwartzNGrau/size.html -usr/share/gnump3d/SchwartzNGrau/stats.html -usr/share/gnump3d/SchwartzNGrau/tagbrowse.html -usr/share/gnump3d/Tabular -usr/share/gnump3d/Tabular/AUTHOR -usr/share/gnump3d/Tabular/COPYING.html -usr/share/gnump3d/Tabular/bug.html -usr/share/gnump3d/Tabular/config.ini -usr/share/gnump3d/Tabular/error.html -usr/share/gnump3d/Tabular/extras.html -usr/share/gnump3d/Tabular/footer.tmpl -usr/share/gnump3d/Tabular/index.html -usr/share/gnump3d/Tabular/info.html -usr/share/gnump3d/Tabular/now.html -usr/share/gnump3d/Tabular/playlist.html -usr/share/gnump3d/Tabular/prefs.html -usr/share/gnump3d/Tabular/random.html -usr/share/gnump3d/Tabular/recent.html -usr/share/gnump3d/Tabular/results.html -usr/share/gnump3d/Tabular/search.html -usr/share/gnump3d/Tabular/size.html -usr/share/gnump3d/Tabular/statistics.html -usr/share/gnump3d/Tabular/stats.html -usr/share/gnump3d/Tabular/style.css -usr/share/gnump3d/Tabular/tagbrowse.html -usr/share/gnump3d/Tabular/template.ini -usr/share/gnump3d/Thexder -usr/share/gnump3d/Thexder/AUTHOR -usr/share/gnump3d/Thexder/COPYING.html -usr/share/gnump3d/Thexder/bug.html -usr/share/gnump3d/Thexder/config.ini -usr/share/gnump3d/Thexder/dig_temp2_01.jpg -usr/share/gnump3d/Thexder/dig_temp2_02.jpg -usr/share/gnump3d/Thexder/dig_temp2_03.gif -usr/share/gnump3d/Thexder/dig_temp2_04.jpg -usr/share/gnump3d/Thexder/dig_temp2_06.jpg -usr/share/gnump3d/Thexder/dig_temp2_08.jpg -usr/share/gnump3d/Thexder/dig_temp2_10.jpg -usr/share/gnump3d/Thexder/dig_temp2_12.jpg -usr/share/gnump3d/Thexder/dig_temp2_14.jpg -usr/share/gnump3d/Thexder/error.html -usr/share/gnump3d/Thexder/hr.gif -usr/share/gnump3d/Thexder/index.html -usr/share/gnump3d/Thexder/info.html -usr/share/gnump3d/Thexder/link_1.jpg -usr/share/gnump3d/Thexder/link_2.jpg -usr/share/gnump3d/Thexder/link_3.jpg -usr/share/gnump3d/Thexder/link_4.jpg -usr/share/gnump3d/Thexder/link_5.jpg -usr/share/gnump3d/Thexder/logo7.jpg -usr/share/gnump3d/Thexder/now.html -usr/share/gnump3d/Thexder/playlist.html -usr/share/gnump3d/Thexder/prefs.html -usr/share/gnump3d/Thexder/random.html -usr/share/gnump3d/Thexder/recent.html -usr/share/gnump3d/Thexder/results.html -usr/share/gnump3d/Thexder/search.html -usr/share/gnump3d/Thexder/spacer.gif -usr/share/gnump3d/Thexder/stats.html -usr/share/gnump3d/default -usr/share/gnump3d/default/AUTHOR -usr/share/gnump3d/default/COPYING.html -usr/share/gnump3d/default/bug.html -usr/share/gnump3d/default/config.ini -usr/share/gnump3d/default/error.html -usr/share/gnump3d/default/footer.tmpl -usr/share/gnump3d/default/header.tmpl -usr/share/gnump3d/default/index.html -usr/share/gnump3d/default/info.html -usr/share/gnump3d/default/now.html -usr/share/gnump3d/default/playlist.html -usr/share/gnump3d/default/prefs.html -usr/share/gnump3d/default/random.html -usr/share/gnump3d/default/recent.html -usr/share/gnump3d/default/results.html -usr/share/gnump3d/default/search.html -usr/share/gnump3d/default/size.html -usr/share/gnump3d/default/stats.html -usr/share/gnump3d/default/style.css -usr/share/gnump3d/default/tagbrowse.html -usr/share/gnump3d/dotNET -usr/share/gnump3d/dotNET/AUTHOR -usr/share/gnump3d/dotNET/COPYING.html -usr/share/gnump3d/dotNET/bug.html -usr/share/gnump3d/dotNET/config.ini -usr/share/gnump3d/dotNET/content.tmpl -usr/share/gnump3d/dotNET/error.html -usr/share/gnump3d/dotNET/header.tmpl -usr/share/gnump3d/dotNET/images -usr/share/gnump3d/dotNET/images/ecke_unten_links.gif -usr/share/gnump3d/dotNET/images/ecke_unten_rechts.gif -usr/share/gnump3d/dotNET/images/eckeor.gif -usr/share/gnump3d/dotNET/images/eckeul.gif -usr/share/gnump3d/dotNET/images/eckeur.gif -usr/share/gnump3d/dotNET/images/horizontal.jpg -usr/share/gnump3d/dotNET/images/logo7.jpg -usr/share/gnump3d/dotNET/images/pfeilrechts.gif -usr/share/gnump3d/dotNET/images/reiter.jpg -usr/share/gnump3d/dotNET/images/transparent.gif -usr/share/gnump3d/dotNET/images/vertikal.jpg -usr/share/gnump3d/dotNET/index.html -usr/share/gnump3d/dotNET/info.html -usr/share/gnump3d/dotNET/now.html -usr/share/gnump3d/dotNET/playlist.html -usr/share/gnump3d/dotNET/prefs.html -usr/share/gnump3d/dotNET/random.html -usr/share/gnump3d/dotNET/recent.html -usr/share/gnump3d/dotNET/results.html -usr/share/gnump3d/dotNET/search.html -usr/share/gnump3d/dotNET/stats.html -usr/share/gnump3d/dotNET/style.css -usr/share/gnump3d/handheld -usr/share/gnump3d/handheld/AUTHOR -usr/share/gnump3d/handheld/config.ini -usr/share/gnump3d/handheld/error.html -usr/share/gnump3d/handheld/index.html -usr/share/gnump3d/handheld/random.html -usr/share/gnump3d/handheld/results.html -usr/share/gnump3d/handheld/search.html -usr/share/gnump3d/nausicaa -usr/share/gnump3d/nausicaa/AUTHOR -usr/share/gnump3d/nausicaa/COPYING.html -usr/share/gnump3d/nausicaa/bug.html -usr/share/gnump3d/nausicaa/config.ini -usr/share/gnump3d/nausicaa/error.html -usr/share/gnump3d/nausicaa/extras.html -usr/share/gnump3d/nausicaa/index.html -usr/share/gnump3d/nausicaa/info.html -usr/share/gnump3d/nausicaa/now.html -usr/share/gnump3d/nausicaa/playlist.html -usr/share/gnump3d/nausicaa/prefs.html -usr/share/gnump3d/nausicaa/random.html -usr/share/gnump3d/nausicaa/recent.html -usr/share/gnump3d/nausicaa/results.html -usr/share/gnump3d/nausicaa/search.html -usr/share/gnump3d/nausicaa/stats.html -usr/share/gnump3d/nausicaa/style.css -usr/share/gnump3d/redgrey -usr/share/gnump3d/redgrey/AUTHOR -usr/share/gnump3d/redgrey/COPYING.html -usr/share/gnump3d/redgrey/bug.html -usr/share/gnump3d/redgrey/error.html -usr/share/gnump3d/redgrey/header.tmpl -usr/share/gnump3d/redgrey/index.html -usr/share/gnump3d/redgrey/info.html -usr/share/gnump3d/redgrey/now.html -usr/share/gnump3d/redgrey/playlist.html -usr/share/gnump3d/redgrey/prefs.html -usr/share/gnump3d/redgrey/random.html -usr/share/gnump3d/redgrey/recent.html -usr/share/gnump3d/redgrey/results.html -usr/share/gnump3d/redgrey/search.html -usr/share/gnump3d/redgrey/stats.html -usr/share/gnump3d/redgrey/tagbrowse.html -usr/share/gnump3d/simple -#usr/share/man/man1/gnump3d-index.1 -#usr/share/man/man1/gnump3d-top.1 -#usr/share/man/man1/gnump3d.1 -#usr/share/man/man1/gnump3d.conf.1 -var/cache/gnump3d -var/cache/gnump3d/serving -var/log/gnump3d \ No newline at end of file diff --git a/src/paks/gnump3d/depends.txt b/src/paks/gnump3d/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/gnump3d/install.sh b/src/paks/gnump3d/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/gnump3d/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/gnump3d/uninstall.sh b/src/paks/gnump3d/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/gnump3d/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/iptraf/ROOTFILES b/src/paks/iptraf/ROOTFILES deleted file mode 100644 index 201b2b55d8..0000000000 --- a/src/paks/iptraf/ROOTFILES +++ /dev/null @@ -1,2 +0,0 @@ -usr/bin/iptraf -usr/bin/rvnamed diff --git a/src/paks/iptraf/depends.txt b/src/paks/iptraf/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/iptraf/install.sh b/src/paks/iptraf/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/iptraf/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/iptraf/uninstall.sh b/src/paks/iptraf/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/iptraf/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/java/ROOTFILES b/src/paks/java/ROOTFILES deleted file mode 100644 index 14c5dfa898..0000000000 --- a/src/paks/java/ROOTFILES +++ /dev/null @@ -1,701 +0,0 @@ -usr/bin/java -#usr/java -#usr/java/bin -usr/java/bin/ControlPanel -usr/java/bin/java -usr/java/bin/java_vm -usr/java/bin/javaws -usr/java/bin/keytool -usr/java/bin/kinit -usr/java/bin/klist -usr/java/bin/ktab -usr/java/bin/orbd -usr/java/bin/pack200 -usr/java/bin/policytool -usr/java/bin/rmid -usr/java/bin/rmiregistry -usr/java/bin/servertool -usr/java/bin/tnameserv -usr/java/bin/unpack200 -#usr/java/javaws -usr/java/javaws/javaws -#usr/java/lib -usr/java/lib/applet -#usr/java/lib/audio -usr/java/lib/audio/soundbank.gm -usr/java/lib/charsets.jar -usr/java/lib/classlist -#usr/java/lib/cmm -usr/java/lib/cmm/CIEXYZ.pf -usr/java/lib/cmm/GRAY.pf -usr/java/lib/cmm/LINEAR_RGB.pf -usr/java/lib/cmm/PYCC.pf -usr/java/lib/cmm/sRGB.pf -usr/java/lib/content-types.properties -usr/java/lib/deploy.jar -#usr/java/lib/ext -usr/java/lib/ext/dnsns.jar -usr/java/lib/ext/localedata.jar -usr/java/lib/ext/sunjce_provider.jar -usr/java/lib/ext/sunpkcs11.jar -usr/java/lib/flavormap.properties -#usr/java/lib/fontconfig.RedHat.2.1.bfc -#usr/java/lib/fontconfig.RedHat.2.1.properties.src -#usr/java/lib/fontconfig.RedHat.3.bfc -#usr/java/lib/fontconfig.RedHat.3.properties.src -#usr/java/lib/fontconfig.RedHat.8.0.bfc -#usr/java/lib/fontconfig.RedHat.8.0.properties.src -#usr/java/lib/fontconfig.RedHat.9.0.bfc -#usr/java/lib/fontconfig.RedHat.9.0.properties.src -#usr/java/lib/fontconfig.RedHat.bfc -#usr/java/lib/fontconfig.RedHat.properties.src -#usr/java/lib/fontconfig.SuSE.bfc -#usr/java/lib/fontconfig.SuSE.properties.src -#usr/java/lib/fontconfig.Sun.2003.bfc -#usr/java/lib/fontconfig.Sun.2003.properties.src -#usr/java/lib/fontconfig.Sun.bfc -#usr/java/lib/fontconfig.Sun.properties.src -#usr/java/lib/fontconfig.Turbo.8.0.bfc -#usr/java/lib/fontconfig.Turbo.8.0.properties.src -#usr/java/lib/fontconfig.Turbo.bfc -#usr/java/lib/fontconfig.Turbo.properties.src -#usr/java/lib/fontconfig.bfc -#usr/java/lib/fontconfig.properties.src -#usr/java/lib/fonts -#usr/java/lib/fonts/LucidaBrightDemiBold.ttf -#usr/java/lib/fonts/LucidaBrightDemiItalic.ttf -#usr/java/lib/fonts/LucidaBrightItalic.ttf -#usr/java/lib/fonts/LucidaBrightRegular.ttf -#usr/java/lib/fonts/LucidaSansDemiBold.ttf -#usr/java/lib/fonts/LucidaSansRegular.ttf -#usr/java/lib/fonts/LucidaTypewriterBold.ttf -#usr/java/lib/fonts/LucidaTypewriterRegular.ttf -#usr/java/lib/fonts/fonts.dir -#usr/java/lib/i386 -usr/java/lib/i386/awt_robot -#usr/java/lib/i386/client -usr/java/lib/i386/client/Xusage.txt -usr/java/lib/i386/client/classes.jsa -usr/java/lib/i386/client/libjsig.so -usr/java/lib/i386/client/libjvm.so -usr/java/lib/i386/gtkhelper -#usr/java/lib/i386/headless -usr/java/lib/i386/headless/libmawt.so -usr/java/lib/i386/jvm.cfg -usr/java/lib/i386/libJdbcOdbc.so -usr/java/lib/i386/libawt.so -usr/java/lib/i386/libcmm.so -usr/java/lib/i386/libdcpr.so -usr/java/lib/i386/libdeploy.so -usr/java/lib/i386/libdt_socket.so -usr/java/lib/i386/libfontmanager.so -usr/java/lib/i386/libhprof.so -usr/java/lib/i386/libinstrument.so -usr/java/lib/i386/libioser12.so -usr/java/lib/i386/libj2pkcs11.so -usr/java/lib/i386/libjaas_unix.so -usr/java/lib/i386/libjava.so -usr/java/lib/i386/libjava_crw_demo.so -usr/java/lib/i386/libjavaplugin_jni.so -usr/java/lib/i386/libjavaplugin_nscp.so -usr/java/lib/i386/libjavaplugin_nscp_gcc29.so -usr/java/lib/i386/libjawt.so -usr/java/lib/i386/libjdwp.so -usr/java/lib/i386/libjpeg.so -usr/java/lib/i386/libjsig.so -usr/java/lib/i386/libjsound.so -usr/java/lib/i386/libjsoundalsa.so -usr/java/lib/i386/libmanagement.so -usr/java/lib/i386/libmlib_image.so -usr/java/lib/i386/libnative_chmod.so -usr/java/lib/i386/libnet.so -usr/java/lib/i386/libnio.so -usr/java/lib/i386/librmi.so -usr/java/lib/i386/libunpack.so -usr/java/lib/i386/libverify.so -usr/java/lib/i386/libzip.so -#usr/java/lib/i386/motif21 -usr/java/lib/i386/motif21/libmawt.so -usr/java/lib/i386/native_threads -usr/java/lib/i386/native_threads/libhpi.so -#usr/java/lib/i386/server -usr/java/lib/i386/server/Xusage.txt -usr/java/lib/i386/server/libjsig.so -usr/java/lib/i386/server/libjvm.so -#usr/java/lib/i386/xawt -#usr/java/lib/i386/xawt/libmawt.so -usr/java/lib/im -usr/java/lib/im/indicim.jar -usr/java/lib/im/thaiim.jar -#usr/java/lib/images -#usr/java/lib/images/cursors -usr/java/lib/images/cursors/cursors.properties -usr/java/lib/images/cursors/invalid32x32.gif -usr/java/lib/images/cursors/motif_CopyDrop32x32.gif -usr/java/lib/images/cursors/motif_CopyNoDrop32x32.gif -usr/java/lib/images/cursors/motif_LinkDrop32x32.gif -usr/java/lib/images/cursors/motif_LinkNoDrop32x32.gif -usr/java/lib/images/cursors/motif_MoveDrop32x32.gif -usr/java/lib/images/cursors/motif_MoveNoDrop32x32.gif -#usr/java/lib/images/icons -usr/java/lib/images/icons/sun-java.png -usr/java/lib/images/icons/sun-java_HighContrast.png -usr/java/lib/images/icons/sun-java_HighContrastInverse.png -usr/java/lib/images/icons/sun-java_LowContrast.png -#usr/java/lib/javaws -usr/java/lib/javaws.jar -#usr/java/lib/javaws/Java1.5.ico -usr/java/lib/javaws/messages.properties -usr/java/lib/javaws/messages_de.properties -usr/java/lib/javaws/messages_es.properties -usr/java/lib/javaws/messages_fr.properties -usr/java/lib/javaws/messages_it.properties -usr/java/lib/javaws/messages_ja.properties -usr/java/lib/javaws/messages_ko.properties -usr/java/lib/javaws/messages_sv.properties -usr/java/lib/javaws/messages_zh_CN.properties -usr/java/lib/javaws/messages_zh_HK.properties -usr/java/lib/javaws/messages_zh_TW.properties -usr/java/lib/javaws/miniSplash.jpg -usr/java/lib/jce.jar -usr/java/lib/jsse.jar -usr/java/lib/jvm.hprof.txt -#usr/java/lib/locale -usr/java/lib/locale/de -usr/java/lib/locale/de/LC_MESSAGES -usr/java/lib/locale/de/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/locale/es -usr/java/lib/locale/es/LC_MESSAGES -usr/java/lib/locale/es/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/locale/fr -usr/java/lib/locale/fr/LC_MESSAGES -usr/java/lib/locale/fr/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/locale/it -usr/java/lib/locale/it/LC_MESSAGES -usr/java/lib/locale/it/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/locale/ja -usr/java/lib/locale/ja/LC_MESSAGES -usr/java/lib/locale/ja/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/locale/ko -usr/java/lib/locale/ko.UTF-8 -usr/java/lib/locale/ko.UTF-8/LC_MESSAGES -usr/java/lib/locale/ko.UTF-8/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/locale/ko/LC_MESSAGES -usr/java/lib/locale/ko/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/locale/sv -usr/java/lib/locale/sv/LC_MESSAGES -usr/java/lib/locale/sv/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/locale/zh -usr/java/lib/locale/zh.GBK -usr/java/lib/locale/zh.GBK/LC_MESSAGES -usr/java/lib/locale/zh.GBK/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/locale/zh/LC_MESSAGES -usr/java/lib/locale/zh/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/locale/zh_HK.BIG5HK -usr/java/lib/locale/zh_HK.BIG5HK/LC_MESSAGES -usr/java/lib/locale/zh_HK.BIG5HK/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/locale/zh_TW -usr/java/lib/locale/zh_TW.BIG5 -usr/java/lib/locale/zh_TW.BIG5/LC_MESSAGES -usr/java/lib/locale/zh_TW.BIG5/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/locale/zh_TW/LC_MESSAGES -usr/java/lib/locale/zh_TW/LC_MESSAGES/sunw_java_plugin.mo -usr/java/lib/logging.properties -usr/java/lib/management -usr/java/lib/management/jmxremote.access -usr/java/lib/management/jmxremote.password.template -usr/java/lib/management/management.properties -usr/java/lib/management/snmp.acl.template -usr/java/lib/net.properties -usr/java/lib/oblique-fonts -usr/java/lib/oblique-fonts/LucidaSansDemiOblique.ttf -usr/java/lib/oblique-fonts/LucidaSansOblique.ttf -usr/java/lib/oblique-fonts/LucidaTypewriterBoldOblique.ttf -usr/java/lib/oblique-fonts/LucidaTypewriterOblique.ttf -usr/java/lib/oblique-fonts/fonts.dir -usr/java/lib/plugin.jar -usr/java/lib/psfont.properties.ja -usr/java/lib/psfontj2d.properties -usr/java/lib/rt.jar -usr/java/lib/security -usr/java/lib/security/US_export_policy.jar -usr/java/lib/security/cacerts -usr/java/lib/security/java.policy -usr/java/lib/security/java.security -usr/java/lib/security/javaws.policy -usr/java/lib/security/local_policy.jar -usr/java/lib/sound.properties -usr/java/lib/zi -usr/java/lib/zi/Africa -usr/java/lib/zi/Africa/Abidjan -usr/java/lib/zi/Africa/Accra -usr/java/lib/zi/Africa/Addis_Ababa -usr/java/lib/zi/Africa/Algiers -usr/java/lib/zi/Africa/Asmera -usr/java/lib/zi/Africa/Bamako -usr/java/lib/zi/Africa/Bangui -usr/java/lib/zi/Africa/Banjul -usr/java/lib/zi/Africa/Bissau -usr/java/lib/zi/Africa/Blantyre -usr/java/lib/zi/Africa/Brazzaville -usr/java/lib/zi/Africa/Bujumbura -usr/java/lib/zi/Africa/Cairo -usr/java/lib/zi/Africa/Casablanca -usr/java/lib/zi/Africa/Ceuta -usr/java/lib/zi/Africa/Conakry -usr/java/lib/zi/Africa/Dakar -usr/java/lib/zi/Africa/Dar_es_Salaam -usr/java/lib/zi/Africa/Djibouti -usr/java/lib/zi/Africa/Douala -usr/java/lib/zi/Africa/El_Aaiun -usr/java/lib/zi/Africa/Freetown -usr/java/lib/zi/Africa/Gaborone -usr/java/lib/zi/Africa/Harare -usr/java/lib/zi/Africa/Johannesburg -usr/java/lib/zi/Africa/Kampala -usr/java/lib/zi/Africa/Khartoum -usr/java/lib/zi/Africa/Kigali -usr/java/lib/zi/Africa/Kinshasa -usr/java/lib/zi/Africa/Lagos -usr/java/lib/zi/Africa/Libreville -usr/java/lib/zi/Africa/Lome -usr/java/lib/zi/Africa/Luanda -usr/java/lib/zi/Africa/Lubumbashi -usr/java/lib/zi/Africa/Lusaka -usr/java/lib/zi/Africa/Malabo -usr/java/lib/zi/Africa/Maputo -usr/java/lib/zi/Africa/Maseru -usr/java/lib/zi/Africa/Mbabane -usr/java/lib/zi/Africa/Mogadishu -usr/java/lib/zi/Africa/Monrovia -usr/java/lib/zi/Africa/Nairobi -usr/java/lib/zi/Africa/Ndjamena -usr/java/lib/zi/Africa/Niamey -usr/java/lib/zi/Africa/Nouakchott -usr/java/lib/zi/Africa/Ouagadougou -usr/java/lib/zi/Africa/Porto-Novo -usr/java/lib/zi/Africa/Sao_Tome -usr/java/lib/zi/Africa/Tripoli -usr/java/lib/zi/Africa/Tunis -usr/java/lib/zi/Africa/Windhoek -usr/java/lib/zi/America -usr/java/lib/zi/America/Adak -usr/java/lib/zi/America/Anchorage -usr/java/lib/zi/America/Anguilla -usr/java/lib/zi/America/Antigua -usr/java/lib/zi/America/Araguaina -usr/java/lib/zi/America/Argentina -usr/java/lib/zi/America/Argentina/Buenos_Aires -usr/java/lib/zi/America/Argentina/Catamarca -usr/java/lib/zi/America/Argentina/Cordoba -usr/java/lib/zi/America/Argentina/Jujuy -usr/java/lib/zi/America/Argentina/La_Rioja -usr/java/lib/zi/America/Argentina/Mendoza -usr/java/lib/zi/America/Argentina/Rio_Gallegos -usr/java/lib/zi/America/Argentina/San_Juan -usr/java/lib/zi/America/Argentina/Tucuman -usr/java/lib/zi/America/Argentina/Ushuaia -usr/java/lib/zi/America/Aruba -usr/java/lib/zi/America/Asuncion -usr/java/lib/zi/America/Bahia -usr/java/lib/zi/America/Barbados -usr/java/lib/zi/America/Belem -usr/java/lib/zi/America/Belize -usr/java/lib/zi/America/Boa_Vista -usr/java/lib/zi/America/Bogota -usr/java/lib/zi/America/Boise -usr/java/lib/zi/America/Cambridge_Bay -usr/java/lib/zi/America/Campo_Grande -usr/java/lib/zi/America/Cancun -usr/java/lib/zi/America/Caracas -usr/java/lib/zi/America/Cayenne -usr/java/lib/zi/America/Cayman -usr/java/lib/zi/America/Chicago -usr/java/lib/zi/America/Chihuahua -usr/java/lib/zi/America/Coral_Harbour -usr/java/lib/zi/America/Costa_Rica -usr/java/lib/zi/America/Cuiaba -usr/java/lib/zi/America/Curacao -usr/java/lib/zi/America/Danmarkshavn -usr/java/lib/zi/America/Dawson -usr/java/lib/zi/America/Dawson_Creek -usr/java/lib/zi/America/Denver -usr/java/lib/zi/America/Detroit -usr/java/lib/zi/America/Dominica -usr/java/lib/zi/America/Edmonton -usr/java/lib/zi/America/Eirunepe -usr/java/lib/zi/America/El_Salvador -usr/java/lib/zi/America/Fortaleza -usr/java/lib/zi/America/Glace_Bay -usr/java/lib/zi/America/Godthab -usr/java/lib/zi/America/Goose_Bay -usr/java/lib/zi/America/Grand_Turk -usr/java/lib/zi/America/Grenada -usr/java/lib/zi/America/Guadeloupe -usr/java/lib/zi/America/Guatemala -usr/java/lib/zi/America/Guayaquil -usr/java/lib/zi/America/Guyana -usr/java/lib/zi/America/Halifax -usr/java/lib/zi/America/Havana -usr/java/lib/zi/America/Hermosillo -usr/java/lib/zi/America/Indiana -usr/java/lib/zi/America/Indiana/Indianapolis -usr/java/lib/zi/America/Indiana/Knox -usr/java/lib/zi/America/Indiana/Marengo -usr/java/lib/zi/America/Indiana/Vevay -usr/java/lib/zi/America/Inuvik -usr/java/lib/zi/America/Iqaluit -usr/java/lib/zi/America/Jamaica -usr/java/lib/zi/America/Juneau -usr/java/lib/zi/America/Kentucky -usr/java/lib/zi/America/Kentucky/Louisville -usr/java/lib/zi/America/Kentucky/Monticello -usr/java/lib/zi/America/La_Paz -usr/java/lib/zi/America/Lima -usr/java/lib/zi/America/Los_Angeles -usr/java/lib/zi/America/Maceio -usr/java/lib/zi/America/Managua -usr/java/lib/zi/America/Manaus -usr/java/lib/zi/America/Martinique -usr/java/lib/zi/America/Mazatlan -usr/java/lib/zi/America/Menominee -usr/java/lib/zi/America/Merida -usr/java/lib/zi/America/Mexico_City -usr/java/lib/zi/America/Miquelon -usr/java/lib/zi/America/Monterrey -usr/java/lib/zi/America/Montevideo -usr/java/lib/zi/America/Montreal -usr/java/lib/zi/America/Montserrat -usr/java/lib/zi/America/Nassau -usr/java/lib/zi/America/New_York -usr/java/lib/zi/America/Nipigon -usr/java/lib/zi/America/Nome -usr/java/lib/zi/America/Noronha -usr/java/lib/zi/America/North_Dakota -usr/java/lib/zi/America/North_Dakota/Center -usr/java/lib/zi/America/Panama -usr/java/lib/zi/America/Pangnirtung -usr/java/lib/zi/America/Paramaribo -usr/java/lib/zi/America/Phoenix -usr/java/lib/zi/America/Port-au-Prince -usr/java/lib/zi/America/Port_of_Spain -usr/java/lib/zi/America/Porto_Velho -usr/java/lib/zi/America/Puerto_Rico -usr/java/lib/zi/America/Rainy_River -usr/java/lib/zi/America/Rankin_Inlet -usr/java/lib/zi/America/Recife -usr/java/lib/zi/America/Regina -usr/java/lib/zi/America/Rio_Branco -usr/java/lib/zi/America/Santiago -usr/java/lib/zi/America/Santo_Domingo -usr/java/lib/zi/America/Sao_Paulo -usr/java/lib/zi/America/Scoresbysund -usr/java/lib/zi/America/St_Johns -usr/java/lib/zi/America/St_Kitts -usr/java/lib/zi/America/St_Lucia -usr/java/lib/zi/America/St_Thomas -usr/java/lib/zi/America/St_Vincent -usr/java/lib/zi/America/Swift_Current -usr/java/lib/zi/America/Tegucigalpa -usr/java/lib/zi/America/Thule -usr/java/lib/zi/America/Thunder_Bay -usr/java/lib/zi/America/Tijuana -usr/java/lib/zi/America/Toronto -usr/java/lib/zi/America/Tortola -usr/java/lib/zi/America/Vancouver -usr/java/lib/zi/America/Whitehorse -usr/java/lib/zi/America/Winnipeg -usr/java/lib/zi/America/Yakutat -usr/java/lib/zi/America/Yellowknife -usr/java/lib/zi/Antarctica -usr/java/lib/zi/Antarctica/Casey -usr/java/lib/zi/Antarctica/Davis -usr/java/lib/zi/Antarctica/DumontDUrville -usr/java/lib/zi/Antarctica/Mawson -usr/java/lib/zi/Antarctica/McMurdo -usr/java/lib/zi/Antarctica/Palmer -usr/java/lib/zi/Antarctica/Rothera -usr/java/lib/zi/Antarctica/Syowa -usr/java/lib/zi/Antarctica/Vostok -usr/java/lib/zi/Asia -usr/java/lib/zi/Asia/Aden -usr/java/lib/zi/Asia/Almaty -usr/java/lib/zi/Asia/Amman -usr/java/lib/zi/Asia/Anadyr -usr/java/lib/zi/Asia/Aqtau -usr/java/lib/zi/Asia/Aqtobe -usr/java/lib/zi/Asia/Ashgabat -usr/java/lib/zi/Asia/Baghdad -usr/java/lib/zi/Asia/Bahrain -usr/java/lib/zi/Asia/Baku -usr/java/lib/zi/Asia/Bangkok -usr/java/lib/zi/Asia/Beirut -usr/java/lib/zi/Asia/Bishkek -usr/java/lib/zi/Asia/Brunei -usr/java/lib/zi/Asia/Calcutta -usr/java/lib/zi/Asia/Choibalsan -usr/java/lib/zi/Asia/Chongqing -usr/java/lib/zi/Asia/Colombo -usr/java/lib/zi/Asia/Damascus -usr/java/lib/zi/Asia/Dhaka -usr/java/lib/zi/Asia/Dili -usr/java/lib/zi/Asia/Dubai -usr/java/lib/zi/Asia/Dushanbe -usr/java/lib/zi/Asia/Gaza -usr/java/lib/zi/Asia/Harbin -usr/java/lib/zi/Asia/Hong_Kong -usr/java/lib/zi/Asia/Hovd -usr/java/lib/zi/Asia/Irkutsk -usr/java/lib/zi/Asia/Jakarta -usr/java/lib/zi/Asia/Jayapura -usr/java/lib/zi/Asia/Jerusalem -usr/java/lib/zi/Asia/Kabul -usr/java/lib/zi/Asia/Kamchatka -usr/java/lib/zi/Asia/Karachi -usr/java/lib/zi/Asia/Kashgar -usr/java/lib/zi/Asia/Katmandu -usr/java/lib/zi/Asia/Krasnoyarsk -usr/java/lib/zi/Asia/Kuala_Lumpur -usr/java/lib/zi/Asia/Kuching -usr/java/lib/zi/Asia/Kuwait -usr/java/lib/zi/Asia/Macau -usr/java/lib/zi/Asia/Magadan -usr/java/lib/zi/Asia/Makassar -usr/java/lib/zi/Asia/Manila -usr/java/lib/zi/Asia/Muscat -usr/java/lib/zi/Asia/Nicosia -usr/java/lib/zi/Asia/Novosibirsk -usr/java/lib/zi/Asia/Omsk -usr/java/lib/zi/Asia/Oral -usr/java/lib/zi/Asia/Phnom_Penh -usr/java/lib/zi/Asia/Pontianak -usr/java/lib/zi/Asia/Pyongyang -usr/java/lib/zi/Asia/Qatar -usr/java/lib/zi/Asia/Qyzylorda -usr/java/lib/zi/Asia/Rangoon -usr/java/lib/zi/Asia/Riyadh -usr/java/lib/zi/Asia/Riyadh87 -usr/java/lib/zi/Asia/Riyadh88 -usr/java/lib/zi/Asia/Riyadh89 -usr/java/lib/zi/Asia/Saigon -usr/java/lib/zi/Asia/Sakhalin -usr/java/lib/zi/Asia/Samarkand -usr/java/lib/zi/Asia/Seoul -usr/java/lib/zi/Asia/Shanghai -usr/java/lib/zi/Asia/Singapore -usr/java/lib/zi/Asia/Taipei -usr/java/lib/zi/Asia/Tashkent -usr/java/lib/zi/Asia/Tbilisi -usr/java/lib/zi/Asia/Tehran -usr/java/lib/zi/Asia/Thimphu -usr/java/lib/zi/Asia/Tokyo -usr/java/lib/zi/Asia/Ulaanbaatar -usr/java/lib/zi/Asia/Urumqi -usr/java/lib/zi/Asia/Vientiane -usr/java/lib/zi/Asia/Vladivostok -usr/java/lib/zi/Asia/Yakutsk -usr/java/lib/zi/Asia/Yekaterinburg -usr/java/lib/zi/Asia/Yerevan -usr/java/lib/zi/Atlantic -usr/java/lib/zi/Atlantic/Azores -usr/java/lib/zi/Atlantic/Bermuda -usr/java/lib/zi/Atlantic/Canary -usr/java/lib/zi/Atlantic/Cape_Verde -usr/java/lib/zi/Atlantic/Faeroe -usr/java/lib/zi/Atlantic/Madeira -usr/java/lib/zi/Atlantic/Reykjavik -usr/java/lib/zi/Atlantic/South_Georgia -usr/java/lib/zi/Atlantic/St_Helena -usr/java/lib/zi/Atlantic/Stanley -usr/java/lib/zi/Australia -usr/java/lib/zi/Australia/Adelaide -usr/java/lib/zi/Australia/Brisbane -usr/java/lib/zi/Australia/Broken_Hill -usr/java/lib/zi/Australia/Currie -usr/java/lib/zi/Australia/Darwin -usr/java/lib/zi/Australia/Hobart -usr/java/lib/zi/Australia/Lindeman -usr/java/lib/zi/Australia/Lord_Howe -usr/java/lib/zi/Australia/Melbourne -usr/java/lib/zi/Australia/Perth -usr/java/lib/zi/Australia/Sydney -usr/java/lib/zi/CET -usr/java/lib/zi/EET -usr/java/lib/zi/Etc -##usr/java/lib/zi/Etc/GMT -##usr/java/lib/zi/Etc/GMT1 -##usr/java/lib/zi/Etc/GMT10 -##usr/java/lib/zi/Etc/GMT11 -##usr/java/lib/zi/Etc/GMT12 -##usr/java/lib/zi/Etc/GMT2 -##usr/java/lib/zi/Etc/GMT3 -##usr/java/lib/zi/Etc/GMT4 -##usr/java/lib/zi/Etc/GMT5 -##usr/java/lib/zi/Etc/GMT6 -##usr/java/lib/zi/Etc/GMT7 -##usr/java/lib/zi/Etc/GMT8 -##usr/java/lib/zi/Etc/GMT9 -##usr/java/lib/zi/Etc/GMT-1 -##usr/java/lib/zi/Etc/GMT-10 -##usr/java/lib/zi/Etc/GMT-11 -##usr/java/lib/zi/Etc/GMT-12 -##usr/java/lib/zi/Etc/GMT-13 -##usr/java/lib/zi/Etc/GMT-14 -##usr/java/lib/zi/Etc/GMT-2 -##usr/java/lib/zi/Etc/GMT-3 -##usr/java/lib/zi/Etc/GMT-4 -##usr/java/lib/zi/Etc/GMT-5 -##usr/java/lib/zi/Etc/GMT-6 -##usr/java/lib/zi/Etc/GMT-7 -##usr/java/lib/zi/Etc/GMT-8 -##usr/java/lib/zi/Etc/GMT-9 -##usr/java/lib/zi/Etc/UCT -##usr/java/lib/zi/Etc/UTC -usr/java/lib/zi/Europe -usr/java/lib/zi/Europe/Amsterdam -usr/java/lib/zi/Europe/Andorra -usr/java/lib/zi/Europe/Athens -usr/java/lib/zi/Europe/Belgrade -usr/java/lib/zi/Europe/Berlin -usr/java/lib/zi/Europe/Brussels -usr/java/lib/zi/Europe/Bucharest -usr/java/lib/zi/Europe/Budapest -usr/java/lib/zi/Europe/Chisinau -usr/java/lib/zi/Europe/Copenhagen -usr/java/lib/zi/Europe/Dublin -usr/java/lib/zi/Europe/Gibraltar -usr/java/lib/zi/Europe/Helsinki -usr/java/lib/zi/Europe/Istanbul -usr/java/lib/zi/Europe/Kaliningrad -usr/java/lib/zi/Europe/Kiev -usr/java/lib/zi/Europe/Lisbon -usr/java/lib/zi/Europe/London -usr/java/lib/zi/Europe/Luxembourg -usr/java/lib/zi/Europe/Madrid -usr/java/lib/zi/Europe/Malta -usr/java/lib/zi/Europe/Minsk -usr/java/lib/zi/Europe/Monaco -usr/java/lib/zi/Europe/Moscow -usr/java/lib/zi/Europe/Oslo -usr/java/lib/zi/Europe/Paris -usr/java/lib/zi/Europe/Prague -usr/java/lib/zi/Europe/Riga -usr/java/lib/zi/Europe/Rome -usr/java/lib/zi/Europe/Samara -usr/java/lib/zi/Europe/Simferopol -usr/java/lib/zi/Europe/Sofia -usr/java/lib/zi/Europe/Stockholm -usr/java/lib/zi/Europe/Tallinn -usr/java/lib/zi/Europe/Tirane -usr/java/lib/zi/Europe/Uzhgorod -usr/java/lib/zi/Europe/Vaduz -usr/java/lib/zi/Europe/Vienna -usr/java/lib/zi/Europe/Vilnius -usr/java/lib/zi/Europe/Warsaw -usr/java/lib/zi/Europe/Zaporozhye -usr/java/lib/zi/Europe/Zurich -usr/java/lib/zi/GMT -usr/java/lib/zi/Indian -usr/java/lib/zi/Indian/Antananarivo -usr/java/lib/zi/Indian/Chagos -usr/java/lib/zi/Indian/Christmas -usr/java/lib/zi/Indian/Cocos -usr/java/lib/zi/Indian/Comoro -usr/java/lib/zi/Indian/Kerguelen -usr/java/lib/zi/Indian/Mahe -usr/java/lib/zi/Indian/Maldives -usr/java/lib/zi/Indian/Mauritius -usr/java/lib/zi/Indian/Mayotte -usr/java/lib/zi/Indian/Reunion -usr/java/lib/zi/MET -usr/java/lib/zi/Pacific -usr/java/lib/zi/Pacific/Apia -usr/java/lib/zi/Pacific/Auckland -usr/java/lib/zi/Pacific/Chatham -usr/java/lib/zi/Pacific/Easter -usr/java/lib/zi/Pacific/Efate -usr/java/lib/zi/Pacific/Enderbury -usr/java/lib/zi/Pacific/Fakaofo -usr/java/lib/zi/Pacific/Fiji -usr/java/lib/zi/Pacific/Funafuti -usr/java/lib/zi/Pacific/Galapagos -usr/java/lib/zi/Pacific/Gambier -usr/java/lib/zi/Pacific/Guadalcanal -usr/java/lib/zi/Pacific/Guam -usr/java/lib/zi/Pacific/Honolulu -usr/java/lib/zi/Pacific/Johnston -usr/java/lib/zi/Pacific/Kiritimati -usr/java/lib/zi/Pacific/Kosrae -usr/java/lib/zi/Pacific/Kwajalein -usr/java/lib/zi/Pacific/Majuro -usr/java/lib/zi/Pacific/Marquesas -usr/java/lib/zi/Pacific/Midway -usr/java/lib/zi/Pacific/Nauru -usr/java/lib/zi/Pacific/Niue -usr/java/lib/zi/Pacific/Norfolk -usr/java/lib/zi/Pacific/Noumea -usr/java/lib/zi/Pacific/Pago_Pago -usr/java/lib/zi/Pacific/Palau -usr/java/lib/zi/Pacific/Pitcairn -usr/java/lib/zi/Pacific/Ponape -usr/java/lib/zi/Pacific/Port_Moresby -usr/java/lib/zi/Pacific/Rarotonga -usr/java/lib/zi/Pacific/Saipan -usr/java/lib/zi/Pacific/Tahiti -usr/java/lib/zi/Pacific/Tarawa -usr/java/lib/zi/Pacific/Tongatapu -usr/java/lib/zi/Pacific/Truk -usr/java/lib/zi/Pacific/Wake -usr/java/lib/zi/Pacific/Wallis -usr/java/lib/zi/WET -usr/java/lib/zi/ZoneInfoMappings -#usr/java/licenses -#usr/java/licenses/CHANGES -#usr/java/licenses/COPYRIGHT -#usr/java/licenses/LICENSE -#usr/java/licenses/README -#usr/java/licenses/THIRDPARTYLICENSEREADME.txt -#usr/java/licenses/Welcome.html -#usr/java/man -#usr/java/man/ja -#usr/java/man/ja_JP.eucJP -#usr/java/man/ja_JP.eucJP/man1 -#usr/java/man/ja_JP.eucJP/man1/java.1 -#usr/java/man/ja_JP.eucJP/man1/javaws.1 -#usr/java/man/ja_JP.eucJP/man1/keytool.1 -#usr/java/man/ja_JP.eucJP/man1/kinit.1 -#usr/java/man/ja_JP.eucJP/man1/klist.1 -#usr/java/man/ja_JP.eucJP/man1/ktab.1 -#usr/java/man/ja_JP.eucJP/man1/orbd.1 -#usr/java/man/ja_JP.eucJP/man1/pack200.1 -#usr/java/man/ja_JP.eucJP/man1/policytool.1 -#usr/java/man/ja_JP.eucJP/man1/rmid.1 -#usr/java/man/ja_JP.eucJP/man1/rmiregistry.1 -#usr/java/man/ja_JP.eucJP/man1/servertool.1 -#usr/java/man/ja_JP.eucJP/man1/tnameserv.1 -#usr/java/man/ja_JP.eucJP/man1/unpack200.1 -#usr/java/man/man1 -#usr/java/man/man1/java.1 -#usr/java/man/man1/javaws.1 -#usr/java/man/man1/keytool.1 -#usr/java/man/man1/kinit.1 -#usr/java/man/man1/klist.1 -#usr/java/man/man1/ktab.1 -#usr/java/man/man1/orbd.1 -#usr/java/man/man1/pack200.1 -#usr/java/man/man1/policytool.1 -#usr/java/man/man1/rmid.1 -#usr/java/man/man1/rmiregistry.1 -#usr/java/man/man1/servertool.1 -#usr/java/man/man1/tnameserv.1 -#usr/java/man/man1/unpack200.1 -#usr/java/plugin -#usr/java/plugin/desktop -#usr/java/plugin/desktop/sun_java.desktop -#usr/java/plugin/desktop/sun_java.png -#usr/java/plugin/i386 -#usr/java/plugin/i386/ns7 -#usr/java/plugin/i386/ns7-gcc29 -#usr/java/plugin/i386/ns7-gcc29/libjavaplugin_oji.so -#usr/java/plugin/i386/ns7/libjavaplugin_oji.so -usr/java/version \ No newline at end of file diff --git a/src/paks/java/depends.txt b/src/paks/java/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/java/install.sh b/src/paks/java/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/java/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/java/uninstall.sh b/src/paks/java/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/java/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/lame/ROOTFILES b/src/paks/lame/ROOTFILES deleted file mode 100644 index 6e0262cdf1..0000000000 --- a/src/paks/lame/ROOTFILES +++ /dev/null @@ -1,23 +0,0 @@ -usr/bin/lame -usr/bin/mp3rtp -#usr/include/lame -#usr/include/lame/lame.h -#usr/lib/libmp3lame.a -#usr/lib/libmp3lame.la -usr/lib/libmp3lame.so -usr/lib/libmp3lame.so.0 -usr/lib/libmp3lame.so.0.0.0 -#usr/share/doc/lame -#usr/share/doc/lame/html -#usr/share/doc/lame/html/basic.html -#usr/share/doc/lame/html/contributors.html -#usr/share/doc/lame/html/examples.html -#usr/share/doc/lame/html/history.html -#usr/share/doc/lame/html/id3.html -#usr/share/doc/lame/html/index.html -#usr/share/doc/lame/html/lame.css -#usr/share/doc/lame/html/modes.html -#usr/share/doc/lame/html/node6.html -#usr/share/doc/lame/html/presets.html -#usr/share/doc/lame/html/switchs.html -#usr/share/man/man1/lame.1 diff --git a/src/paks/lame/depends.txt b/src/paks/lame/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/lame/install.sh b/src/paks/lame/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/lame/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/lame/uninstall.sh b/src/paks/lame/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/lame/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/libjpeg/ROOTFILES b/src/paks/libjpeg/ROOTFILES deleted file mode 100644 index df76fec489..0000000000 --- a/src/paks/libjpeg/ROOTFILES +++ /dev/null @@ -1,19 +0,0 @@ -usr/bin/cjpeg -usr/bin/djpeg -usr/bin/jpegtran -usr/bin/rdjpgcom -usr/bin/wrjpgcom -#usr/include/jconfig.h -#usr/include/jerror.h -#usr/include/jmorecfg.h -#usr/include/jpeglib.h -usr/lib/libjpeg.a -usr/lib/libjpeg.la -usr/lib/libjpeg.so -usr/lib/libjpeg.so.62 -usr/lib/libjpeg.so.62.0.0 -#usr/share/man/man1/cjpeg.1 -#usr/share/man/man1/djpeg.1 -#usr/share/man/man1/jpegtran.1 -#usr/share/man/man1/rdjpgcom.1 -#usr/share/man/man1/wrjpgcom.1 diff --git a/src/paks/libjpeg/depends.txt b/src/paks/libjpeg/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/libjpeg/install.sh b/src/paks/libjpeg/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/libjpeg/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/libjpeg/uninstall.sh b/src/paks/libjpeg/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/libjpeg/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/libmad/ROOTFILES b/src/paks/libmad/ROOTFILES deleted file mode 100644 index a24486d0b2..0000000000 --- a/src/paks/libmad/ROOTFILES +++ /dev/null @@ -1,6 +0,0 @@ -#usr/include/mad.h -#usr/lib/libmad.a -#usr/lib/libmad.la -usr/lib/libmad.so -usr/lib/libmad.so.0 -usr/lib/libmad.so.0.2.1 diff --git a/src/paks/libmad/depends.txt b/src/paks/libmad/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/libmad/install.sh b/src/paks/libmad/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/libmad/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/libmad/uninstall.sh b/src/paks/libmad/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/libmad/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/libogg/ROOTFILES b/src/paks/libogg/ROOTFILES deleted file mode 100644 index e904773abe..0000000000 --- a/src/paks/libogg/ROOTFILES +++ /dev/null @@ -1,86 +0,0 @@ -#usr/include/ogg -#usr/include/ogg/config_types.h -#usr/include/ogg/ogg.h -#usr/include/ogg/os_types.h -#usr/lib/libogg.a -#usr/lib/libogg.la -usr/lib/libogg.so -usr/lib/libogg.so.0 -usr/lib/libogg.so.0.5.3 -#usr/lib/pkgconfig/ogg.pc -#usr/share/aclocal/ogg.m4 -#usr/share/doc/libogg-1.1.3 -#usr/share/doc/libogg-1.1.3/framing.html -#usr/share/doc/libogg-1.1.3/index.html -#usr/share/doc/libogg-1.1.3/ogg -#usr/share/doc/libogg-1.1.3/ogg-multiplex.html -#usr/share/doc/libogg-1.1.3/ogg/bitpacking.html -#usr/share/doc/libogg-1.1.3/ogg/datastructures.html -#usr/share/doc/libogg-1.1.3/ogg/decoding.html -#usr/share/doc/libogg-1.1.3/ogg/encoding.html -#usr/share/doc/libogg-1.1.3/ogg/general.html -#usr/share/doc/libogg-1.1.3/ogg/index.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_packet.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_packet_clear.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_page.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_page_bos.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_page_checksum_set.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_page_continued.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_page_eos.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_page_granulepos.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_page_packets.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_page_pageno.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_page_serialno.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_page_version.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_clear.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_destroy.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_eos.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_flush.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_init.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_packetin.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_packetout.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_packetpeek.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_pagein.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_pageout.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_reset.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_reset_serialno.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_stream_state.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_sync_buffer.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_sync_clear.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_sync_destroy.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_sync_init.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_sync_pageout.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_sync_pageseek.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_sync_reset.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_sync_state.html -#usr/share/doc/libogg-1.1.3/ogg/ogg_sync_wrote.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_adv.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_adv1.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_bits.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_buffer.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_bytes.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_get_buffer.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_look.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_look1.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_read.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_read1.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_readinit.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_reset.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_write.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_writealign.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_writeclear.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_writecopy.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_writeinit.html -#usr/share/doc/libogg-1.1.3/ogg/oggpack_writetrunc.html -#usr/share/doc/libogg-1.1.3/ogg/overview.html -#usr/share/doc/libogg-1.1.3/ogg/reference.html -#usr/share/doc/libogg-1.1.3/ogg/style.css -#usr/share/doc/libogg-1.1.3/ogg/vorbis_comment.html -#usr/share/doc/libogg-1.1.3/ogg/vorbis_info.html -#usr/share/doc/libogg-1.1.3/oggstream.html -#usr/share/doc/libogg-1.1.3/rfc3533.txt -#usr/share/doc/libogg-1.1.3/rfc3534.txt -#usr/share/doc/libogg-1.1.3/stream.png -#usr/share/doc/libogg-1.1.3/vorbisword2.png -#usr/share/doc/libogg-1.1.3/white-ogg.png -#usr/share/doc/libogg-1.1.3/white-xifish.png diff --git a/src/paks/libogg/depends.txt b/src/paks/libogg/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/libogg/install.sh b/src/paks/libogg/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/libogg/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/libogg/uninstall.sh b/src/paks/libogg/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/libogg/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/libpri/ROOTFILES b/src/paks/libpri/ROOTFILES deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/libpri/depends.txt b/src/paks/libpri/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/libpri/install.sh b/src/paks/libpri/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/libpri/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/libpri/uninstall.sh b/src/paks/libpri/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/libpri/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/libtiff/ROOTFILES b/src/paks/libtiff/ROOTFILES deleted file mode 100644 index 87ac9f8648..0000000000 --- a/src/paks/libtiff/ROOTFILES +++ /dev/null @@ -1,235 +0,0 @@ -usr/bin/bmp2tiff -usr/bin/fax2ps -usr/bin/fax2tiff -usr/bin/gif2tiff -usr/bin/pal2rgb -usr/bin/ppm2tiff -usr/bin/ras2tiff -usr/bin/raw2tiff -usr/bin/rgb2ycbcr -usr/bin/thumbnail -usr/bin/tiff2bw -usr/bin/tiff2pdf -usr/bin/tiff2ps -usr/bin/tiff2rgba -usr/bin/tiffcmp -usr/bin/tiffcp -usr/bin/tiffdither -usr/bin/tiffdump -usr/bin/tiffinfo -usr/bin/tiffmedian -usr/bin/tiffset -usr/bin/tiffsplit -#usr/include/tiff.h -#usr/include/tiffconf.h -#usr/include/tiffio.h -#usr/include/tiffio.hxx -#usr/include/tiffvers.h -usr/lib/libtiff.a -usr/lib/libtiff.la -usr/lib/libtiff.so -usr/lib/libtiff.so.3 -usr/lib/libtiff.so.3.8.2 -usr/lib/libtiffxx.a -usr/lib/libtiffxx.la -usr/lib/libtiffxx.so -usr/lib/libtiffxx.so.3 -usr/lib/libtiffxx.so.3.8.2 -#usr/share/doc/tiff-3.8.2 -#usr/share/doc/tiff-3.8.2/COPYRIGHT -#usr/share/doc/tiff-3.8.2/ChangeLog -#usr/share/doc/tiff-3.8.2/README -#usr/share/doc/tiff-3.8.2/RELEASE-DATE -#usr/share/doc/tiff-3.8.2/TODO -#usr/share/doc/tiff-3.8.2/VERSION -#usr/share/doc/tiff-3.8.2/html -#usr/share/doc/tiff-3.8.2/html/TIFFTechNote2.html -#usr/share/doc/tiff-3.8.2/html/addingtags.html -#usr/share/doc/tiff-3.8.2/html/bugs.html -#usr/share/doc/tiff-3.8.2/html/build.html -#usr/share/doc/tiff-3.8.2/html/contrib.html -#usr/share/doc/tiff-3.8.2/html/document.html -#usr/share/doc/tiff-3.8.2/html/images -#usr/share/doc/tiff-3.8.2/html/images.html -#usr/share/doc/tiff-3.8.2/html/images/back.gif -#usr/share/doc/tiff-3.8.2/html/images/bali.jpg -#usr/share/doc/tiff-3.8.2/html/images/cat.gif -#usr/share/doc/tiff-3.8.2/html/images/cover.jpg -#usr/share/doc/tiff-3.8.2/html/images/cramps.gif -#usr/share/doc/tiff-3.8.2/html/images/dave.gif -#usr/share/doc/tiff-3.8.2/html/images/info.gif -#usr/share/doc/tiff-3.8.2/html/images/jello.jpg -#usr/share/doc/tiff-3.8.2/html/images/jim.gif -#usr/share/doc/tiff-3.8.2/html/images/note.gif -#usr/share/doc/tiff-3.8.2/html/images/oxford.gif -#usr/share/doc/tiff-3.8.2/html/images/quad.jpg -#usr/share/doc/tiff-3.8.2/html/images/ring.gif -#usr/share/doc/tiff-3.8.2/html/images/smallliz.jpg -#usr/share/doc/tiff-3.8.2/html/images/strike.gif -#usr/share/doc/tiff-3.8.2/html/images/warning.gif -#usr/share/doc/tiff-3.8.2/html/index.html -#usr/share/doc/tiff-3.8.2/html/internals.html -#usr/share/doc/tiff-3.8.2/html/intro.html -#usr/share/doc/tiff-3.8.2/html/libtiff.html -#usr/share/doc/tiff-3.8.2/html/man -#usr/share/doc/tiff-3.8.2/html/man/TIFFClose.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFDataWidth.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFError.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFFlush.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFGetField.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFOpen.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFPrintDirectory.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFRGBAImage.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFReadDirectory.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFReadEncodedStrip.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFReadEncodedTile.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFReadRGBAImage.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFReadRGBAStrip.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFReadRGBATile.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFReadRawStrip.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFReadRawTile.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFReadScanline.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFReadTile.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFSetDirectory.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFSetField.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFWarning.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFWriteDirectory.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFWriteEncodedStrip.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFWriteEncodedTile.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFWriteRawStrip.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFWriteRawTile.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFWriteScanline.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFWriteTile.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFbuffer.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFcodec.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFcolor.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFmemory.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFquery.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFsize.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFstrip.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFswab.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/TIFFtile.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/fax2ps.1.html -#usr/share/doc/tiff-3.8.2/html/man/fax2tiff.1.html -#usr/share/doc/tiff-3.8.2/html/man/gif2tiff.1.html -#usr/share/doc/tiff-3.8.2/html/man/index.html -#usr/share/doc/tiff-3.8.2/html/man/libtiff.3tiff.html -#usr/share/doc/tiff-3.8.2/html/man/pal2rgb.1.html -#usr/share/doc/tiff-3.8.2/html/man/ppm2tiff.1.html -#usr/share/doc/tiff-3.8.2/html/man/ras2tiff.1.html -#usr/share/doc/tiff-3.8.2/html/man/raw2tiff.1.html -#usr/share/doc/tiff-3.8.2/html/man/rgb2ycbcr.1.html -#usr/share/doc/tiff-3.8.2/html/man/sgi2tiff.1.html -#usr/share/doc/tiff-3.8.2/html/man/thumbnail.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiff2bw.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiff2pdf.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiff2ps.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiff2rgba.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiffcmp.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiffcp.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiffdither.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiffdump.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiffgt.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiffinfo.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiffmedian.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiffset.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiffsplit.1.html -#usr/share/doc/tiff-3.8.2/html/man/tiffsv.1.html -#usr/share/doc/tiff-3.8.2/html/misc.html -#usr/share/doc/tiff-3.8.2/html/support.html -#usr/share/doc/tiff-3.8.2/html/tools.html -#usr/share/doc/tiff-3.8.2/html/v3.4beta007.html -#usr/share/doc/tiff-3.8.2/html/v3.4beta016.html -#usr/share/doc/tiff-3.8.2/html/v3.4beta018.html -#usr/share/doc/tiff-3.8.2/html/v3.4beta024.html -#usr/share/doc/tiff-3.8.2/html/v3.4beta028.html -#usr/share/doc/tiff-3.8.2/html/v3.4beta029.html -#usr/share/doc/tiff-3.8.2/html/v3.4beta031.html -#usr/share/doc/tiff-3.8.2/html/v3.4beta032.html -#usr/share/doc/tiff-3.8.2/html/v3.4beta033.html -#usr/share/doc/tiff-3.8.2/html/v3.4beta034.html -#usr/share/doc/tiff-3.8.2/html/v3.4beta035.html -#usr/share/doc/tiff-3.8.2/html/v3.4beta036.html -#usr/share/doc/tiff-3.8.2/html/v3.5.1.html -#usr/share/doc/tiff-3.8.2/html/v3.5.2.html -#usr/share/doc/tiff-3.8.2/html/v3.5.3.html -#usr/share/doc/tiff-3.8.2/html/v3.5.4.html -#usr/share/doc/tiff-3.8.2/html/v3.5.5.html -#usr/share/doc/tiff-3.8.2/html/v3.5.6-beta.html -#usr/share/doc/tiff-3.8.2/html/v3.5.7.html -#usr/share/doc/tiff-3.8.2/html/v3.6.0.html -#usr/share/doc/tiff-3.8.2/html/v3.6.1.html -#usr/share/doc/tiff-3.8.2/html/v3.7.0.html -#usr/share/doc/tiff-3.8.2/html/v3.7.0alpha.html -#usr/share/doc/tiff-3.8.2/html/v3.7.0beta.html -#usr/share/doc/tiff-3.8.2/html/v3.7.0beta2.html -#usr/share/doc/tiff-3.8.2/html/v3.7.1.html -#usr/share/doc/tiff-3.8.2/html/v3.7.2.html -#usr/share/doc/tiff-3.8.2/html/v3.7.3.html -#usr/share/doc/tiff-3.8.2/html/v3.7.4.html -#usr/share/doc/tiff-3.8.2/html/v3.8.0.html -#usr/share/doc/tiff-3.8.2/html/v3.8.1.html -#usr/share/doc/tiff-3.8.2/html/v3.8.2.html -#usr/share/man/man1/bmp2tiff.1 -#usr/share/man/man1/fax2ps.1 -#usr/share/man/man1/fax2tiff.1 -#usr/share/man/man1/gif2tiff.1 -#usr/share/man/man1/pal2rgb.1 -#usr/share/man/man1/ppm2tiff.1 -#usr/share/man/man1/ras2tiff.1 -#usr/share/man/man1/raw2tiff.1 -#usr/share/man/man1/rgb2ycbcr.1 -#usr/share/man/man1/sgi2tiff.1 -#usr/share/man/man1/thumbnail.1 -#usr/share/man/man1/tiff2bw.1 -#usr/share/man/man1/tiff2pdf.1 -#usr/share/man/man1/tiff2ps.1 -#usr/share/man/man1/tiff2rgba.1 -#usr/share/man/man1/tiffcmp.1 -#usr/share/man/man1/tiffcp.1 -#usr/share/man/man1/tiffdither.1 -#usr/share/man/man1/tiffdump.1 -#usr/share/man/man1/tiffgt.1 -#usr/share/man/man1/tiffinfo.1 -#usr/share/man/man1/tiffmedian.1 -#usr/share/man/man1/tiffset.1 -#usr/share/man/man1/tiffsplit.1 -#usr/share/man/man1/tiffsv.1 -#usr/share/man/man3/TIFFClose.3tiff -#usr/share/man/man3/TIFFDataWidth.3tiff -#usr/share/man/man3/TIFFError.3tiff -#usr/share/man/man3/TIFFFlush.3tiff -#usr/share/man/man3/TIFFGetField.3tiff -#usr/share/man/man3/TIFFOpen.3tiff -#usr/share/man/man3/TIFFPrintDirectory.3tiff -#usr/share/man/man3/TIFFRGBAImage.3tiff -#usr/share/man/man3/TIFFReadDirectory.3tiff -#usr/share/man/man3/TIFFReadEncodedStrip.3tiff -#usr/share/man/man3/TIFFReadEncodedTile.3tiff -#usr/share/man/man3/TIFFReadRGBAImage.3tiff -#usr/share/man/man3/TIFFReadRGBAStrip.3tiff -#usr/share/man/man3/TIFFReadRGBATile.3tiff -#usr/share/man/man3/TIFFReadRawStrip.3tiff -#usr/share/man/man3/TIFFReadRawTile.3tiff -#usr/share/man/man3/TIFFReadScanline.3tiff -#usr/share/man/man3/TIFFReadTile.3tiff -#usr/share/man/man3/TIFFSetDirectory.3tiff -#usr/share/man/man3/TIFFSetField.3tiff -#usr/share/man/man3/TIFFWarning.3tiff -#usr/share/man/man3/TIFFWriteDirectory.3tiff -#usr/share/man/man3/TIFFWriteEncodedStrip.3tiff -#usr/share/man/man3/TIFFWriteEncodedTile.3tiff -#usr/share/man/man3/TIFFWriteRawStrip.3tiff -#usr/share/man/man3/TIFFWriteRawTile.3tiff -#usr/share/man/man3/TIFFWriteScanline.3tiff -#usr/share/man/man3/TIFFWriteTile.3tiff -#usr/share/man/man3/TIFFbuffer.3tiff -#usr/share/man/man3/TIFFcodec.3tiff -#usr/share/man/man3/TIFFcolor.3tiff -#usr/share/man/man3/TIFFmemory.3tiff -#usr/share/man/man3/TIFFquery.3tiff -#usr/share/man/man3/TIFFsize.3tiff -#usr/share/man/man3/TIFFstrip.3tiff -#usr/share/man/man3/TIFFswab.3tiff -#usr/share/man/man3/TIFFtile.3tiff -#usr/share/man/man3/libtiff.3tiff diff --git a/src/paks/libtiff/depends.txt b/src/paks/libtiff/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/libtiff/install.sh b/src/paks/libtiff/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/libtiff/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/libtiff/uninstall.sh b/src/paks/libtiff/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/libtiff/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/libvorbis/ROOTFILES b/src/paks/libvorbis/ROOTFILES deleted file mode 100644 index 5f69cdb6d9..0000000000 --- a/src/paks/libvorbis/ROOTFILES +++ /dev/null @@ -1,130 +0,0 @@ -#usr/include/vorbis -#usr/include/vorbis/codec.h -#usr/include/vorbis/vorbisenc.h -#usr/include/vorbis/vorbisfile.h -#usr/lib/libvorbis.a -#usr/lib/libvorbis.la -usr/lib/libvorbis.so -usr/lib/libvorbis.so.0 -usr/lib/libvorbis.so.0.3.1 -#usr/lib/libvorbisenc.a -#usr/lib/libvorbisenc.la -usr/lib/libvorbisenc.so -usr/lib/libvorbisenc.so.2 -usr/lib/libvorbisenc.so.2.0.2 -#usr/lib/libvorbisfile.a -#usr/lib/libvorbisfile.la -usr/lib/libvorbisfile.so -usr/lib/libvorbisfile.so.3 -usr/lib/libvorbisfile.so.3.1.1 -#usr/lib/pkgconfig/vorbis.pc -#usr/lib/pkgconfig/vorbisenc.pc -#usr/lib/pkgconfig/vorbisfile.pc -#usr/share/aclocal/vorbis.m4 -#usr/share/doc/libvorbis-1.1.2 -#usr/share/doc/libvorbis-1.1.2/Vorbis_I_spec.html -#usr/share/doc/libvorbis-1.1.2/Vorbis_I_spec.pdf -#usr/share/doc/libvorbis-1.1.2/components.png -#usr/share/doc/libvorbis-1.1.2/draft-kerr-avt-vorbis-rtp-03.txt -#usr/share/doc/libvorbis-1.1.2/eightphase.png -#usr/share/doc/libvorbis-1.1.2/evenlsp.png -#usr/share/doc/libvorbis-1.1.2/floor1-1.png -#usr/share/doc/libvorbis-1.1.2/floor1-2.png -#usr/share/doc/libvorbis-1.1.2/floor1-3.png -#usr/share/doc/libvorbis-1.1.2/floor1-4.png -#usr/share/doc/libvorbis-1.1.2/floor1_inverse_dB_table.html -#usr/share/doc/libvorbis-1.1.2/floorval.png -#usr/share/doc/libvorbis-1.1.2/fourphase.png -#usr/share/doc/libvorbis-1.1.2/framing.html -#usr/share/doc/libvorbis-1.1.2/helper.html -#usr/share/doc/libvorbis-1.1.2/hufftree-under.png -#usr/share/doc/libvorbis-1.1.2/hufftree.png -#usr/share/doc/libvorbis-1.1.2/index.html -#usr/share/doc/libvorbis-1.1.2/lspmap.png -#usr/share/doc/libvorbis-1.1.2/oddlsp.png -#usr/share/doc/libvorbis-1.1.2/oggstream.html -#usr/share/doc/libvorbis-1.1.2/programming.html -#usr/share/doc/libvorbis-1.1.2/residue-pack.png -#usr/share/doc/libvorbis-1.1.2/residue2.png -#usr/share/doc/libvorbis-1.1.2/squarepolar.png -#usr/share/doc/libvorbis-1.1.2/stereo.html -#usr/share/doc/libvorbis-1.1.2/stream.png -#usr/share/doc/libvorbis-1.1.2/v-comment.html -#usr/share/doc/libvorbis-1.1.2/vorbis-clip.txt -#usr/share/doc/libvorbis-1.1.2/vorbis-errors.txt -#usr/share/doc/libvorbis-1.1.2/vorbis-fidelity.html -#usr/share/doc/libvorbis-1.1.2/vorbis.html -#usr/share/doc/libvorbis-1.1.2/vorbisenc -#usr/share/doc/libvorbis-1.1.2/vorbisenc/index.html -#usr/share/doc/libvorbis-1.1.2/vorbisenc/overview.html -#usr/share/doc/libvorbis-1.1.2/vorbisenc/reference.html -#usr/share/doc/libvorbis-1.1.2/vorbisenc/style.css -#usr/share/doc/libvorbis-1.1.2/vorbisenc/vorbis_encode_ctl.html -#usr/share/doc/libvorbis-1.1.2/vorbisenc/vorbis_encode_init.html -#usr/share/doc/libvorbis-1.1.2/vorbisenc/vorbis_encode_init_vbr.html -#usr/share/doc/libvorbis-1.1.2/vorbisenc/vorbis_info.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile -#usr/share/doc/libvorbis-1.1.2/vorbisfile/OggVorbis_File.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/callbacks.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/chaining_example_c.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/chainingexample.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/crosslap.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/datastructures.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/decoding.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/example.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/exampleindex.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/fileinfo.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/index.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/initialization.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_bitrate.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_bitrate_instant.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_callbacks.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_clear.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_comment.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_crosslap.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_info.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_open.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_open_callbacks.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_pcm_seek.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_pcm_seek_lap.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_pcm_seek_page.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_pcm_seek_page_lap.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_pcm_tell.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_pcm_total.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_raw_seek.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_raw_seek_lap.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_raw_tell.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_raw_total.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_read.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_read_float.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_seekable.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_serialnumber.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_streams.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_test.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_test_callbacks.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_test_open.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_time_seek.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_time_seek_lap.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_time_seek_page.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_time_seek_page_lap.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_time_tell.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/ov_time_total.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/overview.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/reference.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/return.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/seekexample.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/seeking.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/seeking_example_c.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/seeking_test_c.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/seekingexample.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/style.css -#usr/share/doc/libvorbis-1.1.2/vorbisfile/threads.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/vorbis_comment.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/vorbis_info.html -#usr/share/doc/libvorbis-1.1.2/vorbisfile/vorbisfile_example_c.html -#usr/share/doc/libvorbis-1.1.2/vorbisword2.png -#usr/share/doc/libvorbis-1.1.2/wait.png -#usr/share/doc/libvorbis-1.1.2/white-ogg.png -#usr/share/doc/libvorbis-1.1.2/white-xifish.png -#usr/share/doc/libvorbis-1.1.2/window1.png -#usr/share/doc/libvorbis-1.1.2/window2.png diff --git a/src/paks/libvorbis/depends.txt b/src/paks/libvorbis/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/libvorbis/install.sh b/src/paks/libvorbis/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/libvorbis/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/libvorbis/uninstall.sh b/src/paks/libvorbis/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/libvorbis/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/lynx/ROOTFILES b/src/paks/lynx/ROOTFILES deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/lynx/depends.txt b/src/paks/lynx/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/lynx/install.sh b/src/paks/lynx/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/lynx/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/lynx/uninstall.sh b/src/paks/lynx/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/lynx/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/mailx/ROOTFILES b/src/paks/mailx/ROOTFILES deleted file mode 100644 index c3a57b6350..0000000000 --- a/src/paks/mailx/ROOTFILES +++ /dev/null @@ -1,5 +0,0 @@ -etc/nail.rc -usr/bin/mail -usr/bin/mailx -usr/bin/nail -#usr/share/man/man1/mailx.1 \ No newline at end of file diff --git a/src/paks/mailx/depends.txt b/src/paks/mailx/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/mailx/install.sh b/src/paks/mailx/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/mailx/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/mailx/uninstall.sh b/src/paks/mailx/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/mailx/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/mldonkey/ROOTFILES b/src/paks/mldonkey/ROOTFILES deleted file mode 100644 index 6b80f90c65..0000000000 --- a/src/paks/mldonkey/ROOTFILES +++ /dev/null @@ -1,3 +0,0 @@ -opt/mldonkey -opt/mldonkey/.mldonkey -var/log/mldonkey diff --git a/src/paks/mldonkey/depends.txt b/src/paks/mldonkey/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/mldonkey/install.sh b/src/paks/mldonkey/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/mldonkey/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/mldonkey/uninstall.sh b/src/paks/mldonkey/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/mldonkey/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/mpeg2dec/ROOTFILES b/src/paks/mpeg2dec/ROOTFILES deleted file mode 100644 index 98ca313707..0000000000 --- a/src/paks/mpeg2dec/ROOTFILES +++ /dev/null @@ -1,20 +0,0 @@ -#usr/bin/corrupt_mpeg2 -#usr/bin/extract_mpeg2 -usr/bin/mpeg2dec -#usr/include/mpeg2dec -#usr/include/mpeg2dec/mpeg2.h -#usr/include/mpeg2dec/mpeg2convert.h -#usr/lib/libmpeg2.a -#usr/lib/libmpeg2.la -usr/lib/libmpeg2.so -usr/lib/libmpeg2.so.0 -usr/lib/libmpeg2.so.0.0.0 -#usr/lib/libmpeg2convert.a -#usr/lib/libmpeg2convert.la -usr/lib/libmpeg2convert.so -usr/lib/libmpeg2convert.so.0 -usr/lib/libmpeg2convert.so.0.0.0 -#usr/lib/pkgconfig/libmpeg2.pc -#usr/lib/pkgconfig/libmpeg2convert.pc -#usr/share/man/man1/extract_mpeg2.1 -#usr/share/man/man1/mpeg2dec.1 diff --git a/src/paks/mpeg2dec/depends.txt b/src/paks/mpeg2dec/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/mpeg2dec/install.sh b/src/paks/mpeg2dec/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/mpeg2dec/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/mpeg2dec/uninstall.sh b/src/paks/mpeg2dec/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/mpeg2dec/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/mpg123/ROOTFILES b/src/paks/mpg123/ROOTFILES deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/mpg123/depends.txt b/src/paks/mpg123/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/mpg123/install.sh b/src/paks/mpg123/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/mpg123/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/mpg123/uninstall.sh b/src/paks/mpg123/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/mpg123/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/nagios/ROOTFILES b/src/paks/nagios/ROOTFILES deleted file mode 100644 index b53fbbbe44..0000000000 --- a/src/paks/nagios/ROOTFILES +++ /dev/null @@ -1,351 +0,0 @@ -usr/nagios -#usr/nagios/bin -#usr/nagios/bin/nagios -#usr/nagios/bin/nagiostats -#usr/nagios/sbin -#usr/nagios/sbin/avail.cgi -#usr/nagios/sbin/cmd.cgi -#usr/nagios/sbin/config.cgi -#usr/nagios/sbin/extinfo.cgi -#usr/nagios/sbin/histogram.cgi -#usr/nagios/sbin/history.cgi -#usr/nagios/sbin/notifications.cgi -#usr/nagios/sbin/outages.cgi -#usr/nagios/sbin/showlog.cgi -#usr/nagios/sbin/status.cgi -#usr/nagios/sbin/statusmap.cgi -#usr/nagios/sbin/statuswml.cgi -#usr/nagios/sbin/statuswrl.cgi -#usr/nagios/sbin/summary.cgi -#usr/nagios/sbin/tac.cgi -#usr/nagios/sbin/trends.cgi -#usr/nagios/share -#usr/nagios/share/contexthelp -#usr/nagios/share/contexthelp/A1.html -#usr/nagios/share/contexthelp/A2.html -#usr/nagios/share/contexthelp/A3.html -#usr/nagios/share/contexthelp/A4.html -#usr/nagios/share/contexthelp/A5.html -#usr/nagios/share/contexthelp/A6.html -#usr/nagios/share/contexthelp/A7.html -#usr/nagios/share/contexthelp/B1.html -#usr/nagios/share/contexthelp/C1.html -#usr/nagios/share/contexthelp/D1.html -#usr/nagios/share/contexthelp/E1.html -#usr/nagios/share/contexthelp/F1.html -#usr/nagios/share/contexthelp/G1.html -#usr/nagios/share/contexthelp/G2.html -#usr/nagios/share/contexthelp/G3.html -#usr/nagios/share/contexthelp/G4.html -#usr/nagios/share/contexthelp/G5.html -#usr/nagios/share/contexthelp/G6.html -#usr/nagios/share/contexthelp/H1.html -#usr/nagios/share/contexthelp/H2.html -#usr/nagios/share/contexthelp/H3.html -#usr/nagios/share/contexthelp/H4.html -#usr/nagios/share/contexthelp/H5.html -#usr/nagios/share/contexthelp/H6.html -#usr/nagios/share/contexthelp/H7.html -#usr/nagios/share/contexthelp/H8.html -#usr/nagios/share/contexthelp/I1.html -#usr/nagios/share/contexthelp/I2.html -#usr/nagios/share/contexthelp/I3.html -#usr/nagios/share/contexthelp/I4.html -#usr/nagios/share/contexthelp/I5.html -#usr/nagios/share/contexthelp/I6.html -#usr/nagios/share/contexthelp/I7.html -#usr/nagios/share/contexthelp/I8.html -#usr/nagios/share/contexthelp/I9.html -#usr/nagios/share/contexthelp/J1.html -#usr/nagios/share/contexthelp/K1.html -#usr/nagios/share/contexthelp/L1.html -#usr/nagios/share/contexthelp/L10.html -#usr/nagios/share/contexthelp/L11.html -#usr/nagios/share/contexthelp/L12.html -#usr/nagios/share/contexthelp/L13.html -#usr/nagios/share/contexthelp/L2.html -#usr/nagios/share/contexthelp/L3.html -#usr/nagios/share/contexthelp/L4.html -#usr/nagios/share/contexthelp/L5.html -#usr/nagios/share/contexthelp/L6.html -#usr/nagios/share/contexthelp/L7.html -#usr/nagios/share/contexthelp/L8.html -#usr/nagios/share/contexthelp/L9.html -#usr/nagios/share/contexthelp/M1.html -#usr/nagios/share/contexthelp/M2.html -#usr/nagios/share/contexthelp/M3.html -#usr/nagios/share/contexthelp/M4.html -#usr/nagios/share/contexthelp/M5.html -#usr/nagios/share/contexthelp/M6.html -#usr/nagios/share/contexthelp/N1.html -#usr/nagios/share/contexthelp/N2.html -#usr/nagios/share/contexthelp/N3.html -#usr/nagios/share/contexthelp/N4.html -#usr/nagios/share/contexthelp/N5.html -#usr/nagios/share/contexthelp/N6.html -#usr/nagios/share/contexthelp/N7.html -#usr/nagios/share/docs -#usr/nagios/share/docs/about.html -#usr/nagios/share/docs/adaptive.html -#usr/nagios/share/docs/addons.html -#usr/nagios/share/docs/beginners.html -#usr/nagios/share/docs/cgiauth.html -#usr/nagios/share/docs/cgiincludes.html -#usr/nagios/share/docs/cgis.html -#usr/nagios/share/docs/checkscheduling.html -#usr/nagios/share/docs/clusters.html -#usr/nagios/share/docs/commandfile.html -#usr/nagios/share/docs/config.html -#usr/nagios/share/docs/configcgi.html -#usr/nagios/share/docs/configextinfo.html -#usr/nagios/share/docs/configmain.html -#usr/nagios/share/docs/configobject.html -#usr/nagios/share/docs/dependencies.html -#usr/nagios/share/docs/distributed.html -#usr/nagios/share/docs/downtime.html -#usr/nagios/share/docs/embeddedperl.html -#usr/nagios/share/docs/escalations.html -#usr/nagios/share/docs/eventhandlers.html -#usr/nagios/share/docs/extcommands.html -#usr/nagios/share/docs/flapping.html -#usr/nagios/share/docs/freshness.html -#usr/nagios/share/docs/funstuff.html -#usr/nagios/share/docs/images -#usr/nagios/share/docs/images/activepassive.png -#usr/nagios/share/docs/images/cgi-avail-a.png -#usr/nagios/share/docs/images/cgi-avail-b.png -#usr/nagios/share/docs/images/cgi-cmd.png -#usr/nagios/share/docs/images/cgi-config.png -#usr/nagios/share/docs/images/cgi-extinfo-a.png -#usr/nagios/share/docs/images/cgi-extinfo-b.png -#usr/nagios/share/docs/images/cgi-extinfo-c.png -#usr/nagios/share/docs/images/cgi-extinfo-d.png -#usr/nagios/share/docs/images/cgi-histogram.png -#usr/nagios/share/docs/images/cgi-history.png -#usr/nagios/share/docs/images/cgi-notifications.png -#usr/nagios/share/docs/images/cgi-outages.png -#usr/nagios/share/docs/images/cgi-showlog.png -#usr/nagios/share/docs/images/cgi-status-a.png -#usr/nagios/share/docs/images/cgi-status-b.png -#usr/nagios/share/docs/images/cgi-status-c.png -#usr/nagios/share/docs/images/cgi-status-d.png -#usr/nagios/share/docs/images/cgi-statusmap.png -#usr/nagios/share/docs/images/cgi-statuswml.png -#usr/nagios/share/docs/images/cgi-statuswrl.png -#usr/nagios/share/docs/images/cgi-summary.png -#usr/nagios/share/docs/images/cgi-tac.png -#usr/nagios/share/docs/images/cgi-trends.png -#usr/nagios/share/docs/images/checktiming.png -#usr/nagios/share/docs/images/distributed.png -#usr/nagios/share/docs/images/host-dependencies.png -#usr/nagios/share/docs/images/indirecthostcheck.png -#usr/nagios/share/docs/images/indirectsvccheck.png -#usr/nagios/share/docs/images/indirectsvccheck2.png -#usr/nagios/share/docs/images/interleaved1.png -#usr/nagios/share/docs/images/interleaved2.png -#usr/nagios/share/docs/images/interleaved3.png -#usr/nagios/share/docs/images/logofullsize.png -#usr/nagios/share/docs/images/mrtgstats.png -#usr/nagios/share/docs/images/network-heirarchy.png -#usr/nagios/share/docs/images/network-outage1.png -#usr/nagios/share/docs/images/network-outage2.png -#usr/nagios/share/docs/images/noninterleaved1.png -#usr/nagios/share/docs/images/noninterleaved2.png -#usr/nagios/share/docs/images/physical-network.png -#usr/nagios/share/docs/images/plugintheory.png -#usr/nagios/share/docs/images/redudancy.png -#usr/nagios/share/docs/images/redundancy.png -#usr/nagios/share/docs/images/service-dependencies.png -#usr/nagios/share/docs/images/statetransitions.png -#usr/nagios/share/docs/images/statetransitions2.png -#usr/nagios/share/docs/index.html -#usr/nagios/share/docs/indirectchecks.html -#usr/nagios/share/docs/installing.html -#usr/nagios/share/docs/installweb.html -#usr/nagios/share/docs/int-snmptrap.html -#usr/nagios/share/docs/int-tcpwrappers.html -#usr/nagios/share/docs/macros.html -#usr/nagios/share/docs/nagiostats.html -#usr/nagios/share/docs/networkoutages.html -#usr/nagios/share/docs/networkreachability.html -#usr/nagios/share/docs/notifications.html -#usr/nagios/share/docs/parallelization.html -#usr/nagios/share/docs/passivechecks.html -#usr/nagios/share/docs/perfdata.html -#usr/nagios/share/docs/plugins.html -#usr/nagios/share/docs/plugintheory.html -#usr/nagios/share/docs/redundancy.html -#usr/nagios/share/docs/robots.txt -#usr/nagios/share/docs/security.html -#usr/nagios/share/docs/stalking.html -#usr/nagios/share/docs/starting.html -#usr/nagios/share/docs/statetypes.html -#usr/nagios/share/docs/stoprestart.html -#usr/nagios/share/docs/templaterecursion.html -#usr/nagios/share/docs/templatetricks.html -#usr/nagios/share/docs/timeperiods.html -#usr/nagios/share/docs/toc.html -#usr/nagios/share/docs/tuning.html -#usr/nagios/share/docs/verifyconfig.html -#usr/nagios/share/docs/volatileservices.html -#usr/nagios/share/docs/whatsnew.html -#usr/nagios/share/docs/xodtemplate.html -#usr/nagios/share/images -#usr/nagios/share/images/ack.gif -#usr/nagios/share/images/action.gif -#usr/nagios/share/images/command.png -#usr/nagios/share/images/comment.gif -#usr/nagios/share/images/contexthelp1.gif -#usr/nagios/share/images/contexthelp2.gif -#usr/nagios/share/images/critical.png -#usr/nagios/share/images/delay.gif -#usr/nagios/share/images/delete.gif -#usr/nagios/share/images/detail.gif -#usr/nagios/share/images/disabled.gif -#usr/nagios/share/images/down.gif -#usr/nagios/share/images/downtime.gif -#usr/nagios/share/images/empty.gif -#usr/nagios/share/images/enabled.gif -#usr/nagios/share/images/extinfo.gif -#usr/nagios/share/images/flapping.gif -#usr/nagios/share/images/greendot.gif -#usr/nagios/share/images/histogram.png -#usr/nagios/share/images/history.gif -#usr/nagios/share/images/hostevent.gif -#usr/nagios/share/images/info.png -#usr/nagios/share/images/left.gif -#usr/nagios/share/images/logofullsize.jpg -#usr/nagios/share/images/logos -#usr/nagios/share/images/logos/nagios.gd2 -#usr/nagios/share/images/logos/nagios.gif -#usr/nagios/share/images/logos/nagiosvrml.png -#usr/nagios/share/images/logos/unknown.gd2 -#usr/nagios/share/images/logos/unknown.gif -#usr/nagios/share/images/logrotate.png -#usr/nagios/share/images/ndisabled.gif -#usr/nagios/share/images/noack.gif -#usr/nagios/share/images/notes.gif -#usr/nagios/share/images/notify.gif -#usr/nagios/share/images/orangedot.gif -#usr/nagios/share/images/passiveonly.gif -#usr/nagios/share/images/recovery.png -#usr/nagios/share/images/redudancy.png -#usr/nagios/share/images/redundancy.png -#usr/nagios/share/images/restart.gif -#usr/nagios/share/images/right.gif -#usr/nagios/share/images/sblogo.jpg -#usr/nagios/share/images/serviceevent.gif -#usr/nagios/share/images/start.gif -#usr/nagios/share/images/status.gif -#usr/nagios/share/images/status2.gif -#usr/nagios/share/images/status3.gif -#usr/nagios/share/images/status4.gif -#usr/nagios/share/images/stop.gif -#usr/nagios/share/images/tacdisabled.jpg -#usr/nagios/share/images/tacdisabled.png -#usr/nagios/share/images/tacenabled.jpg -#usr/nagios/share/images/tacenabled.png -#usr/nagios/share/images/thermcrit.png -#usr/nagios/share/images/thermok.png -#usr/nagios/share/images/thermwarn.png -#usr/nagios/share/images/trends.gif -#usr/nagios/share/images/trendshost.png -#usr/nagios/share/images/trendssvc.png -#usr/nagios/share/images/unknown.png -#usr/nagios/share/images/up.gif -#usr/nagios/share/images/warning.png -#usr/nagios/share/images/weblogo1.png -#usr/nagios/share/images/zoom1.gif -#usr/nagios/share/images/zoom2.gif -#usr/nagios/share/index.html -#usr/nagios/share/main.html -#usr/nagios/share/media -#usr/nagios/share/media/critical.wav -#usr/nagios/share/media/hostdown.wav -#usr/nagios/share/media/warning.wav -#usr/nagios/share/robots.txt -#usr/nagios/share/side.html -#usr/nagios/share/ssi -#usr/nagios/share/stylesheets -#usr/nagios/share/stylesheets/avail.css -#usr/nagios/share/stylesheets/checksanity.css -#usr/nagios/share/stylesheets/cmd.css -#usr/nagios/share/stylesheets/common.css -#usr/nagios/share/stylesheets/config.css -#usr/nagios/share/stylesheets/extinfo.css -#usr/nagios/share/stylesheets/histogram.css -#usr/nagios/share/stylesheets/history.css -#usr/nagios/share/stylesheets/ministatus.css -#usr/nagios/share/stylesheets/notifications.css -#usr/nagios/share/stylesheets/outages.css -#usr/nagios/share/stylesheets/showlog.css -#usr/nagios/share/stylesheets/status.css -#usr/nagios/share/stylesheets/statusmap.css -#usr/nagios/share/stylesheets/summary.css -#usr/nagios/share/stylesheets/tac.css -#usr/nagios/share/stylesheets/trends.css -#usr/nagios/var -#usr/nagios/var/archives -#usr/nagios/libexec -#usr/nagios/libexec/check_breeze -#usr/nagios/libexec/check_by_ssh -#usr/nagios/libexec/check_clamd -#usr/nagios/libexec/check_dhcp -#usr/nagios/libexec/check_disk -#usr/nagios/libexec/check_disk_smb -#usr/nagios/libexec/check_dummy -#usr/nagios/libexec/check_file_age -#usr/nagios/libexec/check_flexlm -#usr/nagios/libexec/check_ftp -#usr/nagios/libexec/check_http -#usr/nagios/libexec/check_icmp -#usr/nagios/libexec/check_ifoperstatus -#usr/nagios/libexec/check_ifstatus -#usr/nagios/libexec/check_imap -#usr/nagios/libexec/check_ircd -#usr/nagios/libexec/check_jabber -#usr/nagios/libexec/check_ldap -#usr/nagios/libexec/check_ldaps -#usr/nagios/libexec/check_load -#usr/nagios/libexec/check_log -#usr/nagios/libexec/check_mailq -#usr/nagios/libexec/check_mrtg -#usr/nagios/libexec/check_mrtgtraf -#usr/nagios/libexec/check_nagios -#usr/nagios/libexec/check_nntp -#usr/nagios/libexec/check_nntps -#usr/nagios/libexec/check_nt -#usr/nagios/libexec/check_ntp -#usr/nagios/libexec/check_nwstat -#usr/nagios/libexec/check_oracle -#usr/nagios/libexec/check_overcr -#usr/nagios/libexec/check_ping -#usr/nagios/libexec/check_pop -#usr/nagios/libexec/check_procs -#usr/nagios/libexec/check_real -#usr/nagios/libexec/check_rpc -#usr/nagios/libexec/check_sensors -#usr/nagios/libexec/check_simap -#usr/nagios/libexec/check_smtp -#usr/nagios/libexec/check_spop -#usr/nagios/libexec/check_ssh -#usr/nagios/libexec/check_ssmtp -#usr/nagios/libexec/check_swap -#usr/nagios/libexec/check_tcp -#usr/nagios/libexec/check_time -#usr/nagios/libexec/check_udp -#usr/nagios/libexec/check_udp2 -#usr/nagios/libexec/check_ups -#usr/nagios/libexec/check_users -#usr/nagios/libexec/check_wave -#usr/nagios/libexec/negate -#usr/nagios/libexec/urlize -#usr/nagios/libexec/utils.pm -#usr/nagios/libexec/utils.sh -#usr/nagios/share/locale -#usr/nagios/share/locale/de -#usr/nagios/share/locale/de/LC_MESSAGES -#usr/nagios/share/locale/de/LC_MESSAGES/nagios-plugins.mo -#usr/nagios/share/locale/fr -#usr/nagios/share/locale/fr/LC_MESSAGES -#usr/nagios/share/locale/fr/LC_MESSAGES/nagios-plugins.mo diff --git a/src/paks/nagios/depends.txt b/src/paks/nagios/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/nagios/install.sh b/src/paks/nagios/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/nagios/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/nagios/uninstall.sh b/src/paks/nagios/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/nagios/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/ncftp/ROOTFILES b/src/paks/ncftp/ROOTFILES deleted file mode 100644 index 9543ada221..0000000000 --- a/src/paks/ncftp/ROOTFILES +++ /dev/null @@ -1,17 +0,0 @@ -usr/bin/ncftp -usr/bin/ncftpbatch -usr/bin/ncftpbookmarks -usr/bin/ncftpget -usr/bin/ncftpls -usr/bin/ncftpput -usr/bin/ncftpspooler -#usr/include/ncftp.h -#usr/include/ncftp_errno.h -usr/lib/libncftp.so -usr/lib/libncftp.so.2 -#usr/share/man/man1/ncftp.1 -#usr/share/man/man1/ncftpbatch.1 -#usr/share/man/man1/ncftpget.1 -#usr/share/man/man1/ncftpls.1 -#usr/share/man/man1/ncftpput.1 -#usr/share/man/man1/ncftpspooler.1 diff --git a/src/paks/ncftp/depends.txt b/src/paks/ncftp/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/ncftp/install.sh b/src/paks/ncftp/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/ncftp/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/ncftp/uninstall.sh b/src/paks/ncftp/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/ncftp/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/nfs/ROOTFILES b/src/paks/nfs/ROOTFILES deleted file mode 100644 index a02ca2865a..0000000000 --- a/src/paks/nfs/ROOTFILES +++ /dev/null @@ -1,38 +0,0 @@ -usr/sbin/exportfs -usr/sbin/nfsstat -usr/sbin/nhfsgraph -usr/sbin/nhfsnums -usr/sbin/nhfsrun -usr/sbin/nhfsstone -usr/sbin/rpc.lockd -usr/sbin/rpc.mountd -usr/sbin/rpc.nfsd -usr/sbin/rpc.rquotad -usr/sbin/rpc.statd -usr/sbin/showmount -#usr/share/man/man5/exports.5 -#usr/share/man/man7/nfsd.7 -#usr/share/man/man8/exportfs.8 -#usr/share/man/man8/lockd.8 -#usr/share/man/man8/mountd.8 -#usr/share/man/man8/nfsd.8 -#usr/share/man/man8/nfsstat.8 -#usr/share/man/man8/nhfsgraph.8 -#usr/share/man/man8/nhfsnums.8 -#usr/share/man/man8/nhfsrun.8 -#usr/share/man/man8/nhfsstone.8 -#usr/share/man/man8/rpc.lockd.8 -#usr/share/man/man8/rpc.mountd.8 -#usr/share/man/man8/rpc.nfsd.8 -#usr/share/man/man8/rpc.rquotad.8 -#usr/share/man/man8/rpc.statd.8 -#usr/share/man/man8/rquotad.8 -#usr/share/man/man8/showmount.8 -#usr/share/man/man8/statd.8 -#var/lib/nfs -var/lib/nfs/etab -var/lib/nfs/rmtab -var/lib/nfs/sm -var/lib/nfs/sm.bak -var/lib/nfs/state -var/lib/nfs/xtab diff --git a/src/paks/nfs/depends.txt b/src/paks/nfs/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/nfs/install.sh b/src/paks/nfs/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/nfs/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/nfs/uninstall.sh b/src/paks/nfs/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/nfs/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/nmap/ROOTFILES b/src/paks/nmap/ROOTFILES deleted file mode 100644 index 06c73b3458..0000000000 --- a/src/paks/nmap/ROOTFILES +++ /dev/null @@ -1,11 +0,0 @@ -usr/bin/nmap -#usr/share/man/man1/nmap.1 -#usr/share/nmap -usr/share/nmap/nmap-mac-prefixes -usr/share/nmap/nmap-os-fingerprints -usr/share/nmap/nmap-protocols -usr/share/nmap/nmap-rpc -usr/share/nmap/nmap-service-probes -usr/share/nmap/nmap-services -usr/share/nmap/nmap.dtd -usr/share/nmap/nmap.xsl diff --git a/src/paks/nmap/depends.txt b/src/paks/nmap/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/nmap/install.sh b/src/paks/nmap/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/nmap/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/nmap/uninstall.sh b/src/paks/nmap/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/nmap/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/ntop/ROOTFILES b/src/paks/ntop/ROOTFILES deleted file mode 100644 index cffb1ad16b..0000000000 --- a/src/paks/ntop/ROOTFILES +++ /dev/null @@ -1,388 +0,0 @@ -etc/ntop -etc/ntop/etter.finger.os.gz -etc/ntop/ntop-cert.pem -etc/ntop/oui.txt.gz -etc/ntop/p2c.opt.table.gz -etc/ntop/specialMAC.txt.gz -usr/bin/ntop -usr/lib/libicmpPlugin-3.2.so -#usr/lib/libicmpPlugin.a -usr/lib/libicmpPlugin.so -usr/lib/liblastSeenPlugin-3.2.so -#usr/lib/liblastSeenPlugin.a -usr/lib/liblastSeenPlugin.so -usr/lib/libmyrrd-3.2.so -#usr/lib/libmyrrd.a -#usr/lib/libmyrrd.la -usr/lib/libmyrrd.so -usr/lib/libnetflowPlugin-3.2.so -#usr/lib/libnetflowPlugin.a -usr/lib/libnetflowPlugin.so -usr/lib/libntop-3.2.so -#usr/lib/libntop.a -usr/lib/libntop.la -usr/lib/libntop.so -usr/lib/libntopreport-3.2.so -#usr/lib/libntopreport.a -#usr/lib/libntopreport.la -usr/lib/libntopreport.so -usr/lib/libpdaPlugin-3.2.so -#usr/lib/libpdaPlugin.a -usr/lib/libpdaPlugin.so -usr/lib/librrdPlugin-3.2.so -#usr/lib/librrdPlugin.a -usr/lib/librrdPlugin.so -usr/lib/libsflowPlugin-3.2.so -#usr/lib/libsflowPlugin.a -usr/lib/libsflowPlugin.so -usr/lib/libsnmpPlugin-3.2.so -#usr/lib/libsnmpPlugin.a -usr/lib/libsnmpPlugin.so -usr/lib/libxmldumpPlugin-3.2.so -#usr/lib/libxmldumpPlugin.a -usr/lib/libxmldumpPlugin.so -usr/lib/ntop -usr/lib/ntop/plugins -usr/lib/ntop/plugins/icmpPlugin.so -usr/lib/ntop/plugins/lastSeenPlugin.so -usr/lib/ntop/plugins/netflowPlugin.so -usr/lib/ntop/plugins/pdaPlugin.so -usr/lib/ntop/plugins/rrdPlugin.so -usr/lib/ntop/plugins/sflowPlugin.so -usr/lib/ntop/plugins/snmpPlugin.so -usr/lib/ntop/plugins/xmldumpPlugin.so -usr/lib/plugins -#usr/share/man/man8/ntop.8 -usr/share/ntop -usr/share/ntop/html -usr/share/ntop/html/JSCookMenu.js -usr/share/ntop/html/Risk_high.gif -usr/share/ntop/html/Risk_low.gif -usr/share/ntop/html/Risk_medium.gif -usr/share/ntop/html/Risk_unknown.gif -usr/share/ntop/html/antenna.gif -usr/share/ntop/html/arrow.gif -usr/share/ntop/html/arrow_down.gif -usr/share/ntop/html/arrow_up.gif -usr/share/ntop/html/back.gif -usr/share/ntop/html/bar.gif -usr/share/ntop/html/bg_line.gif -usr/share/ntop/html/black.gif -usr/share/ntop/html/blank.gif -usr/share/ntop/html/bottom_corner.gif -usr/share/ntop/html/bridge.gif -usr/share/ntop/html/brocade.gif -usr/share/ntop/html/bug.png -usr/share/ntop/html/bulb.gif -usr/share/ntop/html/card.gif -usr/share/ntop/html/child.gif -usr/share/ntop/html/clear.gif -usr/share/ntop/html/clock.gif -usr/share/ntop/html/collapsed.gif -usr/share/ntop/html/copyright.png -usr/share/ntop/html/corner.gif -usr/share/ntop/html/deleteURL.gif -usr/share/ntop/html/deleteUser.gif -usr/share/ntop/html/disk.gif -usr/share/ntop/html/dns.gif -usr/share/ntop/html/download.gif -usr/share/ntop/html/dump.html -usr/share/ntop/html/emulex.gif -usr/share/ntop/html/error.gif -usr/share/ntop/html/expanded.gif -usr/share/ntop/html/faq.html -usr/share/ntop/html/favicon.ico -usr/share/ntop/html/fback.gif -usr/share/ntop/html/fforward.gif -usr/share/ntop/html/forward.gif -usr/share/ntop/html/functions.js -usr/share/ntop/html/gauge.jpg -usr/share/ntop/html/gaugeR.jpg -usr/share/ntop/html/gaugeS.jpg -usr/share/ntop/html/graph.gif -usr/share/ntop/html/gray_bg.gif -usr/share/ntop/html/help.html -usr/share/ntop/html/help.png -usr/share/ntop/html/hostSortNote.html -usr/share/ntop/html/info.gif -usr/share/ntop/html/initiator.gif -usr/share/ntop/html/lock.png -usr/share/ntop/html/mail.gif -usr/share/ntop/html/major.gif -usr/share/ntop/html/marchio_unipi_pant541_144.gif -usr/share/ntop/html/menubar.png -usr/share/ntop/html/menubar_j.png -usr/share/ntop/html/menuline.png -usr/share/ntop/html/minor.gif -usr/share/ntop/html/modifyUser.gif -usr/share/ntop/html/multihomed.gif -usr/share/ntop/html/multivlaned.gif -usr/share/ntop/html/nboxLogo.gif -usr/share/ntop/html/ntop.gif -usr/share/ntop/html/ntop.html -usr/share/ntop/html/ntop_logo.gif -usr/share/ntop/html/ntopdump.dtd -usr/share/ntop/html/ntophelp.html -usr/share/ntop/html/p2p.gif -usr/share/ntop/html/phone.gif -usr/share/ntop/html/pie-error.png -usr/share/ntop/html/printer.gif -usr/share/ntop/html/privacyNotice.html -usr/share/ntop/html/question.gif -usr/share/ntop/html/router.gif -usr/share/ntop/html/seagate.gif -usr/share/ntop/html/spacer.gif -usr/share/ntop/html/statsicons -usr/share/ntop/html/statsicons/flags -usr/share/ntop/html/statsicons/flags/ad.gif -usr/share/ntop/html/statsicons/flags/ae.gif -usr/share/ntop/html/statsicons/flags/af.gif -usr/share/ntop/html/statsicons/flags/ag.gif -usr/share/ntop/html/statsicons/flags/ai.gif -usr/share/ntop/html/statsicons/flags/al.gif -usr/share/ntop/html/statsicons/flags/am.gif -usr/share/ntop/html/statsicons/flags/an.gif -usr/share/ntop/html/statsicons/flags/ao.gif -usr/share/ntop/html/statsicons/flags/aq.gif -usr/share/ntop/html/statsicons/flags/ar.gif -usr/share/ntop/html/statsicons/flags/as.gif -usr/share/ntop/html/statsicons/flags/at.gif -usr/share/ntop/html/statsicons/flags/au.gif -usr/share/ntop/html/statsicons/flags/aw.gif -usr/share/ntop/html/statsicons/flags/az.gif -usr/share/ntop/html/statsicons/flags/ba.gif -usr/share/ntop/html/statsicons/flags/bb.gif -usr/share/ntop/html/statsicons/flags/bd.gif -usr/share/ntop/html/statsicons/flags/be.gif -usr/share/ntop/html/statsicons/flags/bf.gif -usr/share/ntop/html/statsicons/flags/bg.gif -usr/share/ntop/html/statsicons/flags/bh.gif -usr/share/ntop/html/statsicons/flags/bi.gif -usr/share/ntop/html/statsicons/flags/bj.gif -usr/share/ntop/html/statsicons/flags/bm.gif -usr/share/ntop/html/statsicons/flags/bn.gif -usr/share/ntop/html/statsicons/flags/bo.gif -usr/share/ntop/html/statsicons/flags/br.gif -usr/share/ntop/html/statsicons/flags/bs.gif -usr/share/ntop/html/statsicons/flags/bt.gif -usr/share/ntop/html/statsicons/flags/bv.gif -usr/share/ntop/html/statsicons/flags/bw.gif -usr/share/ntop/html/statsicons/flags/by.gif -usr/share/ntop/html/statsicons/flags/bz.gif -usr/share/ntop/html/statsicons/flags/ca.gif -usr/share/ntop/html/statsicons/flags/cc.gif -usr/share/ntop/html/statsicons/flags/cd.gif -usr/share/ntop/html/statsicons/flags/cf.gif -usr/share/ntop/html/statsicons/flags/cg.gif -usr/share/ntop/html/statsicons/flags/ch.gif -usr/share/ntop/html/statsicons/flags/ci.gif -usr/share/ntop/html/statsicons/flags/ck.gif -usr/share/ntop/html/statsicons/flags/cl.gif -usr/share/ntop/html/statsicons/flags/cm.gif -usr/share/ntop/html/statsicons/flags/cn.gif -usr/share/ntop/html/statsicons/flags/co.gif -usr/share/ntop/html/statsicons/flags/com.gif -usr/share/ntop/html/statsicons/flags/cr.gif -usr/share/ntop/html/statsicons/flags/cu.gif -usr/share/ntop/html/statsicons/flags/cv.gif -usr/share/ntop/html/statsicons/flags/cx.gif -usr/share/ntop/html/statsicons/flags/cy.gif -usr/share/ntop/html/statsicons/flags/cz.gif -usr/share/ntop/html/statsicons/flags/de.gif -usr/share/ntop/html/statsicons/flags/dj.gif -usr/share/ntop/html/statsicons/flags/dk.gif -usr/share/ntop/html/statsicons/flags/dm.gif -usr/share/ntop/html/statsicons/flags/do.gif -usr/share/ntop/html/statsicons/flags/dz.gif -usr/share/ntop/html/statsicons/flags/ec.gif -usr/share/ntop/html/statsicons/flags/edu.gif -usr/share/ntop/html/statsicons/flags/ee.gif -usr/share/ntop/html/statsicons/flags/eg.gif -usr/share/ntop/html/statsicons/flags/eh.gif -usr/share/ntop/html/statsicons/flags/es.gif -usr/share/ntop/html/statsicons/flags/et.gif -usr/share/ntop/html/statsicons/flags/eu.gif -usr/share/ntop/html/statsicons/flags/fi.gif -usr/share/ntop/html/statsicons/flags/fj.gif -usr/share/ntop/html/statsicons/flags/fk.gif -usr/share/ntop/html/statsicons/flags/fm.gif -usr/share/ntop/html/statsicons/flags/fo.gif -usr/share/ntop/html/statsicons/flags/fr.gif -usr/share/ntop/html/statsicons/flags/fx.gif -usr/share/ntop/html/statsicons/flags/ga.gif -usr/share/ntop/html/statsicons/flags/gb.gif -usr/share/ntop/html/statsicons/flags/gd.gif -usr/share/ntop/html/statsicons/flags/ge.gif -usr/share/ntop/html/statsicons/flags/gf.gif -usr/share/ntop/html/statsicons/flags/gh.gif -usr/share/ntop/html/statsicons/flags/gi.gif -usr/share/ntop/html/statsicons/flags/gl.gif -usr/share/ntop/html/statsicons/flags/gm.gif -usr/share/ntop/html/statsicons/flags/gn.gif -usr/share/ntop/html/statsicons/flags/gov.gif -usr/share/ntop/html/statsicons/flags/gp.gif -usr/share/ntop/html/statsicons/flags/gq.gif -usr/share/ntop/html/statsicons/flags/gr.gif -usr/share/ntop/html/statsicons/flags/gt.gif -usr/share/ntop/html/statsicons/flags/gu.gif -usr/share/ntop/html/statsicons/flags/gw.gif -usr/share/ntop/html/statsicons/flags/gy.gif -usr/share/ntop/html/statsicons/flags/hk.gif -usr/share/ntop/html/statsicons/flags/hm.gif -usr/share/ntop/html/statsicons/flags/hn.gif -usr/share/ntop/html/statsicons/flags/hr.gif -usr/share/ntop/html/statsicons/flags/ht.gif -usr/share/ntop/html/statsicons/flags/hu.gif -usr/share/ntop/html/statsicons/flags/id.gif -usr/share/ntop/html/statsicons/flags/ie.gif -usr/share/ntop/html/statsicons/flags/il.gif -usr/share/ntop/html/statsicons/flags/in.gif -usr/share/ntop/html/statsicons/flags/int.gif -usr/share/ntop/html/statsicons/flags/io.gif -usr/share/ntop/html/statsicons/flags/iq.gif -usr/share/ntop/html/statsicons/flags/ir.gif -usr/share/ntop/html/statsicons/flags/is.gif -usr/share/ntop/html/statsicons/flags/it.gif -usr/share/ntop/html/statsicons/flags/jm.gif -usr/share/ntop/html/statsicons/flags/jo.gif -usr/share/ntop/html/statsicons/flags/jp.gif -usr/share/ntop/html/statsicons/flags/ke.gif -usr/share/ntop/html/statsicons/flags/kg.gif -usr/share/ntop/html/statsicons/flags/kh.gif -usr/share/ntop/html/statsicons/flags/ki.gif -usr/share/ntop/html/statsicons/flags/km.gif -usr/share/ntop/html/statsicons/flags/kn.gif -usr/share/ntop/html/statsicons/flags/kp.gif -usr/share/ntop/html/statsicons/flags/kr.gif -usr/share/ntop/html/statsicons/flags/kw.gif -usr/share/ntop/html/statsicons/flags/ky.gif -usr/share/ntop/html/statsicons/flags/kz.gif -usr/share/ntop/html/statsicons/flags/la.gif -usr/share/ntop/html/statsicons/flags/lb.gif -usr/share/ntop/html/statsicons/flags/lc.gif -usr/share/ntop/html/statsicons/flags/li.gif -usr/share/ntop/html/statsicons/flags/lk.gif -usr/share/ntop/html/statsicons/flags/local.gif -usr/share/ntop/html/statsicons/flags/localhost.gif -usr/share/ntop/html/statsicons/flags/lr.gif -usr/share/ntop/html/statsicons/flags/ls.gif -usr/share/ntop/html/statsicons/flags/lt.gif -usr/share/ntop/html/statsicons/flags/lu.gif -usr/share/ntop/html/statsicons/flags/lv.gif -usr/share/ntop/html/statsicons/flags/ly.gif -usr/share/ntop/html/statsicons/flags/ma.gif -usr/share/ntop/html/statsicons/flags/mc.gif -usr/share/ntop/html/statsicons/flags/md.gif -usr/share/ntop/html/statsicons/flags/mil.gif -usr/share/ntop/html/statsicons/flags/mk.gif -usr/share/ntop/html/statsicons/flags/ml.gif -usr/share/ntop/html/statsicons/flags/mn.gif -usr/share/ntop/html/statsicons/flags/mo.gif -usr/share/ntop/html/statsicons/flags/mq.gif -usr/share/ntop/html/statsicons/flags/mr.gif -usr/share/ntop/html/statsicons/flags/mt.gif -usr/share/ntop/html/statsicons/flags/mu.gif -usr/share/ntop/html/statsicons/flags/mx.gif -usr/share/ntop/html/statsicons/flags/my.gif -usr/share/ntop/html/statsicons/flags/mz.gif -usr/share/ntop/html/statsicons/flags/na.gif -usr/share/ntop/html/statsicons/flags/ne.gif -usr/share/ntop/html/statsicons/flags/net.gif -usr/share/ntop/html/statsicons/flags/ng.gif -usr/share/ntop/html/statsicons/flags/ni.gif -usr/share/ntop/html/statsicons/flags/nl.gif -usr/share/ntop/html/statsicons/flags/no.gif -usr/share/ntop/html/statsicons/flags/np.gif -usr/share/ntop/html/statsicons/flags/nu.gif -usr/share/ntop/html/statsicons/flags/nz.gif -usr/share/ntop/html/statsicons/flags/om.gif -usr/share/ntop/html/statsicons/flags/org.gif -usr/share/ntop/html/statsicons/flags/pa.gif -usr/share/ntop/html/statsicons/flags/pe.gif -usr/share/ntop/html/statsicons/flags/pf.gif -usr/share/ntop/html/statsicons/flags/pg.gif -usr/share/ntop/html/statsicons/flags/ph.gif -usr/share/ntop/html/statsicons/flags/pk.gif -usr/share/ntop/html/statsicons/flags/pl.gif -usr/share/ntop/html/statsicons/flags/pr.gif -usr/share/ntop/html/statsicons/flags/ps.gif -usr/share/ntop/html/statsicons/flags/pt.gif -usr/share/ntop/html/statsicons/flags/py.gif -usr/share/ntop/html/statsicons/flags/qa.gif -usr/share/ntop/html/statsicons/flags/ro.gif -usr/share/ntop/html/statsicons/flags/ru.gif -usr/share/ntop/html/statsicons/flags/rw.gif -usr/share/ntop/html/statsicons/flags/sa.gif -usr/share/ntop/html/statsicons/flags/sb.gif -usr/share/ntop/html/statsicons/flags/sd.gif -usr/share/ntop/html/statsicons/flags/se.gif -usr/share/ntop/html/statsicons/flags/sg.gif -usr/share/ntop/html/statsicons/flags/si.gif -usr/share/ntop/html/statsicons/flags/sk.gif -usr/share/ntop/html/statsicons/flags/sm.gif -usr/share/ntop/html/statsicons/flags/sn.gif -usr/share/ntop/html/statsicons/flags/su.gif -usr/share/ntop/html/statsicons/flags/sv.gif -usr/share/ntop/html/statsicons/flags/sy.gif -usr/share/ntop/html/statsicons/flags/sz.gif -usr/share/ntop/html/statsicons/flags/tc.gif -usr/share/ntop/html/statsicons/flags/td.gif -usr/share/ntop/html/statsicons/flags/tf.gif -usr/share/ntop/html/statsicons/flags/tg.gif -usr/share/ntop/html/statsicons/flags/th.gif -usr/share/ntop/html/statsicons/flags/tj.gif -usr/share/ntop/html/statsicons/flags/tk.gif -usr/share/ntop/html/statsicons/flags/tm.gif -usr/share/ntop/html/statsicons/flags/tn.gif -usr/share/ntop/html/statsicons/flags/to.gif -usr/share/ntop/html/statsicons/flags/tr.gif -usr/share/ntop/html/statsicons/flags/tt.gif -usr/share/ntop/html/statsicons/flags/tw.gif -usr/share/ntop/html/statsicons/flags/tz.gif -usr/share/ntop/html/statsicons/flags/ua.gif -usr/share/ntop/html/statsicons/flags/uk.gif -usr/share/ntop/html/statsicons/flags/us.gif -usr/share/ntop/html/statsicons/flags/uy.gif -usr/share/ntop/html/statsicons/flags/uz.gif -usr/share/ntop/html/statsicons/flags/va.gif -usr/share/ntop/html/statsicons/flags/vc.gif -usr/share/ntop/html/statsicons/flags/ve.gif -usr/share/ntop/html/statsicons/flags/vg.gif -usr/share/ntop/html/statsicons/flags/vi.gif -usr/share/ntop/html/statsicons/flags/vn.gif -usr/share/ntop/html/statsicons/flags/wf.gif -usr/share/ntop/html/statsicons/flags/ws.gif -usr/share/ntop/html/statsicons/flags/ye.gif -usr/share/ntop/html/statsicons/flags/yu.gif -usr/share/ntop/html/statsicons/flags/za.gif -usr/share/ntop/html/statsicons/flags/ze.gif -usr/share/ntop/html/statsicons/flags/zm.gif -usr/share/ntop/html/statsicons/flags/zw.gif -usr/share/ntop/html/statsicons/os -usr/share/ntop/html/statsicons/os/aix.gif -usr/share/ntop/html/statsicons/os/amiga.gif -usr/share/ntop/html/statsicons/os/be.gif -usr/share/ntop/html/statsicons/os/bsd.gif -usr/share/ntop/html/statsicons/os/cisco.gif -usr/share/ntop/html/statsicons/os/hp.gif -usr/share/ntop/html/statsicons/os/irix.gif -usr/share/ntop/html/statsicons/os/linux.gif -usr/share/ntop/html/statsicons/os/mac.gif -usr/share/ntop/html/statsicons/os/novell.gif -usr/share/ntop/html/statsicons/os/os2.gif -usr/share/ntop/html/statsicons/os/sun.gif -usr/share/ntop/html/statsicons/os/windows.gif -usr/share/ntop/html/style.css -usr/share/ntop/html/switch.gif -usr/share/ntop/html/theme.css -usr/share/ntop/html/theme.js -usr/share/ntop/html/upload.gif -usr/share/ntop/html/url.gif -usr/share/ntop/html/user.gif -usr/share/ntop/html/users.gif -usr/share/ntop/html/vgauge.jpg -usr/share/ntop/html/warning.gif -usr/share/ntop/html/web.gif -usr/share/ntop/html/wheel.gif -usr/share/ntop/html/white_bg.gif -usr/var/ntop \ No newline at end of file diff --git a/src/paks/ntop/depends.txt b/src/paks/ntop/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/ntop/install.sh b/src/paks/ntop/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/ntop/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/ntop/uninstall.sh b/src/paks/ntop/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/ntop/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/portmap/ROOTFILES b/src/paks/portmap/ROOTFILES deleted file mode 100644 index 528386de90..0000000000 --- a/src/paks/portmap/ROOTFILES +++ /dev/null @@ -1,9 +0,0 @@ -sbin/portmap -usr/sbin/pmap_dump -usr/sbin/pmap_set -#usr/share/man/man8/pmap_dump.8 -#usr/share/man/man8/pmap_set.8 -#usr/share/man/man8/portmap.8 -usr/lib/libwrap.so -usr/lib/libwrap.so.0 -usr/lib/libwrap.so.0.7.6 diff --git a/src/paks/portmap/depends.txt b/src/paks/portmap/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/portmap/install.sh b/src/paks/portmap/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/portmap/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/portmap/uninstall.sh b/src/paks/portmap/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/portmap/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/postfix/ROOTFILES b/src/paks/postfix/ROOTFILES deleted file mode 100644 index 9efbe6821e..0000000000 --- a/src/paks/postfix/ROOTFILES +++ /dev/null @@ -1,133 +0,0 @@ -etc/aliases -#etc/postfix -etc/postfix/LICENSE -etc/postfix/TLS_LICENSE -etc/postfix/access -etc/postfix/canonical -etc/postfix/generic -etc/postfix/header_checks -etc/postfix/main.cf -etc/postfix/makedefs.out -etc/postfix/master.cf -etc/postfix/post-install -etc/postfix/postfix-files -etc/postfix/postfix-script -etc/postfix/relocated -etc/postfix/transport -etc/postfix/virtual -etc/postfix/mysql-canonical.cf -etc/postfix/mysql-mydestination.cf -etc/postfix/mysql-virtual.cf -usr/bin/mailq -usr/bin/newaliases -#usr/lib/postfix -usr/lib/postfix/anvil -usr/lib/postfix/bounce -usr/lib/postfix/cleanup -usr/lib/postfix/discard -usr/lib/postfix/error -usr/lib/postfix/flush -usr/lib/postfix/lmtp -usr/lib/postfix/local -usr/lib/postfix/master -usr/lib/postfix/nqmgr -usr/lib/postfix/oqmgr -usr/lib/postfix/pickup -usr/lib/postfix/pipe -usr/lib/postfix/proxymap -usr/lib/postfix/qmgr -usr/lib/postfix/qmqpd -usr/lib/postfix/scache -usr/lib/postfix/showq -usr/lib/postfix/smtp -usr/lib/postfix/smtpd -usr/lib/postfix/spawn -usr/lib/postfix/tlsmgr -usr/lib/postfix/trivial-rewrite -usr/lib/postfix/verify -usr/lib/postfix/virtual -usr/sbin/postalias -usr/sbin/postcat -usr/sbin/postconf -usr/sbin/postdrop -usr/sbin/postfix -usr/sbin/postkick -usr/sbin/postlock -usr/sbin/postlog -usr/sbin/postmap -usr/sbin/postqueue -usr/sbin/postsuper -usr/sbin/sendmail -#usr/share/man/man1/mailq.1 -#usr/share/man/man1/newaliases.1 -#usr/share/man/man1/postalias.1 -#usr/share/man/man1/postcat.1 -#usr/share/man/man1/postconf.1 -#usr/share/man/man1/postdrop.1 -#usr/share/man/man1/postfix.1 -#usr/share/man/man1/postkick.1 -#usr/share/man/man1/postlock.1 -#usr/share/man/man1/postlog.1 -#usr/share/man/man1/postmap.1 -#usr/share/man/man1/postqueue.1 -#usr/share/man/man1/postsuper.1 -#usr/share/man/man1/sendmail.1 -#usr/share/man/man5/access.5 -#usr/share/man/man5/aliases.5 -#usr/share/man/man5/body_checks.5 -#usr/share/man/man5/canonical.5 -#usr/share/man/man5/cidr_table.5 -#usr/share/man/man5/generic.5 -#usr/share/man/man5/header_checks.5 -#usr/share/man/man5/ldap_table.5 -#usr/share/man/man5/master.5 -#usr/share/man/man5/mysql_table.5 -#usr/share/man/man5/nisplus_table.5 -#usr/share/man/man5/pcre_table.5 -#usr/share/man/man5/pgsql_table.5 -#usr/share/man/man5/postconf.5 -#usr/share/man/man5/regexp_table.5 -#usr/share/man/man5/relocated.5 -#usr/share/man/man5/transport.5 -#usr/share/man/man5/virtual.5 -#usr/share/man/man8/anvil.8 -#usr/share/man/man8/bounce.8 -#usr/share/man/man8/cleanup.8 -#usr/share/man/man8/defer.8 -#usr/share/man/man8/discard.8 -#usr/share/man/man8/error.8 -#usr/share/man/man8/flush.8 -#usr/share/man/man8/lmtp.8 -#usr/share/man/man8/local.8 -#usr/share/man/man8/master.8 -#usr/share/man/man8/oqmgr.8 -#usr/share/man/man8/pickup.8 -#usr/share/man/man8/pipe.8 -#usr/share/man/man8/proxymap.8 -#usr/share/man/man8/qmgr.8 -#usr/share/man/man8/qmqpd.8 -#usr/share/man/man8/scache.8 -#usr/share/man/man8/showq.8 -#usr/share/man/man8/smtp.8 -#usr/share/man/man8/smtpd.8 -#usr/share/man/man8/spawn.8 -#usr/share/man/man8/tlsmgr.8 -#usr/share/man/man8/trace.8 -#usr/share/man/man8/trivial-rewrite.8 -#usr/share/man/man8/verify.8 -#usr/share/man/man8/virtual.8 -#var/spool/postfix -var/spool/postfix/active -var/spool/postfix/bounce -var/spool/postfix/corrupt -var/spool/postfix/defer -var/spool/postfix/deferred -var/spool/postfix/flush -var/spool/postfix/hold -var/spool/postfix/incoming -var/spool/postfix/maildrop -var/spool/postfix/pid -var/spool/postfix/private -var/spool/postfix/public -var/spool/postfix/saved -var/spool/postfix/trace \ No newline at end of file diff --git a/src/paks/postfix/depends.txt b/src/paks/postfix/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/postfix/install.sh b/src/paks/postfix/install.sh deleted file mode 100755 index e69de29bb2..0000000000 diff --git a/src/paks/postfix/uninstall.sh b/src/paks/postfix/uninstall.sh deleted file mode 100755 index e69de29bb2..0000000000 diff --git a/src/paks/procmail/ROOTFILES b/src/paks/procmail/ROOTFILES deleted file mode 100644 index 2429f51918..0000000000 --- a/src/paks/procmail/ROOTFILES +++ /dev/null @@ -1,11 +0,0 @@ -etc/procmailrc -usr/bin/formail -usr/bin/lockfile -usr/bin/mailstat -usr/bin/procmail -#usr/share/man/man1/formail.1 -#usr/share/man/man1/lockfile.1 -#usr/share/man/man1/procmail.1 -#usr/share/man/man5/procmailex.5 -#usr/share/man/man5/procmailrc.5 -#usr/share/man/man5/procmailsc.5 diff --git a/src/paks/procmail/depends.txt b/src/paks/procmail/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/procmail/install.sh b/src/paks/procmail/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/procmail/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/procmail/uninstall.sh b/src/paks/procmail/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/procmail/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/razor/ROOTFILES b/src/paks/razor/ROOTFILES deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/razor/depends.txt b/src/paks/razor/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/razor/install.sh b/src/paks/razor/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/razor/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/razor/uninstall.sh b/src/paks/razor/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/razor/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/rsync/ROOTFILES b/src/paks/rsync/ROOTFILES deleted file mode 100644 index 59c8be9f1d..0000000000 --- a/src/paks/rsync/ROOTFILES +++ /dev/null @@ -1,3 +0,0 @@ -usr/bin/rsync -#usr/share/man/man1/rsync.1 -#usr/share/man/man5/rsyncd.conf.5 diff --git a/src/paks/rsync/depends.txt b/src/paks/rsync/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/rsync/install.sh b/src/paks/rsync/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/rsync/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/rsync/uninstall.sh b/src/paks/rsync/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/rsync/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/samba/ROOTFILES b/src/paks/samba/ROOTFILES deleted file mode 100644 index 59afb3cd6c..0000000000 --- a/src/paks/samba/ROOTFILES +++ /dev/null @@ -1,569 +0,0 @@ -lib/libnss_winbind.so -lib/libnss_winbind.so.2 -lib/libnss_wins.so -lib/libnss_wins.so.2 -sbin/mount.smbfs -usr/bin/eventlogadm -usr/bin/findsmb -usr/bin/net -usr/bin/nmblookup -usr/bin/ntlm_auth -usr/bin/pdbedit -usr/bin/profiles -usr/bin/rpcclient -usr/bin/smbcacls -usr/bin/smbclient -usr/bin/smbcontrol -usr/bin/smbcquotas -usr/bin/smbget -usr/bin/smbmnt -usr/bin/smbmount -usr/bin/smbpasswd -usr/bin/smbspool -usr/bin/smbstatus -usr/bin/smbtar -usr/bin/smbtree -usr/bin/smbumount -usr/bin/tdbbackup -usr/bin/tdbdump -usr/bin/tdbtool -usr/bin/testparm -usr/bin/wbinfo -#usr/include/libmsrpc.h -#usr/include/libsmbclient.h -usr/lib/libsmbclient.so -usr/lib/libsmbclient.so.0 -#usr/lib/samba -#usr/lib/samba/auth -usr/lib/samba/auth/script.so -#usr/lib/samba/charset -usr/lib/samba/charset/CP437.so -usr/lib/samba/charset/CP850.so -usr/lib/samba/de.msg -usr/lib/samba/en.msg -usr/lib/samba/fr.msg -usr/lib/samba/idmap -usr/lib/samba/it.msg -usr/lib/samba/ja.msg -usr/lib/samba/libmsrpc.so -usr/lib/samba/libsmbclient.so -usr/lib/samba/lowcase.dat -usr/lib/samba/nl.msg -usr/lib/samba/pdb -usr/lib/samba/pl.msg -usr/lib/samba/rpc -usr/lib/samba/tr.msg -usr/lib/samba/upcase.dat -usr/lib/samba/valid.dat -#usr/lib/samba/vfs -usr/lib/samba/vfs/audit.so -usr/lib/samba/vfs/cap.so -usr/lib/samba/vfs/default_quota.so -usr/lib/samba/vfs/expand_msdfs.so -usr/lib/samba/vfs/extd_audit.so -usr/lib/samba/vfs/fake_perms.so -usr/lib/samba/vfs/full_audit.so -usr/lib/samba/vfs/netatalk.so -usr/lib/samba/vfs/readonly.so -usr/lib/samba/vfs/recycle.so -usr/lib/samba/vfs/shadow_copy.so -usr/sbin/nmbd -usr/sbin/smbd -usr/sbin/swat -usr/sbin/winbindd -#usr/share/man/man1/findsmb.1 -#usr/share/man/man1/log2pcap.1 -#usr/share/man/man1/nmblookup.1 -#usr/share/man/man1/ntlm_auth.1 -#usr/share/man/man1/profiles.1 -#usr/share/man/man1/rpcclient.1 -#usr/share/man/man1/smbcacls.1 -#usr/share/man/man1/smbclient.1 -#usr/share/man/man1/smbcontrol.1 -#usr/share/man/man1/smbcquotas.1 -#usr/share/man/man1/smbget.1 -#usr/share/man/man1/smbstatus.1 -#usr/share/man/man1/smbtar.1 -#usr/share/man/man1/smbtree.1 -#usr/share/man/man1/testparm.1 -#usr/share/man/man1/vfstest.1 -#usr/share/man/man1/wbinfo.1 -#usr/share/man/man5/lmhosts.5 -#usr/share/man/man5/smb.conf.5 -#usr/share/man/man5/smbgetrc.5 -#usr/share/man/man5/smbpasswd.5 -#usr/share/man/man7/libsmbclient.7 -#usr/share/man/man7/pam_winbind.7 -#usr/share/man/man7/samba.7 -#usr/share/man/man8/mount.cifs.8 -#usr/share/man/man8/net.8 -#usr/share/man/man8/nmbd.8 -#usr/share/man/man8/pdbedit.8 -#usr/share/man/man8/smbd.8 -#usr/share/man/man8/smbmnt.8 -#usr/share/man/man8/smbmount.8 -#usr/share/man/man8/smbpasswd.8 -#usr/share/man/man8/smbspool.8 -#usr/share/man/man8/smbumount.8 -#usr/share/man/man8/swat.8 -#usr/share/man/man8/tdbbackup.8 -#usr/share/man/man8/tdbdump.8 -#usr/share/man/man8/umount.cifs.8 -#usr/share/man/man8/winbindd.8 -#usr/share/samba -#usr/share/samba/swat -#usr/share/samba/swat/help -#usr/share/samba/swat/help/Samba3-ByExample -usr/share/samba/swat/help/Samba3-ByExample/2000users.html -usr/share/samba/swat/help/Samba3-ByExample/Big500users.html -usr/share/samba/swat/help/Samba3-ByExample/DMSMig.html -usr/share/samba/swat/help/Samba3-ByExample/DomApps.html -usr/share/samba/swat/help/Samba3-ByExample/ExNetworks.html -usr/share/samba/swat/help/Samba3-ByExample/HA.html -usr/share/samba/swat/help/Samba3-ByExample/RefSection.html -usr/share/samba/swat/help/Samba3-ByExample/appendix.html -usr/share/samba/swat/help/Samba3-ByExample/ch14.html -usr/share/samba/swat/help/Samba3-ByExample/go01.html -usr/share/samba/swat/help/Samba3-ByExample/gpl.html -usr/share/samba/swat/help/Samba3-ByExample/happy.html -#usr/share/samba/swat/help/Samba3-ByExample/images -usr/share/samba/swat/help/Samba3-ByExample/images/AccountingNetwork.png -usr/share/samba/swat/help/Samba3-ByExample/images/Charity-Network.png -usr/share/samba/swat/help/Samba3-ByExample/images/HostAnnouncment.png -usr/share/samba/swat/help/Samba3-ByExample/images/NullConnect.png -usr/share/samba/swat/help/Samba3-ByExample/images/UNIX-Samba-and-LDAP.png -usr/share/samba/swat/help/Samba3-ByExample/images/UserConnect.png -usr/share/samba/swat/help/Samba3-ByExample/images/UserMgrNT4.png -usr/share/samba/swat/help/Samba3-ByExample/images/WINREPRESSME-Capture.png -usr/share/samba/swat/help/Samba3-ByExample/images/WINREPRESSME-Capture2.png -usr/share/samba/swat/help/Samba3-ByExample/images/WindowsXP-NullConnection.png -usr/share/samba/swat/help/Samba3-ByExample/images/WindowsXP-UserConnection.png -usr/share/samba/swat/help/Samba3-ByExample/images/XP-screen001.png -usr/share/samba/swat/help/Samba3-ByExample/images/acct2net.png -usr/share/samba/swat/help/Samba3-ByExample/images/ch7-dual-additive-LDAP-Ok.png -usr/share/samba/swat/help/Samba3-ByExample/images/ch7-dual-additive-LDAP.png -usr/share/samba/swat/help/Samba3-ByExample/images/ch7-fail-overLDAP.png -usr/share/samba/swat/help/Samba3-ByExample/images/ch7-singleLDAP.png -usr/share/samba/swat/help/Samba3-ByExample/images/ch8-migration.png -usr/share/samba/swat/help/Samba3-ByExample/images/chap4-net.png -usr/share/samba/swat/help/Samba3-ByExample/images/chap5-net.png -usr/share/samba/swat/help/Samba3-ByExample/images/chap6-net.png -usr/share/samba/swat/help/Samba3-ByExample/images/chap7-idresol.png -usr/share/samba/swat/help/Samba3-ByExample/images/chap7-net-Ar.png -usr/share/samba/swat/help/Samba3-ByExample/images/chap7-net2-Br.png -usr/share/samba/swat/help/Samba3-ByExample/images/chap9-ADSDC.png -usr/share/samba/swat/help/Samba3-ByExample/images/chap9-SambaDC.png -usr/share/samba/swat/help/Samba3-ByExample/images/imc-usermanager2.png -usr/share/samba/swat/help/Samba3-ByExample/images/lam-config.png -usr/share/samba/swat/help/Samba3-ByExample/images/lam-group-members.png -usr/share/samba/swat/help/Samba3-ByExample/images/lam-groups.png -usr/share/samba/swat/help/Samba3-ByExample/images/lam-hosts.png -usr/share/samba/swat/help/Samba3-ByExample/images/lam-login.png -usr/share/samba/swat/help/Samba3-ByExample/images/lam-users.png -usr/share/samba/swat/help/Samba3-ByExample/images/openmag.png -usr/share/samba/swat/help/Samba3-ByExample/images/wxpp001.png -usr/share/samba/swat/help/Samba3-ByExample/images/wxpp004.png -usr/share/samba/swat/help/Samba3-ByExample/images/wxpp006.png -usr/share/samba/swat/help/Samba3-ByExample/images/wxpp007.png -usr/share/samba/swat/help/Samba3-ByExample/images/wxpp008.png -usr/share/samba/swat/help/Samba3-ByExample/index.html -usr/share/samba/swat/help/Samba3-ByExample/ix01.html -usr/share/samba/swat/help/Samba3-ByExample/kerberos.html -usr/share/samba/swat/help/Samba3-ByExample/ntmigration.html -usr/share/samba/swat/help/Samba3-ByExample/nw4migration.html -usr/share/samba/swat/help/Samba3-ByExample/pr01.html -usr/share/samba/swat/help/Samba3-ByExample/pr02.html -usr/share/samba/swat/help/Samba3-ByExample/pr03.html -usr/share/samba/swat/help/Samba3-ByExample/preface.html -usr/share/samba/swat/help/Samba3-ByExample/primer.html -usr/share/samba/swat/help/Samba3-ByExample/secure.html -usr/share/samba/swat/help/Samba3-ByExample/simple.html -usr/share/samba/swat/help/Samba3-ByExample/small.html -usr/share/samba/swat/help/Samba3-ByExample/unixclients.html -usr/share/samba/swat/help/Samba3-ByExample/upgrades.html -#usr/share/samba/swat/help/Samba3-Developers-Guide -usr/share/samba/swat/help/Samba3-Developers-Guide/CodingSuggestions.html -usr/share/samba/swat/help/Samba3-Developers-Guide/Packaging.html -usr/share/samba/swat/help/Samba3-Developers-Guide/architecture.html -usr/share/samba/swat/help/Samba3-Developers-Guide/contributing.html -usr/share/samba/swat/help/Samba3-Developers-Guide/debug.html -usr/share/samba/swat/help/Samba3-Developers-Guide/devprinting.html -usr/share/samba/swat/help/Samba3-Developers-Guide/index.html -usr/share/samba/swat/help/Samba3-Developers-Guide/internals.html -usr/share/samba/swat/help/Samba3-Developers-Guide/modules.html -usr/share/samba/swat/help/Samba3-Developers-Guide/ntdomain.html -usr/share/samba/swat/help/Samba3-Developers-Guide/parsing.html -usr/share/samba/swat/help/Samba3-Developers-Guide/pt01.html -usr/share/samba/swat/help/Samba3-Developers-Guide/pt02.html -usr/share/samba/swat/help/Samba3-Developers-Guide/pt03.html -usr/share/samba/swat/help/Samba3-Developers-Guide/pt04.html -usr/share/samba/swat/help/Samba3-Developers-Guide/pt05.html -usr/share/samba/swat/help/Samba3-Developers-Guide/pwencrypt.html -usr/share/samba/swat/help/Samba3-Developers-Guide/rpc-plugin.html -usr/share/samba/swat/help/Samba3-Developers-Guide/tracing.html -usr/share/samba/swat/help/Samba3-Developers-Guide/unix-smb.html -usr/share/samba/swat/help/Samba3-Developers-Guide/vfs.html -usr/share/samba/swat/help/Samba3-Developers-Guide/wins.html -#usr/share/samba/swat/help/Samba3-HOWTO -usr/share/samba/swat/help/Samba3-HOWTO/AccessControls.html -usr/share/samba/swat/help/Samba3-HOWTO/AdvancedNetworkManagement.html -usr/share/samba/swat/help/Samba3-HOWTO/Appendix.html -usr/share/samba/swat/help/Samba3-HOWTO/Backup.html -usr/share/samba/swat/help/Samba3-HOWTO/CUPS-printing.html -usr/share/samba/swat/help/Samba3-HOWTO/ClientConfig.html -usr/share/samba/swat/help/Samba3-HOWTO/DNSDHCP.html -usr/share/samba/swat/help/Samba3-HOWTO/FastStart.html -usr/share/samba/swat/help/Samba3-HOWTO/InterdomainTrusts.html -usr/share/samba/swat/help/Samba3-HOWTO/IntroSMB.html -usr/share/samba/swat/help/Samba3-HOWTO/NT4Migration.html -usr/share/samba/swat/help/Samba3-HOWTO/NetCommand.html -usr/share/samba/swat/help/Samba3-HOWTO/NetworkBrowsing.html -usr/share/samba/swat/help/Samba3-HOWTO/Other-Clients.html -usr/share/samba/swat/help/Samba3-HOWTO/PolicyMgmt.html -usr/share/samba/swat/help/Samba3-HOWTO/Portability.html -usr/share/samba/swat/help/Samba3-HOWTO/ProfileMgmt.html -usr/share/samba/swat/help/Samba3-HOWTO/SWAT.html -usr/share/samba/swat/help/Samba3-HOWTO/SambaHA.html -usr/share/samba/swat/help/Samba3-HOWTO/ServerType.html -usr/share/samba/swat/help/Samba3-HOWTO/StandAloneServer.html -usr/share/samba/swat/help/Samba3-HOWTO/TOSHpreface.html -usr/share/samba/swat/help/Samba3-HOWTO/VFS.html -usr/share/samba/swat/help/Samba3-HOWTO/bugreport.html -usr/share/samba/swat/help/Samba3-HOWTO/cfgsmarts.html -usr/share/samba/swat/help/Samba3-HOWTO/ch-ldap-tls.html -usr/share/samba/swat/help/Samba3-HOWTO/ch45.html -usr/share/samba/swat/help/Samba3-HOWTO/classicalprinting.html -usr/share/samba/swat/help/Samba3-HOWTO/compiling.html -usr/share/samba/swat/help/Samba3-HOWTO/diagnosis.html -usr/share/samba/swat/help/Samba3-HOWTO/domain-member.html -usr/share/samba/swat/help/Samba3-HOWTO/go01.html -usr/share/samba/swat/help/Samba3-HOWTO/gpl.html -usr/share/samba/swat/help/Samba3-HOWTO/groupmapping.html -usr/share/samba/swat/help/Samba3-HOWTO/idmapper.html -#usr/share/samba/swat/help/Samba3-HOWTO/images -usr/share/samba/swat/help/Samba3-HOWTO/images/10small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/11small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/12small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/13small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/14small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/1small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/2small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/3small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/4small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/5small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/6small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/7small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/8small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/9small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WME001.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WME002.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WME003.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WME005.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WME009.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WME010.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WME013.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WME014.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WXPP002.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WXPP003.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WXPP005.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WXPP009.png -usr/share/samba/swat/help/Samba3-HOWTO/images/WXPP014.png -usr/share/samba/swat/help/Samba3-HOWTO/images/a_small.png -usr/share/samba/swat/help/Samba3-HOWTO/images/access1.png -usr/share/samba/swat/help/Samba3-HOWTO/images/browsing1.png -usr/share/samba/swat/help/Samba3-HOWTO/images/cups1.png -usr/share/samba/swat/help/Samba3-HOWTO/images/cups2.png -usr/share/samba/swat/help/Samba3-HOWTO/images/domain.png -usr/share/samba/swat/help/Samba3-HOWTO/images/ethereal1.png -usr/share/samba/swat/help/Samba3-HOWTO/images/ethereal2.png -usr/share/samba/swat/help/Samba3-HOWTO/images/idmap-gid2sid.png -usr/share/samba/swat/help/Samba3-HOWTO/images/idmap-sid2gid.png -usr/share/samba/swat/help/Samba3-HOWTO/images/idmap-sid2uid.png -usr/share/samba/swat/help/Samba3-HOWTO/images/idmap-store-gid2sid.png -usr/share/samba/swat/help/Samba3-HOWTO/images/idmap-uid2sid.png -usr/share/samba/swat/help/Samba3-HOWTO/images/idmap_winbind_no_loop.png -usr/share/samba/swat/help/Samba3-HOWTO/images/pdftoepsonusb.png -usr/share/samba/swat/help/Samba3-HOWTO/images/pdftosocket.png -usr/share/samba/swat/help/Samba3-HOWTO/images/trusts1.png -usr/share/samba/swat/help/Samba3-HOWTO/images/w2kp001.png -usr/share/samba/swat/help/Samba3-HOWTO/images/w2kp002.png -usr/share/samba/swat/help/Samba3-HOWTO/images/w2kp003.png -usr/share/samba/swat/help/Samba3-HOWTO/images/w2kp004.png -usr/share/samba/swat/help/Samba3-HOWTO/images/w2kp005.png -usr/share/samba/swat/help/Samba3-HOWTO/images/wxpp001.png -usr/share/samba/swat/help/Samba3-HOWTO/images/wxpp004.png -usr/share/samba/swat/help/Samba3-HOWTO/images/wxpp006.png -usr/share/samba/swat/help/Samba3-HOWTO/images/wxpp007.png -usr/share/samba/swat/help/Samba3-HOWTO/images/wxpp008.png -usr/share/samba/swat/help/Samba3-HOWTO/index.html -usr/share/samba/swat/help/Samba3-HOWTO/install.html -usr/share/samba/swat/help/Samba3-HOWTO/integrate-ms-networks.html -usr/share/samba/swat/help/Samba3-HOWTO/introduction.html -usr/share/samba/swat/help/Samba3-HOWTO/ix01.html -usr/share/samba/swat/help/Samba3-HOWTO/largefile.html -usr/share/samba/swat/help/Samba3-HOWTO/locking.html -usr/share/samba/swat/help/Samba3-HOWTO/migration.html -usr/share/samba/swat/help/Samba3-HOWTO/msdfs.html -usr/share/samba/swat/help/Samba3-HOWTO/optional.html -usr/share/samba/swat/help/Samba3-HOWTO/pam.html -usr/share/samba/swat/help/Samba3-HOWTO/passdb.html -usr/share/samba/swat/help/Samba3-HOWTO/pr01.html -usr/share/samba/swat/help/Samba3-HOWTO/pr02.html -usr/share/samba/swat/help/Samba3-HOWTO/pr03.html -usr/share/samba/swat/help/Samba3-HOWTO/problems.html -usr/share/samba/swat/help/Samba3-HOWTO/rights.html -usr/share/samba/swat/help/Samba3-HOWTO/samba-bdc.html -usr/share/samba/swat/help/Samba3-HOWTO/samba-pdc.html -usr/share/samba/swat/help/Samba3-HOWTO/securing-samba.html -usr/share/samba/swat/help/Samba3-HOWTO/speed.html -usr/share/samba/swat/help/Samba3-HOWTO/troubleshooting.html -usr/share/samba/swat/help/Samba3-HOWTO/type.html -usr/share/samba/swat/help/Samba3-HOWTO/unicode.html -usr/share/samba/swat/help/Samba3-HOWTO/upgrading-to-3.0.html -usr/share/samba/swat/help/Samba3-HOWTO/winbind.html -#usr/share/samba/swat/help/manpages -usr/share/samba/swat/help/manpages/findsmb.1.html -usr/share/samba/swat/help/manpages/index.html -usr/share/samba/swat/help/manpages/libsmbclient.7.html -usr/share/samba/swat/help/manpages/lmhosts.5.html -usr/share/samba/swat/help/manpages/log2pcap.1.html -usr/share/samba/swat/help/manpages/mount.cifs.8.html -usr/share/samba/swat/help/manpages/net.8.html -usr/share/samba/swat/help/manpages/nmbd.8.html -usr/share/samba/swat/help/manpages/nmblookup.1.html -usr/share/samba/swat/help/manpages/ntlm_auth.1.html -usr/share/samba/swat/help/manpages/pam_winbind.7.html -usr/share/samba/swat/help/manpages/pdbedit.8.html -usr/share/samba/swat/help/manpages/profiles.1.html -usr/share/samba/swat/help/manpages/rpcclient.1.html -usr/share/samba/swat/help/manpages/samba.7.html -usr/share/samba/swat/help/manpages/smb.conf.5.html -usr/share/samba/swat/help/manpages/smbcacls.1.html -usr/share/samba/swat/help/manpages/smbclient.1.html -usr/share/samba/swat/help/manpages/smbcontrol.1.html -usr/share/samba/swat/help/manpages/smbcquotas.1.html -usr/share/samba/swat/help/manpages/smbd.8.html -usr/share/samba/swat/help/manpages/smbget.1.html -usr/share/samba/swat/help/manpages/smbgetrc.5.html -usr/share/samba/swat/help/manpages/smbmnt.8.html -usr/share/samba/swat/help/manpages/smbmount.8.html -usr/share/samba/swat/help/manpages/smbpasswd.5.html -usr/share/samba/swat/help/manpages/smbpasswd.8.html -usr/share/samba/swat/help/manpages/smbsh.1.html -usr/share/samba/swat/help/manpages/smbspool.8.html -usr/share/samba/swat/help/manpages/smbstatus.1.html -usr/share/samba/swat/help/manpages/smbtar.1.html -usr/share/samba/swat/help/manpages/smbtree.1.html -usr/share/samba/swat/help/manpages/smbumount.8.html -usr/share/samba/swat/help/manpages/swat.8.html -usr/share/samba/swat/help/manpages/tdbbackup.8.html -usr/share/samba/swat/help/manpages/tdbdump.8.html -usr/share/samba/swat/help/manpages/testparm.1.html -usr/share/samba/swat/help/manpages/umount.cifs.8.html -usr/share/samba/swat/help/manpages/vfstest.1.html -usr/share/samba/swat/help/manpages/wbinfo.1.html -usr/share/samba/swat/help/manpages/winbindd.8.html -#usr/share/samba/swat/help/using_samba -usr/share/samba/swat/help/using_samba/appa.html -usr/share/samba/swat/help/using_samba/appb.html -usr/share/samba/swat/help/using_samba/appc.html -usr/share/samba/swat/help/using_samba/appd.html -usr/share/samba/swat/help/using_samba/appe.html -usr/share/samba/swat/help/using_samba/appf.html -usr/share/samba/swat/help/using_samba/appg.html -usr/share/samba/swat/help/using_samba/ch00.html -usr/share/samba/swat/help/using_samba/ch01.html -usr/share/samba/swat/help/using_samba/ch02.html -usr/share/samba/swat/help/using_samba/ch03.html -usr/share/samba/swat/help/using_samba/ch04.html -usr/share/samba/swat/help/using_samba/ch05.html -usr/share/samba/swat/help/using_samba/ch06.html -usr/share/samba/swat/help/using_samba/ch07.html -usr/share/samba/swat/help/using_samba/ch08.html -usr/share/samba/swat/help/using_samba/ch09.html -usr/share/samba/swat/help/using_samba/ch10.html -usr/share/samba/swat/help/using_samba/ch11.html -usr/share/samba/swat/help/using_samba/ch12.html -#usr/share/samba/swat/help/using_samba/figs -usr/share/samba/swat/help/using_samba/figs/sam2_0101.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0102.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0103.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0104.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0105.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0106.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0107.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0108.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0109.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0110.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0111.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0112.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0113.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0114.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0201.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0202.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0203.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0204.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0301.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0302.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0303.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0304.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0305.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0306.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0307.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0308.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0309.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0310.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0311.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0312.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0313.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0314.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0315.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0316.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0317.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0318.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0319.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0320.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0321.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0322.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0323.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0324.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0325.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0326.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0327.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0328.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0329.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0330.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0331.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0332.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0333.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0334.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0335.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0336.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0337.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0338.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0339.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0340.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0341.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0342.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0343.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0344.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0345.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0346.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0347.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0348.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0349.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0350.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0351.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0352.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0353.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0354.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0355.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0356.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0357.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0358.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0359.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0360.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0361.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0401.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0402.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0403.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0404.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0405.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0406.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0407.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0408.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0409.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0410.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0411.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0412.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0413.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0414.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0415.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0416.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0417.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0501.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0502.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0503.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0504.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0505.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0506.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0507.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0508.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0601.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0602.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0603.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0604.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0605.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0701.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0801.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0802.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0803.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0804.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0805.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0806.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0807.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0808.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0809.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0810.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0811.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0901.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0902.gif -usr/share/samba/swat/help/using_samba/figs/sam2_0903.gif -usr/share/samba/swat/help/using_samba/figs/sam2_1001.gif -usr/share/samba/swat/help/using_samba/figs/sam2_1002.gif -usr/share/samba/swat/help/using_samba/figs/sam2_1003.gif -usr/share/samba/swat/help/using_samba/figs/sam2_1004.gif -usr/share/samba/swat/help/using_samba/figs/sam2_1005.gif -usr/share/samba/swat/help/using_samba/figs/sam2_1006.gif -usr/share/samba/swat/help/using_samba/figs/sam2_1101.gif -usr/share/samba/swat/help/using_samba/figs/sam2_1102.gif -usr/share/samba/swat/help/using_samba/figs/sam2_af01.gif -usr/share/samba/swat/help/using_samba/figs/sam2_af02.gif -usr/share/samba/swat/help/using_samba/figs/sam2_af03.gif -usr/share/samba/swat/help/using_samba/figs/sam2_af04.gif -usr/share/samba/swat/help/using_samba/figs/sam2_af05.gif -usr/share/samba/swat/help/using_samba/figs/sam2_af06.gif -usr/share/samba/swat/help/using_samba/figs/sam2_af07.gif -usr/share/samba/swat/help/using_samba/inx.html -usr/share/samba/swat/help/using_samba/samba2_s.gif -usr/share/samba/swat/help/using_samba/samba2_xs.gif -usr/share/samba/swat/help/using_samba/toc.html -usr/share/samba/swat/help/welcome-no-samba-doc.html -usr/share/samba/swat/help/welcome.html -#usr/share/samba/swat/images -usr/share/samba/swat/images/globals.gif -usr/share/samba/swat/images/home.gif -usr/share/samba/swat/images/passwd.gif -usr/share/samba/swat/images/printers.gif -usr/share/samba/swat/images/samba.gif -usr/share/samba/swat/images/shares.gif -usr/share/samba/swat/images/status.gif -usr/share/samba/swat/images/viewconfig.gif -usr/share/samba/swat/images/wizard.gif -#usr/share/samba/swat/include -usr/share/samba/swat/include/footer.html -usr/share/samba/swat/include/header.html -#usr/share/samba/swat/lang -#usr/share/samba/swat/lang/ja -#usr/share/samba/swat/lang/ja/help -usr/share/samba/swat/lang/ja/help/welcome.html -usr/share/samba/swat/lang/ja/images -usr/share/samba/swat/lang/ja/include -#usr/share/samba/swat/lang/tr -#usr/share/samba/swat/lang/tr/help -usr/share/samba/swat/lang/tr/help/welcome.html -#usr/share/samba/swat/lang/tr/images -usr/share/samba/swat/lang/tr/images/globals.gif -usr/share/samba/swat/lang/tr/images/home.gif -usr/share/samba/swat/lang/tr/images/passwd.gif -usr/share/samba/swat/lang/tr/images/printers.gif -usr/share/samba/swat/lang/tr/images/samba.gif -usr/share/samba/swat/lang/tr/images/shares.gif -usr/share/samba/swat/lang/tr/images/status.gif -usr/share/samba/swat/lang/tr/images/viewconfig.gif -usr/share/samba/swat/lang/tr/include -#var/ipfire/samba -var/ipfire/samba/private -var/ipfire/samba/smb.conf.default -var/ipfire/xinetd/xinetd.d/swat -var/lib/samba \ No newline at end of file diff --git a/src/paks/samba/depends.txt b/src/paks/samba/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/samba/install.sh b/src/paks/samba/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/samba/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/samba/uninstall.sh b/src/paks/samba/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/samba/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/sane/ROOTFILES b/src/paks/sane/ROOTFILES deleted file mode 100644 index c2a3069edf..0000000000 --- a/src/paks/sane/ROOTFILES +++ /dev/null @@ -1,488 +0,0 @@ -etc/sane.d -etc/sane.d/abaton.conf -etc/sane.d/agfafocus.conf -etc/sane.d/apple.conf -etc/sane.d/artec.conf -etc/sane.d/artec_eplus48u.conf -etc/sane.d/avision.conf -etc/sane.d/bh.conf -etc/sane.d/canon.conf -etc/sane.d/canon630u.conf -etc/sane.d/coolscan.conf -etc/sane.d/coolscan2.conf -etc/sane.d/dc210.conf -etc/sane.d/dc240.conf -etc/sane.d/dc25.conf -etc/sane.d/dll.conf -etc/sane.d/dmc.conf -etc/sane.d/epson.conf -etc/sane.d/fujitsu.conf -etc/sane.d/genesys.conf -etc/sane.d/gt68xx.conf -etc/sane.d/hp.conf -etc/sane.d/hp4200.conf -etc/sane.d/hp5400.conf -etc/sane.d/ibm.conf -etc/sane.d/leo.conf -etc/sane.d/lexmark.conf -etc/sane.d/ma1509.conf -etc/sane.d/matsushita.conf -etc/sane.d/microtek.conf -etc/sane.d/microtek2.conf -etc/sane.d/mustek.conf -etc/sane.d/mustek_usb.conf -etc/sane.d/nec.conf -etc/sane.d/net.conf -etc/sane.d/pie.conf -etc/sane.d/plustek.conf -etc/sane.d/plustek_pp.conf -etc/sane.d/qcam.conf -etc/sane.d/ricoh.conf -etc/sane.d/s9036.conf -etc/sane.d/saned.conf -etc/sane.d/sceptre.conf -etc/sane.d/sharp.conf -etc/sane.d/sm3840.conf -etc/sane.d/snapscan.conf -etc/sane.d/sp15c.conf -etc/sane.d/st400.conf -etc/sane.d/tamarack.conf -etc/sane.d/teco1.conf -etc/sane.d/teco2.conf -etc/sane.d/teco3.conf -etc/sane.d/test.conf -etc/sane.d/u12.conf -etc/sane.d/umax.conf -etc/sane.d/umax1220u.conf -etc/sane.d/umax_pp.conf -etc/sane.d/v4l.conf -usr/bin/gamma4scanimage -usr/bin/sane-config -usr/bin/sane-find-scanner -usr/bin/scanimage -+usr/include/sane -+usr/include/sane/sane.h -#usr/include/sane/saneopts.h -usr/lib/libsane.la -usr/lib/libsane.so -usr/lib/libsane.so.1 -usr/lib/libsane.so.1.0.17 -usr/lib/sane -usr/lib/sane/libsane-abaton.la -usr/lib/sane/libsane-abaton.so -usr/lib/sane/libsane-abaton.so.1 -usr/lib/sane/libsane-abaton.so.1.0.17 -usr/lib/sane/libsane-agfafocus.la -usr/lib/sane/libsane-agfafocus.so -usr/lib/sane/libsane-agfafocus.so.1 -usr/lib/sane/libsane-agfafocus.so.1.0.17 -usr/lib/sane/libsane-apple.la -usr/lib/sane/libsane-apple.so -usr/lib/sane/libsane-apple.so.1 -usr/lib/sane/libsane-apple.so.1.0.17 -usr/lib/sane/libsane-artec.la -usr/lib/sane/libsane-artec.so -usr/lib/sane/libsane-artec.so.1 -usr/lib/sane/libsane-artec.so.1.0.17 -usr/lib/sane/libsane-artec_eplus48u.la -usr/lib/sane/libsane-artec_eplus48u.so -usr/lib/sane/libsane-artec_eplus48u.so.1 -usr/lib/sane/libsane-artec_eplus48u.so.1.0.17 -usr/lib/sane/libsane-as6e.la -usr/lib/sane/libsane-as6e.so -usr/lib/sane/libsane-as6e.so.1 -usr/lib/sane/libsane-as6e.so.1.0.17 -usr/lib/sane/libsane-avision.la -usr/lib/sane/libsane-avision.so -usr/lib/sane/libsane-avision.so.1 -usr/lib/sane/libsane-avision.so.1.0.17 -usr/lib/sane/libsane-bh.la -usr/lib/sane/libsane-bh.so -usr/lib/sane/libsane-bh.so.1 -usr/lib/sane/libsane-bh.so.1.0.17 -usr/lib/sane/libsane-canon.la -usr/lib/sane/libsane-canon.so -usr/lib/sane/libsane-canon.so.1 -usr/lib/sane/libsane-canon.so.1.0.17 -usr/lib/sane/libsane-canon630u.la -usr/lib/sane/libsane-canon630u.so -usr/lib/sane/libsane-canon630u.so.1 -usr/lib/sane/libsane-canon630u.so.1.0.17 -usr/lib/sane/libsane-coolscan.la -usr/lib/sane/libsane-coolscan.so -usr/lib/sane/libsane-coolscan.so.1 -usr/lib/sane/libsane-coolscan.so.1.0.17 -usr/lib/sane/libsane-coolscan2.la -usr/lib/sane/libsane-coolscan2.so -usr/lib/sane/libsane-coolscan2.so.1 -usr/lib/sane/libsane-coolscan2.so.1.0.17 -usr/lib/sane/libsane-dc210.la -usr/lib/sane/libsane-dc210.so -usr/lib/sane/libsane-dc210.so.1 -usr/lib/sane/libsane-dc210.so.1.0.17 -usr/lib/sane/libsane-dc240.la -usr/lib/sane/libsane-dc240.so -usr/lib/sane/libsane-dc240.so.1 -usr/lib/sane/libsane-dc240.so.1.0.17 -usr/lib/sane/libsane-dc25.la -usr/lib/sane/libsane-dc25.so -usr/lib/sane/libsane-dc25.so.1 -usr/lib/sane/libsane-dc25.so.1.0.17 -usr/lib/sane/libsane-dll.la -usr/lib/sane/libsane-dll.so -usr/lib/sane/libsane-dll.so.1 -usr/lib/sane/libsane-dll.so.1.0.17 -usr/lib/sane/libsane-dmc.la -usr/lib/sane/libsane-dmc.so -usr/lib/sane/libsane-dmc.so.1 -usr/lib/sane/libsane-dmc.so.1.0.17 -usr/lib/sane/libsane-epson.la -usr/lib/sane/libsane-epson.so -usr/lib/sane/libsane-epson.so.1 -usr/lib/sane/libsane-epson.so.1.0.17 -usr/lib/sane/libsane-fujitsu.la -usr/lib/sane/libsane-fujitsu.so -usr/lib/sane/libsane-fujitsu.so.1 -usr/lib/sane/libsane-fujitsu.so.1.0.17 -usr/lib/sane/libsane-genesys.la -usr/lib/sane/libsane-genesys.so -usr/lib/sane/libsane-genesys.so.1 -usr/lib/sane/libsane-genesys.so.1.0.17 -usr/lib/sane/libsane-gt68xx.la -usr/lib/sane/libsane-gt68xx.so -usr/lib/sane/libsane-gt68xx.so.1 -usr/lib/sane/libsane-gt68xx.so.1.0.17 -usr/lib/sane/libsane-hp.la -usr/lib/sane/libsane-hp.so -usr/lib/sane/libsane-hp.so.1 -usr/lib/sane/libsane-hp.so.1.0.17 -usr/lib/sane/libsane-hp4200.la -usr/lib/sane/libsane-hp4200.so -usr/lib/sane/libsane-hp4200.so.1 -usr/lib/sane/libsane-hp4200.so.1.0.17 -usr/lib/sane/libsane-hp5400.la -usr/lib/sane/libsane-hp5400.so -usr/lib/sane/libsane-hp5400.so.1 -usr/lib/sane/libsane-hp5400.so.1.0.17 -usr/lib/sane/libsane-ibm.la -usr/lib/sane/libsane-ibm.so -usr/lib/sane/libsane-ibm.so.1 -usr/lib/sane/libsane-ibm.so.1.0.17 -usr/lib/sane/libsane-leo.la -usr/lib/sane/libsane-leo.so -usr/lib/sane/libsane-leo.so.1 -usr/lib/sane/libsane-leo.so.1.0.17 -usr/lib/sane/libsane-lexmark.la -usr/lib/sane/libsane-lexmark.so -usr/lib/sane/libsane-lexmark.so.1 -usr/lib/sane/libsane-lexmark.so.1.0.17 -usr/lib/sane/libsane-ma1509.la -usr/lib/sane/libsane-ma1509.so -usr/lib/sane/libsane-ma1509.so.1 -usr/lib/sane/libsane-ma1509.so.1.0.17 -usr/lib/sane/libsane-matsushita.la -usr/lib/sane/libsane-matsushita.so -usr/lib/sane/libsane-matsushita.so.1 -usr/lib/sane/libsane-matsushita.so.1.0.17 -usr/lib/sane/libsane-microtek.la -usr/lib/sane/libsane-microtek.so -usr/lib/sane/libsane-microtek.so.1 -usr/lib/sane/libsane-microtek.so.1.0.17 -usr/lib/sane/libsane-microtek2.la -usr/lib/sane/libsane-microtek2.so -usr/lib/sane/libsane-microtek2.so.1 -usr/lib/sane/libsane-microtek2.so.1.0.17 -usr/lib/sane/libsane-mustek.la -usr/lib/sane/libsane-mustek.so -usr/lib/sane/libsane-mustek.so.1 -usr/lib/sane/libsane-mustek.so.1.0.17 -usr/lib/sane/libsane-mustek_usb.la -usr/lib/sane/libsane-mustek_usb.so -usr/lib/sane/libsane-mustek_usb.so.1 -usr/lib/sane/libsane-mustek_usb.so.1.0.17 -usr/lib/sane/libsane-mustek_usb2.la -usr/lib/sane/libsane-mustek_usb2.so -usr/lib/sane/libsane-mustek_usb2.so.1 -usr/lib/sane/libsane-mustek_usb2.so.1.0.17 -usr/lib/sane/libsane-nec.la -usr/lib/sane/libsane-nec.so -usr/lib/sane/libsane-nec.so.1 -usr/lib/sane/libsane-nec.so.1.0.17 -usr/lib/sane/libsane-net.la -usr/lib/sane/libsane-net.so -usr/lib/sane/libsane-net.so.1 -usr/lib/sane/libsane-net.so.1.0.17 -usr/lib/sane/libsane-niash.la -usr/lib/sane/libsane-niash.so -usr/lib/sane/libsane-niash.so.1 -usr/lib/sane/libsane-niash.so.1.0.17 -usr/lib/sane/libsane-pie.la -usr/lib/sane/libsane-pie.so -usr/lib/sane/libsane-pie.so.1 -usr/lib/sane/libsane-pie.so.1.0.17 -usr/lib/sane/libsane-plustek.la -usr/lib/sane/libsane-plustek.so -usr/lib/sane/libsane-plustek.so.1 -usr/lib/sane/libsane-plustek.so.1.0.17 -usr/lib/sane/libsane-plustek_pp.la -usr/lib/sane/libsane-plustek_pp.so -usr/lib/sane/libsane-plustek_pp.so.1 -usr/lib/sane/libsane-plustek_pp.so.1.0.17 -usr/lib/sane/libsane-qcam.la -usr/lib/sane/libsane-qcam.so -usr/lib/sane/libsane-qcam.so.1 -usr/lib/sane/libsane-qcam.so.1.0.17 -usr/lib/sane/libsane-ricoh.la -usr/lib/sane/libsane-ricoh.so -usr/lib/sane/libsane-ricoh.so.1 -usr/lib/sane/libsane-ricoh.so.1.0.17 -usr/lib/sane/libsane-s9036.la -usr/lib/sane/libsane-s9036.so -usr/lib/sane/libsane-s9036.so.1 -usr/lib/sane/libsane-s9036.so.1.0.17 -usr/lib/sane/libsane-sceptre.la -usr/lib/sane/libsane-sceptre.so -usr/lib/sane/libsane-sceptre.so.1 -usr/lib/sane/libsane-sceptre.so.1.0.17 -usr/lib/sane/libsane-sharp.la -usr/lib/sane/libsane-sharp.so -usr/lib/sane/libsane-sharp.so.1 -usr/lib/sane/libsane-sharp.so.1.0.17 -usr/lib/sane/libsane-sm3600.la -usr/lib/sane/libsane-sm3600.so -usr/lib/sane/libsane-sm3600.so.1 -usr/lib/sane/libsane-sm3600.so.1.0.17 -usr/lib/sane/libsane-sm3840.la -usr/lib/sane/libsane-sm3840.so -usr/lib/sane/libsane-sm3840.so.1 -usr/lib/sane/libsane-sm3840.so.1.0.17 -usr/lib/sane/libsane-snapscan.la -usr/lib/sane/libsane-snapscan.so -usr/lib/sane/libsane-snapscan.so.1 -usr/lib/sane/libsane-snapscan.so.1.0.17 -usr/lib/sane/libsane-sp15c.la -usr/lib/sane/libsane-sp15c.so -usr/lib/sane/libsane-sp15c.so.1 -usr/lib/sane/libsane-sp15c.so.1.0.17 -usr/lib/sane/libsane-st400.la -usr/lib/sane/libsane-st400.so -usr/lib/sane/libsane-st400.so.1 -usr/lib/sane/libsane-st400.so.1.0.17 -usr/lib/sane/libsane-tamarack.la -usr/lib/sane/libsane-tamarack.so -usr/lib/sane/libsane-tamarack.so.1 -usr/lib/sane/libsane-tamarack.so.1.0.17 -usr/lib/sane/libsane-teco1.la -usr/lib/sane/libsane-teco1.so -usr/lib/sane/libsane-teco1.so.1 -usr/lib/sane/libsane-teco1.so.1.0.17 -usr/lib/sane/libsane-teco2.la -usr/lib/sane/libsane-teco2.so -usr/lib/sane/libsane-teco2.so.1 -usr/lib/sane/libsane-teco2.so.1.0.17 -usr/lib/sane/libsane-teco3.la -usr/lib/sane/libsane-teco3.so -usr/lib/sane/libsane-teco3.so.1 -usr/lib/sane/libsane-teco3.so.1.0.17 -usr/lib/sane/libsane-test.la -usr/lib/sane/libsane-test.so -usr/lib/sane/libsane-test.so.1 -usr/lib/sane/libsane-test.so.1.0.17 -usr/lib/sane/libsane-u12.la -usr/lib/sane/libsane-u12.so -usr/lib/sane/libsane-u12.so.1 -usr/lib/sane/libsane-u12.so.1.0.17 -usr/lib/sane/libsane-umax.la -usr/lib/sane/libsane-umax.so -usr/lib/sane/libsane-umax.so.1 -usr/lib/sane/libsane-umax.so.1.0.17 -usr/lib/sane/libsane-umax1220u.la -usr/lib/sane/libsane-umax1220u.so -usr/lib/sane/libsane-umax1220u.so.1 -usr/lib/sane/libsane-umax1220u.so.1.0.17 -usr/lib/sane/libsane-umax_pp.la -usr/lib/sane/libsane-umax_pp.so -usr/lib/sane/libsane-umax_pp.so.1 -usr/lib/sane/libsane-umax_pp.so.1.0.17 -usr/lib/sane/libsane-v4l.la -usr/lib/sane/libsane-v4l.so -usr/lib/sane/libsane-v4l.so.1 -usr/lib/sane/libsane-v4l.so.1.0.17 -usr/sbin/saned -#usr/share/doc/sane-1.0.17 -#usr/share/doc/sane-1.0.17/AUTHORS -#usr/share/doc/sane-1.0.17/COPYING -#usr/share/doc/sane-1.0.17/ChangeLog -#usr/share/doc/sane-1.0.17/LICENSE -#usr/share/doc/sane-1.0.17/NEWS -#usr/share/doc/sane-1.0.17/PROBLEMS -#usr/share/doc/sane-1.0.17/PROJECTS -#usr/share/doc/sane-1.0.17/README -#usr/share/doc/sane-1.0.17/README.aix -#usr/share/doc/sane-1.0.17/README.beos -#usr/share/doc/sane-1.0.17/README.darwin -#usr/share/doc/sane-1.0.17/README.djpeg -#usr/share/doc/sane-1.0.17/README.freebsd -#usr/share/doc/sane-1.0.17/README.hp-ux -#usr/share/doc/sane-1.0.17/README.linux -#usr/share/doc/sane-1.0.17/README.netbsd -#usr/share/doc/sane-1.0.17/README.openbsd -#usr/share/doc/sane-1.0.17/README.os2 -#usr/share/doc/sane-1.0.17/README.solaris -#usr/share/doc/sane-1.0.17/README.unixware2 -#usr/share/doc/sane-1.0.17/README.unixware7 -#usr/share/doc/sane-1.0.17/README.windows -#usr/share/doc/sane-1.0.17/README.zeta -#usr/share/doc/sane-1.0.17/backend-writing.txt -#usr/share/doc/sane-1.0.17/canon -#usr/share/doc/sane-1.0.17/canon/canon.changes -#usr/share/doc/sane-1.0.17/canon/canon.install2700F.txt -#usr/share/doc/sane-1.0.17/gt68xx -#usr/share/doc/sane-1.0.17/gt68xx/gt68xx.CHANGES -#usr/share/doc/sane-1.0.17/gt68xx/gt68xx.TODO -#usr/share/doc/sane-1.0.17/leo -#usr/share/doc/sane-1.0.17/leo/leo.txt -#usr/share/doc/sane-1.0.17/matsushita -#usr/share/doc/sane-1.0.17/matsushita/matsushita.txt -#usr/share/doc/sane-1.0.17/mustek -#usr/share/doc/sane-1.0.17/mustek/mustek.CHANGES -#usr/share/doc/sane-1.0.17/mustek_usb -#usr/share/doc/sane-1.0.17/mustek_usb/mustek_usb.CHANGES -#usr/share/doc/sane-1.0.17/mustek_usb/mustek_usb.TODO -#usr/share/doc/sane-1.0.17/mustek_usb2 -#usr/share/doc/sane-1.0.17/mustek_usb2/mustek_usb2.CHANGES -#usr/share/doc/sane-1.0.17/mustek_usb2/mustek_usb2.TODO -#usr/share/doc/sane-1.0.17/niash -#usr/share/doc/sane-1.0.17/niash/niash.TODO -#usr/share/doc/sane-1.0.17/plustek -#usr/share/doc/sane-1.0.17/plustek/FAQ -#usr/share/doc/sane-1.0.17/plustek/MakeModule.sh -#usr/share/doc/sane-1.0.17/plustek/Makefile.kernel24 -#usr/share/doc/sane-1.0.17/plustek/Makefile.kernel26 -#usr/share/doc/sane-1.0.17/plustek/Plustek-PARPORT-TODO.txt -#usr/share/doc/sane-1.0.17/plustek/Plustek-PARPORT.changes -#usr/share/doc/sane-1.0.17/plustek/Plustek-PARPORT.txt -#usr/share/doc/sane-1.0.17/plustek/Plustek-USB-TODO.txt -#usr/share/doc/sane-1.0.17/plustek/Plustek-USB.changes -#usr/share/doc/sane-1.0.17/plustek/Plustek-USB.txt -#usr/share/doc/sane-1.0.17/sane-backends-external.html -#usr/share/doc/sane-1.0.17/sane-backends.html -#usr/share/doc/sane-1.0.17/sane-mfgs-external.html -#usr/share/doc/sane-1.0.17/sane-mfgs.html -#usr/share/doc/sane-1.0.17/sceptre -#usr/share/doc/sane-1.0.17/sceptre/s1200.txt -#usr/share/doc/sane-1.0.17/teco -#usr/share/doc/sane-1.0.17/teco/teco1.txt -#usr/share/doc/sane-1.0.17/teco/teco2.txt -#usr/share/doc/sane-1.0.17/teco/teco3.txt -#usr/share/doc/sane-1.0.17/u12 -#usr/share/doc/sane-1.0.17/u12/U12.changes -#usr/share/doc/sane-1.0.17/u12/U12.todo -#usr/share/doc/sane-1.0.17/umax -#usr/share/doc/sane-1.0.17/umax/negative-types.txt -#usr/share/doc/sane-1.0.17/umax/sane-logo.jpg -#usr/share/doc/sane-1.0.17/umax/sane-umax-advanced-options-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-advanced.jpg -#usr/share/doc/sane-1.0.17/umax/sane-umax-astra-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-config-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-histogram.jpg -#usr/share/doc/sane-1.0.17/umax/sane-umax-mirage-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-not-listed-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-others-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-parport-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-powerlook-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-scanner-clones-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-speed-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-standard-options-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-standard.jpg -#usr/share/doc/sane-1.0.17/umax/sane-umax-text.jpg -#usr/share/doc/sane-1.0.17/umax/sane-umax-text2.jpg -#usr/share/doc/sane-1.0.17/umax/sane-umax-text4.jpg -#usr/share/doc/sane-1.0.17/umax/sane-umax-uc-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax-vista-doc.html -#usr/share/doc/sane-1.0.17/umax/sane-umax.jpg -#usr/share/doc/sane-1.0.17/umax/umax.BUGS -#usr/share/doc/sane-1.0.17/umax/umax.CHANGES -#usr/share/doc/sane-1.0.17/umax/umax.FAQ -#usr/share/doc/sane-1.0.17/umax/umax.TODO -#usr/share/man/man1/gamma4scanimage.1 -#usr/share/man/man1/sane-config.1 -#usr/share/man/man1/sane-find-scanner.1 -#usr/share/man/man1/scanimage.1 -#usr/share/man/man5/sane-abaton.5 -#usr/share/man/man5/sane-agfafocus.5 -#usr/share/man/man5/sane-apple.5 -#usr/share/man/man5/sane-artec.5 -#usr/share/man/man5/sane-artec_eplus48u.5 -#usr/share/man/man5/sane-as6e.5 -#usr/share/man/man5/sane-avision.5 -#usr/share/man/man5/sane-bh.5 -#usr/share/man/man5/sane-canon.5 -#usr/share/man/man5/sane-canon630u.5 -#usr/share/man/man5/sane-canon_pp.5 -#usr/share/man/man5/sane-coolscan.5 -#usr/share/man/man5/sane-coolscan2.5 -#usr/share/man/man5/sane-dc210.5 -#usr/share/man/man5/sane-dc240.5 -#usr/share/man/man5/sane-dc25.5 -#usr/share/man/man5/sane-dll.5 -#usr/share/man/man5/sane-dmc.5 -#usr/share/man/man5/sane-epson.5 -#usr/share/man/man5/sane-fujitsu.5 -#usr/share/man/man5/sane-genesys.5 -#usr/share/man/man5/sane-gphoto2.5 -#usr/share/man/man5/sane-gt68xx.5 -#usr/share/man/man5/sane-hp.5 -#usr/share/man/man5/sane-hp4200.5 -#usr/share/man/man5/sane-hp5400.5 -#usr/share/man/man5/sane-hpsj5s.5 -#usr/share/man/man5/sane-ibm.5 -#usr/share/man/man5/sane-leo.5 -#usr/share/man/man5/sane-lexmark.5 -#usr/share/man/man5/sane-ma1509.5 -#usr/share/man/man5/sane-matsushita.5 -#usr/share/man/man5/sane-microtek.5 -#usr/share/man/man5/sane-microtek2.5 -#usr/share/man/man5/sane-mustek.5 -#usr/share/man/man5/sane-mustek_pp.5 -#usr/share/man/man5/sane-mustek_usb.5 -#usr/share/man/man5/sane-mustek_usb2.5 -#usr/share/man/man5/sane-nec.5 -#usr/share/man/man5/sane-net.5 -#usr/share/man/man5/sane-niash.5 -#usr/share/man/man5/sane-pie.5 -#usr/share/man/man5/sane-pint.5 -#usr/share/man/man5/sane-plustek.5 -#usr/share/man/man5/sane-plustek_pp.5 -#usr/share/man/man5/sane-pnm.5 -#usr/share/man/man5/sane-qcam.5 -#usr/share/man/man5/sane-ricoh.5 -#usr/share/man/man5/sane-s9036.5 -#usr/share/man/man5/sane-sceptre.5 -#usr/share/man/man5/sane-scsi.5 -#usr/share/man/man5/sane-sharp.5 -#usr/share/man/man5/sane-sm3600.5 -#usr/share/man/man5/sane-sm3840.5 -#usr/share/man/man5/sane-snapscan.5 -#usr/share/man/man5/sane-sp15c.5 -#usr/share/man/man5/sane-st400.5 -#usr/share/man/man5/sane-tamarack.5 -#usr/share/man/man5/sane-teco1.5 -#usr/share/man/man5/sane-teco2.5 -#usr/share/man/man5/sane-teco3.5 -#usr/share/man/man5/sane-test.5 -#usr/share/man/man5/sane-u12.5 -#usr/share/man/man5/sane-umax.5 -#usr/share/man/man5/sane-umax1220u.5 -#usr/share/man/man5/sane-umax_pp.5 -#usr/share/man/man5/sane-usb.5 -#usr/share/man/man5/sane-v4l.5 -#usr/share/man/man7/sane.7 -#usr/share/man/man8/saned.8 -#usr/share/sane -#usr/share/sane/artec_eplus48u -#usr/share/sane/gt68xx -#usr/share/sane/snapscan -usr/var/lock -usr/var/lock/sane diff --git a/src/paks/sane/depends.txt b/src/paks/sane/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/sane/install.sh b/src/paks/sane/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/sane/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/sane/uninstall.sh b/src/paks/sane/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/sane/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/sox/ROOTFILES b/src/paks/sox/ROOTFILES deleted file mode 100644 index 244e0f1daf..0000000000 --- a/src/paks/sox/ROOTFILES +++ /dev/null @@ -1,5 +0,0 @@ -usr/bin/sox -usr/bin/soxmix -#usr/share/man/man1/sox.1 -#usr/share/man/man1/soxexam.1 -#usr/share/man/man1/soxmix.1 diff --git a/src/paks/sox/depends.txt b/src/paks/sox/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/sox/install.sh b/src/paks/sox/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/sox/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/sox/uninstall.sh b/src/paks/sox/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/sox/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/spamassassin/ROOTFILES b/src/paks/spamassassin/ROOTFILES deleted file mode 100644 index e4ce75a282..0000000000 --- a/src/paks/spamassassin/ROOTFILES +++ /dev/null @@ -1,214 +0,0 @@ -#etc/mail -#etc/mail/spamassassin -etc/mail/spamassassin/init.pre -etc/mail/spamassassin/local.cf -etc/mail/spamassassin/v310.pre -etc/mail/spamassassin/v312.pre -usr/bin/sa-learn -usr/bin/sa-update -usr/bin/spamassassin -usr/bin/spamc -usr/bin/spamd -#usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/ArchiveIterator.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/AutoWhitelist.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Bayes -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Bayes.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Bayes/CombineChi.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Bayes/CombineNaiveBayes.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/BayesStore -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/BayesStore.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/BayesStore/DBM.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/BayesStore/MySQL.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/BayesStore/PgSQL.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/BayesStore/SDBM.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/BayesStore/SQL.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Client.pm -#usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Conf -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Conf.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Conf/LDAP.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Conf/Parser.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Conf/SQL.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Constants.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/DBBasedAddrList.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Dns.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/DnsResolver.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/EvalTests.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/HTML.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Locales.pm -#usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Locker -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Locker.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Locker/Flock.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Locker/UnixNFSSafe.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Locker/Win32.pm -#usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Logger -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Logger.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Logger/File.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Logger/Stderr.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Logger/Syslog.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/MailingList.pm -#usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Message -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Message.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Message/Metadata -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Message/Metadata.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Message/Metadata/Received.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Message/Node.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/NetSet.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/PerMsgLearner.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/PerMsgStatus.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/PersistentAddrList.pm -#usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/AWL.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/AccessDB.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/AntiVirus.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/AutoLearnThreshold.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/DCC.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/DKIM.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/DomainKeys.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/Hashcash.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/MIMEHeader.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/Pyzor.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/Razor2.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/RelayCountry.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/ReplaceTags.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/SPF.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/SpamCop.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/Test.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/TextCat.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/URIDNSBL.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Plugin/WhiteListSubject.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/PluginHandler.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Reporter.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/SQLBasedAddrList.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/SpamdForkScaling.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/SubProcBackChannel.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Timeout.pm -#usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Util -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Util.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Util/DependencyInfo.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Util/Progress.pm -usr/lib/perl5/site_perl/5.8.5/Mail/SpamAssassin/Util/RegistrarBoundaries.pm -usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Mail/SpamAssassin -#usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Mail/SpamAssassin/.packlist -usr/lib/perl5/site_perl/5.8.5/spamassassin-run.pod -#usr/share/man/man1/sa-learn.1 -#usr/share/man/man1/sa-update.1 -#usr/share/man/man1/spamassassin-run.1 -#usr/share/man/man1/spamassassin.1 -#usr/share/man/man1/spamc.1 -#usr/share/man/man1/spamd.1 -#usr/share/man/man3/Mail::SpamAssassin.3 -#usr/share/man/man3/Mail::SpamAssassin::ArchiveIterator.3 -#usr/share/man/man3/Mail::SpamAssassin::AutoWhitelist.3 -#usr/share/man/man3/Mail::SpamAssassin::Bayes.3 -#usr/share/man/man3/Mail::SpamAssassin::BayesStore.3 -#usr/share/man/man3/Mail::SpamAssassin::BayesStore::MySQL.3 -#usr/share/man/man3/Mail::SpamAssassin::BayesStore::PgSQL.3 -#usr/share/man/man3/Mail::SpamAssassin::BayesStore::SQL.3 -#usr/share/man/man3/Mail::SpamAssassin::Client.3 -#usr/share/man/man3/Mail::SpamAssassin::Conf.3 -#usr/share/man/man3/Mail::SpamAssassin::Conf::LDAP.3 -#usr/share/man/man3/Mail::SpamAssassin::Conf::Parser.3 -#usr/share/man/man3/Mail::SpamAssassin::Conf::SQL.3 -#usr/share/man/man3/Mail::SpamAssassin::DnsResolver.3 -#usr/share/man/man3/Mail::SpamAssassin::Logger.3 -#usr/share/man/man3/Mail::SpamAssassin::Logger::File.3 -#usr/share/man/man3/Mail::SpamAssassin::Logger::Stderr.3 -#usr/share/man/man3/Mail::SpamAssassin::Logger::Syslog.3 -#usr/share/man/man3/Mail::SpamAssassin::Message.3 -#usr/share/man/man3/Mail::SpamAssassin::Message::Metadata.3 -#usr/share/man/man3/Mail::SpamAssassin::Message::Node.3 -#usr/share/man/man3/Mail::SpamAssassin::PerMsgLearner.3 -#usr/share/man/man3/Mail::SpamAssassin::PerMsgStatus.3 -#usr/share/man/man3/Mail::SpamAssassin::PersistentAddrList.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::AWL.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::AccessDB.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::AntiVirus.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::AutoLearnThreshold.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::DCC.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::DKIM.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::DomainKeys.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::Hashcash.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::MIMEHeader.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::Pyzor.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::Razor2.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::RelayCountry.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::ReplaceTags.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::SPF.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::SpamCop.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::Test.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::TextCat.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::URIDNSBL.3 -#usr/share/man/man3/Mail::SpamAssassin::Plugin::WhiteListSubject.3 -#usr/share/man/man3/Mail::SpamAssassin::PluginHandler.3 -#usr/share/man/man3/Mail::SpamAssassin::SQLBasedAddrList.3 -#usr/share/man/man3/Mail::SpamAssassin::SubProcBackChannel.3 -#usr/share/man/man3/Mail::SpamAssassin::Timeout.3 -#usr/share/man/man3/Mail::SpamAssassin::Util.3 -#usr/share/man/man3/Mail::SpamAssassin::Util::Progress.3 -#usr/share/man/man3/spamassassin-run.3 -#usr/share/spamassassin -usr/share/spamassassin/10_misc.cf -usr/share/spamassassin/20_advance_fee.cf -usr/share/spamassassin/20_anti_ratware.cf -usr/share/spamassassin/20_body_tests.cf -usr/share/spamassassin/20_compensate.cf -usr/share/spamassassin/20_dnsbl_tests.cf -usr/share/spamassassin/20_drugs.cf -usr/share/spamassassin/20_fake_helo_tests.cf -usr/share/spamassassin/20_head_tests.cf -usr/share/spamassassin/20_html_tests.cf -usr/share/spamassassin/20_meta_tests.cf -usr/share/spamassassin/20_net_tests.cf -usr/share/spamassassin/20_phrases.cf -usr/share/spamassassin/20_porn.cf -usr/share/spamassassin/20_ratware.cf -usr/share/spamassassin/20_uri_tests.cf -usr/share/spamassassin/23_bayes.cf -usr/share/spamassassin/25_accessdb.cf -usr/share/spamassassin/25_antivirus.cf -usr/share/spamassassin/25_body_tests_es.cf -usr/share/spamassassin/25_body_tests_pl.cf -usr/share/spamassassin/25_dcc.cf -usr/share/spamassassin/25_dkim.cf -usr/share/spamassassin/25_domainkeys.cf -usr/share/spamassassin/25_hashcash.cf -usr/share/spamassassin/25_pyzor.cf -usr/share/spamassassin/25_razor2.cf -usr/share/spamassassin/25_replace.cf -usr/share/spamassassin/25_spf.cf -usr/share/spamassassin/25_textcat.cf -usr/share/spamassassin/25_uribl.cf -usr/share/spamassassin/30_text_de.cf -usr/share/spamassassin/30_text_fr.cf -usr/share/spamassassin/30_text_it.cf -usr/share/spamassassin/30_text_nl.cf -usr/share/spamassassin/30_text_pl.cf -usr/share/spamassassin/30_text_pt_br.cf -usr/share/spamassassin/50_scores.cf -usr/share/spamassassin/60_awl.cf -usr/share/spamassassin/60_whitelist.cf -usr/share/spamassassin/60_whitelist_dkim.cf -usr/share/spamassassin/60_whitelist_spf.cf -usr/share/spamassassin/60_whitelist_subject.cf -usr/share/spamassassin/languages -usr/share/spamassassin/sa-update-pubkey.txt -usr/share/spamassassin/triplets.txt -usr/share/spamassassin/user_prefs.template -usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Digest/SHA1/SHA1.so -usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/Digest/SHA1/SHA1.bs -usr/lib/perl5/5.8.5/IPC -usr/lib/perl5/5.8.5/Text -usr/lib/perl5/site_perl/5.8.5/i386-linux/HTML -usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/HTML/Parser/Parser.bs -usr/lib/perl5/site_perl/5.8.5/i386-linux/auto/HTML/Parser/Parser.so -usr/lib/perl5/5.8.5/Pod/Usage.pm -usr/lib/perl5/5.8.5/Pod/Text -usr/lib/perl5/5.8.5/Pod/Text.pm -usr/lib/perl5/5.8.5/Pod/ParseLink.pm -usr/lib/perl5/5.8.5/Pod/Select.pm -usr/lib/perl5/5.8.5/Pod/Parser.pm -usr/lib/perl5/5.8.5/Pod/InputObjects.pm diff --git a/src/paks/spamassassin/depends.txt b/src/paks/spamassassin/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/spamassassin/install.sh b/src/paks/spamassassin/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/spamassassin/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/spamassassin/uninstall.sh b/src/paks/spamassassin/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/spamassassin/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/spandsp/ROOTFILES b/src/paks/spandsp/ROOTFILES deleted file mode 100644 index 4689120101..0000000000 --- a/src/paks/spandsp/ROOTFILES +++ /dev/null @@ -1,65 +0,0 @@ -#usr/include/spandsp -#usr/include/spandsp.h -#usr/include/spandsp/adsi.h -#usr/include/spandsp/alaw_ulaw.h -#usr/include/spandsp/arctan2.h -#usr/include/spandsp/async.h -#usr/include/spandsp/awgn.h -#usr/include/spandsp/bert.h -#usr/include/spandsp/biquad.h -#usr/include/spandsp/complex.h -#usr/include/spandsp/complex_filters.h -#usr/include/spandsp/dc_restore.h -#usr/include/spandsp/dds.h -#usr/include/spandsp/ec_disable_tone.h -#usr/include/spandsp/echo.h -#usr/include/spandsp/fir.h -#usr/include/spandsp/fsk.h -#usr/include/spandsp/g168models.h -#usr/include/spandsp/g722.h -#usr/include/spandsp/g726.h -#usr/include/spandsp/hdlc.h -#usr/include/spandsp/ima_adpcm.h -#usr/include/spandsp/logging.h -#usr/include/spandsp/mmx.h -#usr/include/spandsp/modem_echo.h -#usr/include/spandsp/noise.h -#usr/include/spandsp/oki_adpcm.h -#usr/include/spandsp/oss.h -#usr/include/spandsp/playout.h -#usr/include/spandsp/plc.h -#usr/include/spandsp/power_meter.h -#usr/include/spandsp/queue.h -#usr/include/spandsp/schedule.h -#usr/include/spandsp/sig_tone.h -#usr/include/spandsp/super_tone_rx.h -#usr/include/spandsp/super_tone_tx.h -#usr/include/spandsp/t30.h -#usr/include/spandsp/t30_fcf.h -#usr/include/spandsp/t31.h -#usr/include/spandsp/t35.h -#usr/include/spandsp/t4.h -#usr/include/spandsp/telephony.h -#usr/include/spandsp/time_scale.h -#usr/include/spandsp/timing.h -#usr/include/spandsp/tone_detect.h -#usr/include/spandsp/tone_generate.h -#usr/include/spandsp/v17rx.h -#usr/include/spandsp/v17tx.h -#usr/include/spandsp/v22bis.h -#usr/include/spandsp/v27ter_rx.h -#usr/include/spandsp/v27ter_tx.h -#usr/include/spandsp/v29rx.h -#usr/include/spandsp/v29tx.h -#usr/include/spandsp/v42.h -#usr/include/spandsp/v42bis.h -#usr/include/spandsp/v8.h -#usr/include/spandsp/vector.h -usr/lib/libspandsp.a -usr/lib/libspandsp.la -usr/lib/libspandsp.so -usr/lib/libspandsp.so.0 -usr/lib/libspandsp.so.0.0.1 -usr/share/spandsp -usr/share/spandsp/global-tones.xml -usr/share/spandsp/tones.dtd diff --git a/src/paks/spandsp/depends.txt b/src/paks/spandsp/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/spandsp/install.sh b/src/paks/spandsp/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/spandsp/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/spandsp/uninstall.sh b/src/paks/spandsp/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/spandsp/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/subversion/ROOTFILES b/src/paks/subversion/ROOTFILES deleted file mode 100644 index 2a3827e97e..0000000000 --- a/src/paks/subversion/ROOTFILES +++ /dev/null @@ -1,361 +0,0 @@ -#usr/bin/apr-config -#usr/bin/apu-config -#usr/bin/neon-config -usr/bin/svn -usr/bin/svnadmin -usr/bin/svndumpfilter -usr/bin/svnlook -usr/bin/svnserve -usr/bin/svnversion -#usr/include/apr-0 -#usr/include/apr-0/apr.h -#usr/include/apr-0/apr_allocator.h -#usr/include/apr-0/apr_anylock.h -#usr/include/apr-0/apr_atomic.h -#usr/include/apr-0/apr_base64.h -#usr/include/apr-0/apr_buckets.h -#usr/include/apr-0/apr_compat.h -#usr/include/apr-0/apr_date.h -#usr/include/apr-0/apr_dbm.h -#usr/include/apr-0/apr_dso.h -#usr/include/apr-0/apr_env.h -#usr/include/apr-0/apr_errno.h -#usr/include/apr-0/apr_file_info.h -#usr/include/apr-0/apr_file_io.h -#usr/include/apr-0/apr_fnmatch.h -#usr/include/apr-0/apr_general.h -#usr/include/apr-0/apr_getopt.h -#usr/include/apr-0/apr_global_mutex.h -#usr/include/apr-0/apr_hash.h -#usr/include/apr-0/apr_hooks.h -#usr/include/apr-0/apr_inherit.h -#usr/include/apr-0/apr_ldap.h -#usr/include/apr-0/apr_ldap_url.h -#usr/include/apr-0/apr_lib.h -#usr/include/apr-0/apr_md4.h -#usr/include/apr-0/apr_md5.h -#usr/include/apr-0/apr_mmap.h -#usr/include/apr-0/apr_network_io.h -#usr/include/apr-0/apr_optional.h -#usr/include/apr-0/apr_optional_hooks.h -#usr/include/apr-0/apr_poll.h -#usr/include/apr-0/apr_pools.h -#usr/include/apr-0/apr_portable.h -#usr/include/apr-0/apr_proc_mutex.h -#usr/include/apr-0/apr_queue.h -#usr/include/apr-0/apr_reslist.h -#usr/include/apr-0/apr_ring.h -#usr/include/apr-0/apr_rmm.h -#usr/include/apr-0/apr_sdbm.h -#usr/include/apr-0/apr_sha1.h -#usr/include/apr-0/apr_shm.h -#usr/include/apr-0/apr_signal.h -#usr/include/apr-0/apr_strings.h -#usr/include/apr-0/apr_strmatch.h -#usr/include/apr-0/apr_support.h -#usr/include/apr-0/apr_tables.h -#usr/include/apr-0/apr_thread_cond.h -#usr/include/apr-0/apr_thread_mutex.h -#usr/include/apr-0/apr_thread_proc.h -#usr/include/apr-0/apr_thread_rwlock.h -#usr/include/apr-0/apr_time.h -#usr/include/apr-0/apr_uri.h -#usr/include/apr-0/apr_user.h -#usr/include/apr-0/apr_uuid.h -#usr/include/apr-0/apr_version.h -#usr/include/apr-0/apr_want.h -#usr/include/apr-0/apr_xlate.h -#usr/include/apr-0/apr_xml.h -#usr/include/apr-0/apu.h -#usr/include/apr-0/apu_compat.h -#usr/include/apr-0/apu_version.h -#usr/include/apr-0/apu_want.h -#usr/include/neon -#usr/include/neon/ne_207.h -#usr/include/neon/ne_acl.h -#usr/include/neon/ne_alloc.h -#usr/include/neon/ne_auth.h -#usr/include/neon/ne_basic.h -#usr/include/neon/ne_compress.h -#usr/include/neon/ne_dates.h -#usr/include/neon/ne_defs.h -#usr/include/neon/ne_i18n.h -#usr/include/neon/ne_locks.h -#usr/include/neon/ne_md5.h -#usr/include/neon/ne_props.h -#usr/include/neon/ne_redirect.h -#usr/include/neon/ne_request.h -#usr/include/neon/ne_session.h -#usr/include/neon/ne_socket.h -#usr/include/neon/ne_ssl.h -#usr/include/neon/ne_string.h -#usr/include/neon/ne_uri.h -#usr/include/neon/ne_utils.h -#usr/include/neon/ne_xml.h -#usr/include/neon/ne_xmlreq.h -#usr/include/subversion-1 -#usr/include/subversion-1/mod_dav_svn.h -#usr/include/subversion-1/svn-revision.txt -#usr/include/subversion-1/svn_auth.h -#usr/include/subversion-1/svn_base64.h -#usr/include/subversion-1/svn_client.h -#usr/include/subversion-1/svn_cmdline.h -#usr/include/subversion-1/svn_config.h -#usr/include/subversion-1/svn_ctype.h -#usr/include/subversion-1/svn_dav.h -#usr/include/subversion-1/svn_delta.h -#usr/include/subversion-1/svn_diff.h -#usr/include/subversion-1/svn_error.h -#usr/include/subversion-1/svn_error_codes.h -#usr/include/subversion-1/svn_fs.h -#usr/include/subversion-1/svn_hash.h -#usr/include/subversion-1/svn_io.h -#usr/include/subversion-1/svn_md5.h -#usr/include/subversion-1/svn_nls.h -#usr/include/subversion-1/svn_opt.h -#usr/include/subversion-1/svn_path.h -#usr/include/subversion-1/svn_pools.h -#usr/include/subversion-1/svn_props.h -#usr/include/subversion-1/svn_quoprint.h -#usr/include/subversion-1/svn_ra.h -#usr/include/subversion-1/svn_ra_svn.h -#usr/include/subversion-1/svn_repos.h -#usr/include/subversion-1/svn_sorts.h -#usr/include/subversion-1/svn_string.h -#usr/include/subversion-1/svn_subst.h -#usr/include/subversion-1/svn_time.h -#usr/include/subversion-1/svn_types.h -#usr/include/subversion-1/svn_utf.h -#usr/include/subversion-1/svn_version.h -#usr/include/subversion-1/svn_wc.h -#usr/include/subversion-1/svn_xml.h -usr/lib/apache/mod_authz_svn.so -usr/lib/apache/mod_dav_svn.so -#usr/lib/apr-0 -#usr/lib/apr-0/apr_rules.mk -#usr/lib/apr-0/libtool -#usr/lib/libapr-0.a -#usr/lib/libapr-0.la -usr/lib/libapr-0.so -usr/lib/libapr-0.so.0 -usr/lib/libapr-0.so.0.9.7 -#usr/lib/libaprutil-0.a -#usr/lib/libaprutil-0.la -usr/lib/libaprutil-0.so -usr/lib/libaprutil-0.so.0 -usr/lib/libaprutil-0.so.0.9.7 -#usr/lib/libneon.a -#usr/lib/libneon.la -usr/lib/libneon.so -usr/lib/libneon.so.25 -usr/lib/libneon.so.25.0.5 -#usr/lib/libsvn_client-1.a -#usr/lib/libsvn_client-1.la -usr/lib/libsvn_client-1.so -usr/lib/libsvn_client-1.so.0 -usr/lib/libsvn_client-1.so.0.0.0 -#usr/lib/libsvn_delta-1.a -#usr/lib/libsvn_delta-1.la -usr/lib/libsvn_delta-1.so -usr/lib/libsvn_delta-1.so.0 -usr/lib/libsvn_delta-1.so.0.0.0 -#usr/lib/libsvn_diff-1.a -#usr/lib/libsvn_diff-1.la -usr/lib/libsvn_diff-1.so -usr/lib/libsvn_diff-1.so.0 -usr/lib/libsvn_diff-1.so.0.0.0 -#usr/lib/libsvn_fs-1.a -#usr/lib/libsvn_fs-1.la -usr/lib/libsvn_fs-1.so -usr/lib/libsvn_fs-1.so.0 -usr/lib/libsvn_fs-1.so.0.0.0 -#usr/lib/libsvn_fs_fs-1.a -#usr/lib/libsvn_fs_fs-1.la -usr/lib/libsvn_fs_fs-1.so -usr/lib/libsvn_fs_fs-1.so.0 -usr/lib/libsvn_fs_fs-1.so.0.0.0 -#usr/lib/libsvn_ra-1.a -#usr/lib/libsvn_ra-1.la -usr/lib/libsvn_ra-1.so -usr/lib/libsvn_ra-1.so.0 -usr/lib/libsvn_ra-1.so.0.0.0 -#usr/lib/libsvn_ra_dav-1.a -#usr/lib/libsvn_ra_dav-1.la -usr/lib/libsvn_ra_dav-1.so -usr/lib/libsvn_ra_dav-1.so.0 -usr/lib/libsvn_ra_dav-1.so.0.0.0 -#usr/lib/libsvn_ra_local-1.a -#usr/lib/libsvn_ra_local-1.la -usr/lib/libsvn_ra_local-1.so -usr/lib/libsvn_ra_local-1.so.0 -usr/lib/libsvn_ra_local-1.so.0.0.0 -#usr/lib/libsvn_ra_svn-1.a -#usr/lib/libsvn_ra_svn-1.la -usr/lib/libsvn_ra_svn-1.so -usr/lib/libsvn_ra_svn-1.so.0 -usr/lib/libsvn_ra_svn-1.so.0.0.0 -#usr/lib/libsvn_repos-1.a -#usr/lib/libsvn_repos-1.la -usr/lib/libsvn_repos-1.so -usr/lib/libsvn_repos-1.so.0 -usr/lib/libsvn_repos-1.so.0.0.0 -#usr/lib/libsvn_subr-1.a -#usr/lib/libsvn_subr-1.la -usr/lib/libsvn_subr-1.so -usr/lib/libsvn_subr-1.so.0 -usr/lib/libsvn_subr-1.so.0.0.0 -#usr/lib/libsvn_wc-1.a -#usr/lib/libsvn_wc-1.la -usr/lib/libsvn_wc-1.so -usr/lib/libsvn_wc-1.so.0 -usr/lib/libsvn_wc-1.so.0.0.0 -#usr/lib/pkgconfig/neon.pc -#usr/share/doc/neon-0.25.5 -#usr/share/doc/neon-0.25.5/html -#usr/share/doc/neon-0.25.5/html/apas01.html -#usr/share/doc/neon-0.25.5/html/apas02.html -#usr/share/doc/neon-0.25.5/html/apas03.html -#usr/share/doc/neon-0.25.5/html/apas04.html -#usr/share/doc/neon-0.25.5/html/apas05.html -#usr/share/doc/neon-0.25.5/html/apas06.html -#usr/share/doc/neon-0.25.5/html/apas07.html -#usr/share/doc/neon-0.25.5/html/apas08.html -#usr/share/doc/neon-0.25.5/html/apas09.html -#usr/share/doc/neon-0.25.5/html/apas10.html -#usr/share/doc/neon-0.25.5/html/apas11.html -#usr/share/doc/neon-0.25.5/html/apas12.html -#usr/share/doc/neon-0.25.5/html/api.html -#usr/share/doc/neon-0.25.5/html/biblio.html -#usr/share/doc/neon-0.25.5/html/compliance.html -#usr/share/doc/neon-0.25.5/html/features.html -#usr/share/doc/neon-0.25.5/html/gfdl.html -#usr/share/doc/neon-0.25.5/html/index.html -#usr/share/doc/neon-0.25.5/html/intro.html -#usr/share/doc/neon-0.25.5/html/ref.html -#usr/share/doc/neon-0.25.5/html/refalloc.html -#usr/share/doc/neon-0.25.5/html/refauth.html -#usr/share/doc/neon-0.25.5/html/refbuf.html -#usr/share/doc/neon-0.25.5/html/refbufapp.html -#usr/share/doc/neon-0.25.5/html/refbufcr.html -#usr/share/doc/neon-0.25.5/html/refbufdest.html -#usr/share/doc/neon-0.25.5/html/refbufutil.html -#usr/share/doc/neon-0.25.5/html/refcert.html -#usr/share/doc/neon-0.25.5/html/refclicert.html -#usr/share/doc/neon-0.25.5/html/refconfig.html -#usr/share/doc/neon-0.25.5/html/referr.html -#usr/share/doc/neon-0.25.5/html/refgetst.html -#usr/share/doc/neon-0.25.5/html/refiaddr.html -#usr/share/doc/neon-0.25.5/html/refneon.html -#usr/share/doc/neon-0.25.5/html/refopts.html -#usr/share/doc/neon-0.25.5/html/refreq.html -#usr/share/doc/neon-0.25.5/html/refreqbody.html -#usr/share/doc/neon-0.25.5/html/refreqhdr.html -#usr/share/doc/neon-0.25.5/html/refreqopts.html -#usr/share/doc/neon-0.25.5/html/refresolve.html -#usr/share/doc/neon-0.25.5/html/refresphdr.html -#usr/share/doc/neon-0.25.5/html/refsess.html -#usr/share/doc/neon-0.25.5/html/refshave.html -#usr/share/doc/neon-0.25.5/html/refsockinit.html -#usr/share/doc/neon-0.25.5/html/refsslca.html -#usr/share/doc/neon-0.25.5/html/refsslcert2.html -#usr/share/doc/neon-0.25.5/html/refsslcertio.html -#usr/share/doc/neon-0.25.5/html/refssldname.html -#usr/share/doc/neon-0.25.5/html/refsslvfy.html -#usr/share/doc/neon-0.25.5/html/refstatus.html -#usr/share/doc/neon-0.25.5/html/reftok.html -#usr/share/doc/neon-0.25.5/html/refvers.html -#usr/share/doc/neon-0.25.5/html/refxml.html -#usr/share/doc/neon-0.25.5/html/using.html -#usr/share/doc/neon-0.25.5/html/xml.html -#usr/share/man/man1/neon-config.1 -#usr/share/man/man1/svn.1 -#usr/share/man/man1/svnadmin.1 -#usr/share/man/man1/svndumpfilter.1 -#usr/share/man/man1/svnlook.1 -#usr/share/man/man1/svnversion.1 -#usr/share/man/man3/ne_add_request_header.3 -#usr/share/man/man3/ne_addr_destroy.3 -#usr/share/man/man3/ne_addr_error.3 -#usr/share/man/man3/ne_addr_first.3 -#usr/share/man/man3/ne_addr_next.3 -#usr/share/man/man3/ne_addr_resolve.3 -#usr/share/man/man3/ne_addr_result.3 -#usr/share/man/man3/ne_buffer.3 -#usr/share/man/man3/ne_buffer_altered.3 -#usr/share/man/man3/ne_buffer_append.3 -#usr/share/man/man3/ne_buffer_clear.3 -#usr/share/man/man3/ne_buffer_concat.3 -#usr/share/man/man3/ne_buffer_create.3 -#usr/share/man/man3/ne_buffer_destroy.3 -#usr/share/man/man3/ne_buffer_finish.3 -#usr/share/man/man3/ne_buffer_grow.3 -#usr/share/man/man3/ne_buffer_ncreate.3 -#usr/share/man/man3/ne_buffer_zappend.3 -#usr/share/man/man3/ne_calloc.3 -#usr/share/man/man3/ne_close_connection.3 -#usr/share/man/man3/ne_forget_auth.3 -#usr/share/man/man3/ne_get_error.3 -#usr/share/man/man3/ne_get_response_header.3 -#usr/share/man/man3/ne_get_scheme.3 -#usr/share/man/man3/ne_get_server_hostport.3 -#usr/share/man/man3/ne_get_status.3 -#usr/share/man/man3/ne_iaddr_cmp.3 -#usr/share/man/man3/ne_iaddr_free.3 -#usr/share/man/man3/ne_iaddr_make.3 -#usr/share/man/man3/ne_iaddr_print.3 -#usr/share/man/man3/ne_iaddr_typeof.3 -#usr/share/man/man3/ne_malloc.3 -#usr/share/man/man3/ne_oom_callback.3 -#usr/share/man/man3/ne_print_request_header.3 -#usr/share/man/man3/ne_qtoken.3 -#usr/share/man/man3/ne_realloc.3 -#usr/share/man/man3/ne_request_create.3 -#usr/share/man/man3/ne_request_destroy.3 -#usr/share/man/man3/ne_request_dispatch.3 -#usr/share/man/man3/ne_response_header_iterate.3 -#usr/share/man/man3/ne_session_create.3 -#usr/share/man/man3/ne_session_destroy.3 -#usr/share/man/man3/ne_session_proxy.3 -#usr/share/man/man3/ne_set_error.3 -#usr/share/man/man3/ne_set_persist.3 -#usr/share/man/man3/ne_set_proxy_auth.3 -#usr/share/man/man3/ne_set_read_timeout.3 -#usr/share/man/man3/ne_set_request_body_buffer.3 -#usr/share/man/man3/ne_set_request_body_fd.3 -#usr/share/man/man3/ne_set_request_expect100.3 -#usr/share/man/man3/ne_set_server_auth.3 -#usr/share/man/man3/ne_set_useragent.3 -#usr/share/man/man3/ne_shave.3 -#usr/share/man/man3/ne_sock_init.3 -#usr/share/man/man3/ne_ssl_cert_cmp.3 -#usr/share/man/man3/ne_ssl_cert_export.3 -#usr/share/man/man3/ne_ssl_cert_free.3 -#usr/share/man/man3/ne_ssl_cert_identity.3 -#usr/share/man/man3/ne_ssl_cert_import.3 -#usr/share/man/man3/ne_ssl_cert_issuer.3 -#usr/share/man/man3/ne_ssl_cert_read.3 -#usr/share/man/man3/ne_ssl_cert_signedby.3 -#usr/share/man/man3/ne_ssl_cert_subject.3 -#usr/share/man/man3/ne_ssl_cert_write.3 -#usr/share/man/man3/ne_ssl_clicert_decrypt.3 -#usr/share/man/man3/ne_ssl_clicert_encrypted.3 -#usr/share/man/man3/ne_ssl_clicert_free.3 -#usr/share/man/man3/ne_ssl_clicert_name.3 -#usr/share/man/man3/ne_ssl_clicert_owner.3 -#usr/share/man/man3/ne_ssl_clicert_read.3 -#usr/share/man/man3/ne_ssl_dname_cmp.3 -#usr/share/man/man3/ne_ssl_readable_dname.3 -#usr/share/man/man3/ne_ssl_set_verify.3 -#usr/share/man/man3/ne_ssl_trust_cert.3 -#usr/share/man/man3/ne_ssl_trust_default_ca.3 -#usr/share/man/man3/ne_status.3 -#usr/share/man/man3/ne_strdup.3 -#usr/share/man/man3/ne_strndup.3 -#usr/share/man/man3/ne_token.3 -#usr/share/man/man3/ne_version_match.3 -#usr/share/man/man3/ne_version_string.3 -#usr/share/man/man3/ne_xml_create.3 -#usr/share/man/man3/ne_xml_destroy.3 -#usr/share/man/man3/neon.3 -#usr/share/man/man5/svnserve.conf.5 -#usr/share/man/man8/svnserve.8 diff --git a/src/paks/subversion/depends.txt b/src/paks/subversion/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/subversion/install.sh b/src/paks/subversion/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/subversion/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/subversion/uninstall.sh b/src/paks/subversion/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/subversion/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/tcpwrapper/ROOTFILES b/src/paks/tcpwrapper/ROOTFILES deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/tcpwrapper/depends.txt b/src/paks/tcpwrapper/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/tcpwrapper/install.sh b/src/paks/tcpwrapper/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/tcpwrapper/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/tcpwrapper/uninstall.sh b/src/paks/tcpwrapper/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/tcpwrapper/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/tftp-hpa/ROOTFILES b/src/paks/tftp-hpa/ROOTFILES deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/tftp-hpa/depends.txt b/src/paks/tftp-hpa/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/tftp-hpa/install.sh b/src/paks/tftp-hpa/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/tftp-hpa/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/tftp-hpa/uninstall.sh b/src/paks/tftp-hpa/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/tftp-hpa/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/videolan/ROOTFILES b/src/paks/videolan/ROOTFILES deleted file mode 100644 index d4b8dd378c..0000000000 --- a/src/paks/videolan/ROOTFILES +++ /dev/null @@ -1,427 +0,0 @@ -usr/bin/vlc -usr/bin/vlc-config -#usr/include/vlc -#usr/include/vlc/aout.h -#usr/include/vlc/decoder.h -#usr/include/vlc/input.h -#usr/include/vlc/intf.h -#usr/include/vlc/libvlc.h -#usr/include/vlc/mediacontrol.h -#usr/include/vlc/mediacontrol_structures.h -#usr/include/vlc/sout.h -#usr/include/vlc/vlc.h -#usr/include/vlc/vout.h -usr/lib/libvlc.a -#usr/lib/mozilla -#usr/lib/mozilla/components -usr/lib/vlc -#usr/lib/vlc/access -#usr/lib/vlc/access/libaccess_directory_plugin.so -#usr/lib/vlc/access/libaccess_fake_plugin.so -#usr/lib/vlc/access/libaccess_file_plugin.so -#usr/lib/vlc/access/libaccess_ftp_plugin.so -#usr/lib/vlc/access/libaccess_http_plugin.so -#usr/lib/vlc/access/libaccess_mms_plugin.so -#usr/lib/vlc/access/libaccess_smb_plugin.so -#usr/lib/vlc/access/libaccess_tcp_plugin.so -#usr/lib/vlc/access/libaccess_udp_plugin.so -#usr/lib/vlc/access/libcdda_plugin.so -#usr/lib/vlc/access/libvcd_plugin.so -#usr/lib/vlc/access_filter -#usr/lib/vlc/access_filter/libaccess_filter_record_plugin.so -#usr/lib/vlc/access_filter/libaccess_filter_timeshift_plugin.so -#usr/lib/vlc/access_output -#usr/lib/vlc/access_output/libaccess_output_dummy_plugin.so -#usr/lib/vlc/access_output/libaccess_output_file_plugin.so -#usr/lib/vlc/access_output/libaccess_output_http_plugin.so -#usr/lib/vlc/access_output/libaccess_output_udp_plugin.so -#usr/lib/vlc/audio_filter -#usr/lib/vlc/audio_filter/liba52tospdif_plugin.so -#usr/lib/vlc/audio_filter/libaudio_format_plugin.so -#usr/lib/vlc/audio_filter/libbandlimited_resampler_plugin.so -#usr/lib/vlc/audio_filter/libdolby_surround_decoder_plugin.so -#usr/lib/vlc/audio_filter/libdtstospdif_plugin.so -#usr/lib/vlc/audio_filter/libequalizer_plugin.so -#usr/lib/vlc/audio_filter/libfixed32tofloat32_plugin.so -#usr/lib/vlc/audio_filter/libfixed32tos16_plugin.so -#usr/lib/vlc/audio_filter/libfloat32tos16_plugin.so -#usr/lib/vlc/audio_filter/libfloat32tos8_plugin.so -#usr/lib/vlc/audio_filter/libfloat32tou16_plugin.so -#usr/lib/vlc/audio_filter/libfloat32tou8_plugin.so -#usr/lib/vlc/audio_filter/libheadphone_channel_mixer_plugin.so -#usr/lib/vlc/audio_filter/liblinear_resampler_plugin.so -#usr/lib/vlc/audio_filter/libmpgatofixed32_plugin.so -#usr/lib/vlc/audio_filter/libnormvol_plugin.so -#usr/lib/vlc/audio_filter/libparam_eq_plugin.so -#usr/lib/vlc/audio_filter/libs16tofixed32_plugin.so -#usr/lib/vlc/audio_filter/libs16tofloat32_plugin.so -#usr/lib/vlc/audio_filter/libs16tofloat32swab_plugin.so -#usr/lib/vlc/audio_filter/libs8tofloat32_plugin.so -#usr/lib/vlc/audio_filter/libsimple_channel_mixer_plugin.so -#usr/lib/vlc/audio_filter/libtrivial_channel_mixer_plugin.so -#usr/lib/vlc/audio_filter/libtrivial_resampler_plugin.so -#usr/lib/vlc/audio_filter/libu8tofixed32_plugin.so -#usr/lib/vlc/audio_filter/libu8tofloat32_plugin.so -#usr/lib/vlc/audio_filter/libugly_resampler_plugin.so -#usr/lib/vlc/audio_mixer -#usr/lib/vlc/audio_mixer/libfloat32_mixer_plugin.so -#usr/lib/vlc/audio_mixer/libspdif_mixer_plugin.so -#usr/lib/vlc/audio_mixer/libtrivial_mixer_plugin.so -#usr/lib/vlc/audio_output -#usr/lib/vlc/audio_output/libaout_file_plugin.so -#usr/lib/vlc/audio_output/liboss_plugin.so -#usr/lib/vlc/codec -#usr/lib/vlc/codec/liba52_plugin.so -#usr/lib/vlc/codec/libadpcm_plugin.so -#usr/lib/vlc/codec/libaraw_plugin.so -#usr/lib/vlc/codec/libcinepak_plugin.so -#usr/lib/vlc/codec/libcmml_plugin.so -#usr/lib/vlc/codec/libcvdsub_plugin.so -#usr/lib/vlc/codec/libdts_plugin.so -#usr/lib/vlc/codec/libdvbsub_plugin.so -#usr/lib/vlc/codec/libfake_plugin.so -#usr/lib/vlc/codec/libflacdec_plugin.so -#usr/lib/vlc/codec/liblibmpeg2_plugin.so -#usr/lib/vlc/codec/liblpcm_plugin.so -#usr/lib/vlc/codec/libmpeg_audio_plugin.so -#usr/lib/vlc/codec/libpng_plugin.so -#usr/lib/vlc/codec/librawvideo_plugin.so -#usr/lib/vlc/codec/libspudec_plugin.so -#usr/lib/vlc/codec/libsubsdec_plugin.so -#usr/lib/vlc/codec/libsvcdsub_plugin.so -#usr/lib/vlc/codec/libvorbis_plugin.so -#usr/lib/vlc/control -#usr/lib/vlc/control/libgestures_plugin.so -#usr/lib/vlc/control/libhotkeys_plugin.so -#usr/lib/vlc/control/libhttp_plugin.so -#usr/lib/vlc/control/libnetsync_plugin.so -#usr/lib/vlc/control/librc_plugin.so -#usr/lib/vlc/control/libshowintf_plugin.so -#usr/lib/vlc/control/libtelnet_plugin.so -#usr/lib/vlc/demux -#usr/lib/vlc/demux/liba52sys_plugin.so -#usr/lib/vlc/demux/libaiff_plugin.so -#usr/lib/vlc/demux/libasf_plugin.so -#usr/lib/vlc/demux/libau_plugin.so -#usr/lib/vlc/demux/libavi_plugin.so -#usr/lib/vlc/demux/libdemuxdump_plugin.so -#usr/lib/vlc/demux/libdtssys_plugin.so -#usr/lib/vlc/demux/libflac_plugin.so -#usr/lib/vlc/demux/libh264_plugin.so -#usr/lib/vlc/demux/libm3u_plugin.so -#usr/lib/vlc/demux/libm4a_plugin.so -#usr/lib/vlc/demux/libm4v_plugin.so -#usr/lib/vlc/demux/libmjpeg_plugin.so -#usr/lib/vlc/demux/libmp4_plugin.so -#usr/lib/vlc/demux/libmpga_plugin.so -#usr/lib/vlc/demux/libmpgv_plugin.so -#usr/lib/vlc/demux/libnsc_plugin.so -#usr/lib/vlc/demux/libnsv_plugin.so -#usr/lib/vlc/demux/libnuv_plugin.so -#usr/lib/vlc/demux/libogg_plugin.so -#usr/lib/vlc/demux/libplaylist_plugin.so -#usr/lib/vlc/demux/libps_plugin.so -#usr/lib/vlc/demux/libpva_plugin.so -#usr/lib/vlc/demux/librawdv_plugin.so -#usr/lib/vlc/demux/libreal_plugin.so -#usr/lib/vlc/demux/libsgimb_plugin.so -#usr/lib/vlc/demux/libsubtitle_plugin.so -#usr/lib/vlc/demux/libty_plugin.so -#usr/lib/vlc/demux/libvobsub_plugin.so -#usr/lib/vlc/demux/libvoc_plugin.so -#usr/lib/vlc/demux/libwav_plugin.so -#usr/lib/vlc/demux/libxa_plugin.so -#usr/lib/vlc/gui -#usr/lib/vlc/gui/libncurses_plugin.so -#usr/lib/vlc/libffmpeg.a -#usr/lib/vlc/libi420_rgb_mmx.a -#usr/lib/vlc/libi420_ymga_mmx.a -#usr/lib/vlc/libi420_yuy2_mmx.a -#usr/lib/vlc/libi422_yuy2_mmx.a -#usr/lib/vlc/libmemcpy3dn.a -#usr/lib/vlc/libmemcpymmx.a -#usr/lib/vlc/libmemcpymmxext.a -#usr/lib/vlc/libstream_out_switcher.a -#usr/lib/vlc/misc -#usr/lib/vlc/misc/libdummy_plugin.so -#usr/lib/vlc/misc/libexport_plugin.so -#usr/lib/vlc/misc/libfreetype_plugin.so -#usr/lib/vlc/misc/libgrowl_plugin.so -#usr/lib/vlc/misc/libipv4_plugin.so -#usr/lib/vlc/misc/libipv6_plugin.so -#usr/lib/vlc/misc/liblogger_plugin.so -#usr/lib/vlc/misc/libmemcpy_plugin.so -#usr/lib/vlc/misc/libscreensaver_plugin.so -#usr/lib/vlc/misc/libvod_rtsp_plugin.so -#usr/lib/vlc/misc/libxml_plugin.so -#usr/lib/vlc/misc/libxtag_plugin.so -#usr/lib/vlc/mux -#usr/lib/vlc/mux/libmux_asf_plugin.so -#usr/lib/vlc/mux/libmux_avi_plugin.so -#usr/lib/vlc/mux/libmux_dummy_plugin.so -#usr/lib/vlc/mux/libmux_mp4_plugin.so -#usr/lib/vlc/mux/libmux_mpjpeg_plugin.so -#usr/lib/vlc/mux/libmux_ogg_plugin.so -#usr/lib/vlc/mux/libmux_ps_plugin.so -#usr/lib/vlc/mux/libmux_wav_plugin.so -#usr/lib/vlc/packetizer -#usr/lib/vlc/packetizer/libpacketizer_copy_plugin.so -#usr/lib/vlc/packetizer/libpacketizer_h264_plugin.so -#usr/lib/vlc/packetizer/libpacketizer_mpeg4audio_plugin.so -#usr/lib/vlc/packetizer/libpacketizer_mpeg4video_plugin.so -#usr/lib/vlc/packetizer/libpacketizer_mpegvideo_plugin.so -#usr/lib/vlc/services_discovery -#usr/lib/vlc/services_discovery/libpodcast_plugin.so -#usr/lib/vlc/services_discovery/libsap_plugin.so -#usr/lib/vlc/services_discovery/libshout_plugin.so -#usr/lib/vlc/stream_out -#usr/lib/vlc/stream_out/libstream_out_bridge_plugin.so -#usr/lib/vlc/stream_out/libstream_out_description_plugin.so -#usr/lib/vlc/stream_out/libstream_out_display_plugin.so -#usr/lib/vlc/stream_out/libstream_out_dummy_plugin.so -#usr/lib/vlc/stream_out/libstream_out_duplicate_plugin.so -#usr/lib/vlc/stream_out/libstream_out_es_plugin.so -#usr/lib/vlc/stream_out/libstream_out_gather_plugin.so -#usr/lib/vlc/stream_out/libstream_out_mosaic_bridge_plugin.so -#usr/lib/vlc/stream_out/libstream_out_rtp_plugin.so -#usr/lib/vlc/stream_out/libstream_out_standard_plugin.so -#usr/lib/vlc/stream_out/libstream_out_transcode_plugin.so -#usr/lib/vlc/video_chroma -#usr/lib/vlc/video_chroma/libi420_rgb_plugin.so -#usr/lib/vlc/video_chroma/libi420_ymga_plugin.so -#usr/lib/vlc/video_chroma/libi420_yuy2_plugin.so -#usr/lib/vlc/video_chroma/libi422_yuy2_plugin.so -#usr/lib/vlc/video_filter -#usr/lib/vlc/video_filter/libadjust_plugin.so -#usr/lib/vlc/video_filter/libblend_plugin.so -#usr/lib/vlc/video_filter/libclone_plugin.so -#usr/lib/vlc/video_filter/libcrop_plugin.so -#usr/lib/vlc/video_filter/libdeinterlace_plugin.so -#usr/lib/vlc/video_filter/libdistort_plugin.so -#usr/lib/vlc/video_filter/libinvert_plugin.so -#usr/lib/vlc/video_filter/liblogo_plugin.so -#usr/lib/vlc/video_filter/libmagnify_plugin.so -#usr/lib/vlc/video_filter/libmarq_plugin.so -#usr/lib/vlc/video_filter/libmosaic_plugin.so -#usr/lib/vlc/video_filter/libmotionblur_plugin.so -#usr/lib/vlc/video_filter/libmotiondetect_plugin.so -#usr/lib/vlc/video_filter/libosdmenu_plugin.so -#usr/lib/vlc/video_filter/librss_plugin.so -#usr/lib/vlc/video_filter/librv32_plugin.so -#usr/lib/vlc/video_filter/libscale_plugin.so -#usr/lib/vlc/video_filter/libtime_plugin.so -#usr/lib/vlc/video_filter/libtransform_plugin.so -#usr/lib/vlc/video_filter/libwall_plugin.so -#usr/lib/vlc/video_output -#usr/lib/vlc/video_output/libfb_plugin.so -#usr/lib/vlc/video_output/libimage_plugin.so -#usr/lib/vlc/visualization -#usr/lib/vlc/visualization/libvisual_plugin.so -#usr/share/doc/vlc -#usr/share/doc/vlc/bugreport-howto.txt -#usr/share/doc/vlc/fortunes.txt -#usr/share/doc/vlc/intf-cdda.txt -#usr/share/doc/vlc/intf-vcd.txt -#usr/share/locale/ca/LC_MESSAGES/vlc.mo -#usr/share/locale/da/LC_MESSAGES/vlc.mo -#usr/share/locale/de/LC_MESSAGES/vlc.mo -#usr/share/locale/en_GB/LC_MESSAGES/vlc.mo -#usr/share/locale/es/LC_MESSAGES/vlc.mo -#usr/share/locale/fr/LC_MESSAGES/vlc.mo -#usr/share/locale/gl/LC_MESSAGES/vlc.mo -#usr/share/locale/he/LC_MESSAGES/vlc.mo -#usr/share/locale/hi/LC_MESSAGES/vlc.mo -#usr/share/locale/hu/LC_MESSAGES/vlc.mo -#usr/share/locale/it/LC_MESSAGES/vlc.mo -#usr/share/locale/ja/LC_MESSAGES/vlc.mo -#usr/share/locale/ka -#usr/share/locale/ka/LC_MESSAGES -#usr/share/locale/ka/LC_MESSAGES/vlc.mo -#usr/share/locale/ko/LC_MESSAGES/vlc.mo -#usr/share/locale/nl/LC_MESSAGES/vlc.mo -#usr/share/locale/oc -#usr/share/locale/oc/LC_MESSAGES -#usr/share/locale/oc/LC_MESSAGES/vlc.mo -#usr/share/locale/pt_BR/LC_MESSAGES/vlc.mo -#usr/share/locale/ro/LC_MESSAGES/vlc.mo -#usr/share/locale/ru/LC_MESSAGES/vlc.mo -#usr/share/locale/sv/LC_MESSAGES/vlc.mo -#usr/share/locale/tr/LC_MESSAGES/vlc.mo -#usr/share/locale/zh_CN/LC_MESSAGES/vlc.mo -#usr/share/locale/zh_TW/LC_MESSAGES/vlc.mo -usr/share/vlc -#usr/share/vlc/http -#usr/share/vlc/http/.hosts -#usr/share/vlc/http/dialogs -#usr/share/vlc/http/dialogs/.hosts -#usr/share/vlc/http/dialogs/browse -#usr/share/vlc/http/dialogs/footer -#usr/share/vlc/http/dialogs/input -#usr/share/vlc/http/dialogs/main -#usr/share/vlc/http/dialogs/mosaic -#usr/share/vlc/http/dialogs/playlist -#usr/share/vlc/http/dialogs/sout -#usr/share/vlc/http/dialogs/vlm -#usr/share/vlc/http/favicon.ico -#usr/share/vlc/http/iehacks.css -#usr/share/vlc/http/images -#usr/share/vlc/http/images/delete.png -#usr/share/vlc/http/images/delete_small.png -#usr/share/vlc/http/images/eject.png -#usr/share/vlc/http/images/empty.png -#usr/share/vlc/http/images/fullscreen.png -#usr/share/vlc/http/images/help.png -#usr/share/vlc/http/images/info.png -#usr/share/vlc/http/images/loop.png -#usr/share/vlc/http/images/minus.png -#usr/share/vlc/http/images/next.png -#usr/share/vlc/http/images/pause.png -#usr/share/vlc/http/images/play.png -#usr/share/vlc/http/images/playlist.png -#usr/share/vlc/http/images/playlist_small.png -#usr/share/vlc/http/images/plus.png -#usr/share/vlc/http/images/prev.png -#usr/share/vlc/http/images/refresh.png -#usr/share/vlc/http/images/repeat.png -#usr/share/vlc/http/images/sd.png -#usr/share/vlc/http/images/shuffle.png -#usr/share/vlc/http/images/slider_bar.png -#usr/share/vlc/http/images/slider_left.png -#usr/share/vlc/http/images/slider_point.png -#usr/share/vlc/http/images/slider_right.png -#usr/share/vlc/http/images/slow.png -#usr/share/vlc/http/images/sort.png -#usr/share/vlc/http/images/sout.png -#usr/share/vlc/http/images/speaker.png -#usr/share/vlc/http/images/speaker_mute.png -#usr/share/vlc/http/images/stop.png -#usr/share/vlc/http/images/vlc16x16.png -#usr/share/vlc/http/images/volume_down.png -#usr/share/vlc/http/images/volume_up.png -#usr/share/vlc/http/images/white.png -#usr/share/vlc/http/images/white_cross_small.png -#usr/share/vlc/http/index.html -#usr/share/vlc/http/js -#usr/share/vlc/http/js/functions.js -#usr/share/vlc/http/js/mosaic.js -#usr/share/vlc/http/js/vlm.js -#usr/share/vlc/http/mosaic.html -#usr/share/vlc/http/old -#usr/share/vlc/http/old/.hosts -#usr/share/vlc/http/old/admin -#usr/share/vlc/http/old/admin/.access -#usr/share/vlc/http/old/admin/browse.html -#usr/share/vlc/http/old/admin/dboxfiles.html -#usr/share/vlc/http/old/admin/index.html -#usr/share/vlc/http/old/cone_minus.png -#usr/share/vlc/http/old/cone_plus.png -#usr/share/vlc/http/old/index.html -#usr/share/vlc/http/old/info.html -#usr/share/vlc/http/old/style.css -#usr/share/vlc/http/old/vlm -#usr/share/vlc/http/old/vlm/edit.html -#usr/share/vlc/http/old/vlm/index.html -#usr/share/vlc/http/old/vlm/new.html -#usr/share/vlc/http/old/vlm/show.html -#usr/share/vlc/http/old/webcam.html -#usr/share/vlc/http/requests -#usr/share/vlc/http/requests/browse.xml -#usr/share/vlc/http/requests/playlist.xml -#usr/share/vlc/http/requests/readme -#usr/share/vlc/http/requests/status.xml -#usr/share/vlc/http/requests/vlm.xml -#usr/share/vlc/http/requests/vlm_cmd.xml -#usr/share/vlc/http/style.css -#usr/share/vlc/http/vlm.html -#usr/share/vlc/http/vlm_export.html -#usr/share/vlc/osdmenu -#usr/share/vlc/osdmenu/default -#usr/share/vlc/osdmenu/default.cfg -#usr/share/vlc/osdmenu/default/selected -#usr/share/vlc/osdmenu/default/selected/bw.png -#usr/share/vlc/osdmenu/default/selected/esc.png -#usr/share/vlc/osdmenu/default/selected/fw.png -#usr/share/vlc/osdmenu/default/selected/next.png -#usr/share/vlc/osdmenu/default/selected/play_pause.png -#usr/share/vlc/osdmenu/default/selected/previous.png -#usr/share/vlc/osdmenu/default/selected/stop.png -#usr/share/vlc/osdmenu/default/selected/volume.png -#usr/share/vlc/osdmenu/default/selection -#usr/share/vlc/osdmenu/default/selection/bw.png -#usr/share/vlc/osdmenu/default/selection/esc.png -#usr/share/vlc/osdmenu/default/selection/fw.png -#usr/share/vlc/osdmenu/default/selection/next.png -#usr/share/vlc/osdmenu/default/selection/play_pause.png -#usr/share/vlc/osdmenu/default/selection/previous.png -#usr/share/vlc/osdmenu/default/selection/stop.png -#usr/share/vlc/osdmenu/default/selection/volume.png -#usr/share/vlc/osdmenu/default/unselected.png -#usr/share/vlc/osdmenu/default/volume -#usr/share/vlc/osdmenu/default/volume/volume_00.png -#usr/share/vlc/osdmenu/default/volume/volume_01.png -#usr/share/vlc/osdmenu/default/volume/volume_02.png -#usr/share/vlc/osdmenu/default/volume/volume_03.png -#usr/share/vlc/osdmenu/default/volume/volume_04.png -#usr/share/vlc/osdmenu/default/volume/volume_05.png -#usr/share/vlc/osdmenu/default/volume/volume_06.png -#usr/share/vlc/osdmenu/default/volume/volume_07.png -#usr/share/vlc/osdmenu/default/volume/volume_08.png -#usr/share/vlc/osdmenu/default/volume/volume_09.png -#usr/share/vlc/osdmenu/default/volume/volume_10.png -#usr/share/vlc/osdmenu/dvd -#usr/share/vlc/osdmenu/dvd.cfg -#usr/share/vlc/osdmenu/dvd/selected -#usr/share/vlc/osdmenu/dvd/selected/bw.png -#usr/share/vlc/osdmenu/dvd/selected/esc.png -#usr/share/vlc/osdmenu/dvd/selected/fw.png -#usr/share/vlc/osdmenu/dvd/selected/mute.png -#usr/share/vlc/osdmenu/dvd/selected/next.png -#usr/share/vlc/osdmenu/dvd/selected/pause.png -#usr/share/vlc/osdmenu/dvd/selected/play.png -#usr/share/vlc/osdmenu/dvd/selected/previous.png -#usr/share/vlc/osdmenu/dvd/selected/slow.png -#usr/share/vlc/osdmenu/dvd/selected/stop.png -#usr/share/vlc/osdmenu/dvd/selected/volume.png -#usr/share/vlc/osdmenu/dvd/selection -#usr/share/vlc/osdmenu/dvd/selection/bw.png -#usr/share/vlc/osdmenu/dvd/selection/esc.png -#usr/share/vlc/osdmenu/dvd/selection/fw.png -#usr/share/vlc/osdmenu/dvd/selection/mute.png -#usr/share/vlc/osdmenu/dvd/selection/next.png -#usr/share/vlc/osdmenu/dvd/selection/pause.png -#usr/share/vlc/osdmenu/dvd/selection/play.png -#usr/share/vlc/osdmenu/dvd/selection/previous.png -#usr/share/vlc/osdmenu/dvd/selection/slow.png -#usr/share/vlc/osdmenu/dvd/selection/stop.png -#usr/share/vlc/osdmenu/dvd/unselect -#usr/share/vlc/osdmenu/dvd/unselect/barroff.png -#usr/share/vlc/osdmenu/dvd/volume -#usr/share/vlc/osdmenu/dvd/volume/volume00.png -#usr/share/vlc/osdmenu/dvd/volume/volume01.png -#usr/share/vlc/osdmenu/dvd/volume/volume02.png -#usr/share/vlc/osdmenu/dvd/volume/volume03.png -#usr/share/vlc/osdmenu/dvd/volume/volume04.png -#usr/share/vlc/osdmenu/dvd/volume/volume05.png -#usr/share/vlc/pda-forwardb16x16.xpm -#usr/share/vlc/pda-openb16x16.xpm -#usr/share/vlc/pda-pauseb16x16.xpm -#usr/share/vlc/pda-playb16x16.xpm -#usr/share/vlc/pda-playlistb16x16.xpm -#usr/share/vlc/pda-preferencesb16x16.xpm -#usr/share/vlc/pda-rewindb16x16.xpm -#usr/share/vlc/pda-stopb16x16.xpm -#usr/share/vlc/skins2 -#usr/share/vlc/skins2/default.vlt -#usr/share/vlc/skins2/fonts -#usr/share/vlc/skins2/fonts/FreeSans.ttf -#usr/share/vlc/skins2/fonts/FreeSansBold.ttf -#usr/share/vlc/skins2/skin.catalog -#usr/share/vlc/skins2/skin.dtd -#usr/share/vlc/skins2/winamp2.xml -#usr/share/vlc/vlc128x128.png -#usr/share/vlc/vlc16x16.png -#usr/share/vlc/vlc16x16.xpm -#usr/share/vlc/vlc32x32.png -#usr/share/vlc/vlc32x32.xpm -#usr/share/vlc/vlc48x48.ico -#usr/share/vlc/vlc48x48.png diff --git a/src/paks/videolan/depends.txt b/src/paks/videolan/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/videolan/install.sh b/src/paks/videolan/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/videolan/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/videolan/uninstall.sh b/src/paks/videolan/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/videolan/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/webcyradm/ROOTFILES b/src/paks/webcyradm/ROOTFILES deleted file mode 100644 index 7de749f201..0000000000 --- a/src/paks/webcyradm/ROOTFILES +++ /dev/null @@ -1,471 +0,0 @@ -#home/httpd/webcyradm -#home/httpd/webcyradm/.cvsignore -home/httpd/webcyradm/COPYRIGHT -#home/httpd/webcyradm/CVS -#home/httpd/webcyradm/CVS/Entries -#home/httpd/webcyradm/CVS/Entries.Log -#home/httpd/webcyradm/CVS/Repository -#home/httpd/webcyradm/CVS/Root -#home/httpd/webcyradm/ChangeLog -#home/httpd/webcyradm/INSTALL -#home/httpd/webcyradm/README -#home/httpd/webcyradm/README.translations -#home/httpd/webcyradm/TO-BE-DONE -home/httpd/webcyradm/adminuser.php -home/httpd/webcyradm/aliases.php -home/httpd/webcyradm/auth.inc.php -home/httpd/webcyradm/browse.php -home/httpd/webcyradm/browseaccounts.php -home/httpd/webcyradm/catchall.php -home/httpd/webcyradm/change_password.php -home/httpd/webcyradm/changeadminpasswd.php -#home/httpd/webcyradm/config -#home/httpd/webcyradm/config/.cvsignore -#home/httpd/webcyradm/config/CVS -#home/httpd/webcyradm/config/CVS/Entries -#home/httpd/webcyradm/config/CVS/Repository -#home/httpd/webcyradm/config/CVS/Root -home/httpd/webcyradm/config/conf.php -#home/httpd/webcyradm/css -#home/httpd/webcyradm/css/CVS -#home/httpd/webcyradm/css/CVS/Entries -#home/httpd/webcyradm/css/CVS/Repository -#home/httpd/webcyradm/css/CVS/Root -home/httpd/webcyradm/css/default.css -home/httpd/webcyradm/css/green.css -home/httpd/webcyradm/delete_catchall.php -home/httpd/webcyradm/deleteaccount.php -home/httpd/webcyradm/deleteadminuser.php -home/httpd/webcyradm/deletealias.php -home/httpd/webcyradm/deletedomain.php -home/httpd/webcyradm/deleteemail.php -home/httpd/webcyradm/display.php -#home/httpd/webcyradm/doc -#home/httpd/webcyradm/doc/CVS -#home/httpd/webcyradm/doc/CVS/Entries -#home/httpd/webcyradm/doc/CVS/Entries.Log -#home/httpd/webcyradm/doc/CVS/Repository -#home/httpd/webcyradm/doc/CVS/Root -#home/httpd/webcyradm/doc/Postfix-Cyrus-Web-cyradm-HOWTO.sgml -#home/httpd/webcyradm/doc/Postfix-Cyrus-Web-cyradm-HOWTO.txt -#home/httpd/webcyradm/doc/html -#home/httpd/webcyradm/doc/html/CVS -#home/httpd/webcyradm/doc/html/CVS/Entries -#home/httpd/webcyradm/doc/html/CVS/Entries.Log -#home/httpd/webcyradm/doc/html/CVS/Repository -#home/httpd/webcyradm/doc/html/CVS/Root -#home/httpd/webcyradm/doc/html/HTML.manifest -#home/httpd/webcyradm/doc/html/big-picture.png -#home/httpd/webcyradm/doc/html/cyrus-config.html -#home/httpd/webcyradm/doc/html/docbook.css -#home/httpd/webcyradm/doc/html/faq.html -#home/httpd/webcyradm/doc/html/home.png -#home/httpd/webcyradm/doc/html/imap-account.png -#home/httpd/webcyradm/doc/html/imap-tls.png -#home/httpd/webcyradm/doc/html/index.html -#home/httpd/webcyradm/doc/html/install.html -#home/httpd/webcyradm/doc/html/installing-anti-spam.html -#home/httpd/webcyradm/doc/html/intro.html -#home/httpd/webcyradm/doc/html/moreinfo.html -#home/httpd/webcyradm/doc/html/mysql-config.html -#home/httpd/webcyradm/doc/html/pam-config.html -#home/httpd/webcyradm/doc/html/postfix-config.html -#home/httpd/webcyradm/doc/html/spam-and-virus-intro.html -#home/httpd/webcyradm/doc/html/stylesheet-images -#home/httpd/webcyradm/doc/html/stylesheet-images/CVS -#home/httpd/webcyradm/doc/html/stylesheet-images/CVS/Entries -#home/httpd/webcyradm/doc/html/stylesheet-images/CVS/Repository -#home/httpd/webcyradm/doc/html/stylesheet-images/CVS/Root -#home/httpd/webcyradm/doc/html/stylesheet-images/caution.gif -#home/httpd/webcyradm/doc/html/stylesheet-images/home.gif -#home/httpd/webcyradm/doc/html/stylesheet-images/important.gif -#home/httpd/webcyradm/doc/html/stylesheet-images/next.gif -#home/httpd/webcyradm/doc/html/stylesheet-images/note.gif -#home/httpd/webcyradm/doc/html/stylesheet-images/prev.gif -#home/httpd/webcyradm/doc/html/stylesheet-images/tip.gif -#home/httpd/webcyradm/doc/html/stylesheet-images/toc-blank.gif -#home/httpd/webcyradm/doc/html/stylesheet-images/toc-minus.gif -#home/httpd/webcyradm/doc/html/stylesheet-images/toc-plus.gif -#home/httpd/webcyradm/doc/html/stylesheet-images/up.gif -#home/httpd/webcyradm/doc/html/stylesheet-images/warning.gif -#home/httpd/webcyradm/doc/html/t1.html -#home/httpd/webcyradm/doc/html/tech.html -#home/httpd/webcyradm/doc/html/test.html -#home/httpd/webcyradm/doc/html/web-cyradm-config.html -#home/httpd/webcyradm/doc/web-cyradm-redhat.txt -home/httpd/webcyradm/editaccount.php -home/httpd/webcyradm/editadminuser.php -home/httpd/webcyradm/editalias.php -home/httpd/webcyradm/editdomain.php -home/httpd/webcyradm/editemail.php -home/httpd/webcyradm/editservices.php -home/httpd/webcyradm/failed.php -home/httpd/webcyradm/footer.inc.php -home/httpd/webcyradm/forwardaccount.php -home/httpd/webcyradm/forwardalias.php -home/httpd/webcyradm/header.inc.php -#home/httpd/webcyradm/images -#home/httpd/webcyradm/images/CVS -#home/httpd/webcyradm/images/CVS/Entries -#home/httpd/webcyradm/images/CVS/Repository -#home/httpd/webcyradm/images/CVS/Root -home/httpd/webcyradm/images/arrow_sort_desc.png -home/httpd/webcyradm/images/banner.gif -home/httpd/webcyradm/images/checked.png -home/httpd/webcyradm/images/false.png -home/httpd/webcyradm/index.php -home/httpd/webcyradm/init.php -#home/httpd/webcyradm/lib -#home/httpd/webcyradm/lib/CVS -#home/httpd/webcyradm/lib/CVS/Entries -#home/httpd/webcyradm/lib/CVS/Repository -#home/httpd/webcyradm/lib/CVS/Root -home/httpd/webcyradm/lib/crypto.php -home/httpd/webcyradm/lib/cyradm.php -home/httpd/webcyradm/lib/log.php -home/httpd/webcyradm/lib/nls.php -home/httpd/webcyradm/lib/poppassd.php -home/httpd/webcyradm/lib/sieve-php.lib -home/httpd/webcyradm/lib/sieve_strs.php -#home/httpd/webcyradm/locale -#home/httpd/webcyradm/locale/CVS -#home/httpd/webcyradm/locale/CVS/Entries -#home/httpd/webcyradm/locale/CVS/Entries.Log -#home/httpd/webcyradm/locale/CVS/Repository -#home/httpd/webcyradm/locale/CVS/Root -#home/httpd/webcyradm/locale/cs -#home/httpd/webcyradm/locale/cs/CVS -#home/httpd/webcyradm/locale/cs/CVS/Entries -#home/httpd/webcyradm/locale/cs/CVS/Entries.Log -#home/httpd/webcyradm/locale/cs/CVS/Repository -#home/httpd/webcyradm/locale/cs/CVS/Root -#home/httpd/webcyradm/locale/cs/LC_MESSAGES -#home/httpd/webcyradm/locale/cs/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/cs/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/cs/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/cs/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/cs/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/cs/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/da -#home/httpd/webcyradm/locale/da/CVS -#home/httpd/webcyradm/locale/da/CVS/Entries -#home/httpd/webcyradm/locale/da/CVS/Entries.Log -#home/httpd/webcyradm/locale/da/CVS/Repository -#home/httpd/webcyradm/locale/da/CVS/Root -#home/httpd/webcyradm/locale/da/LC_MESSAGES -#home/httpd/webcyradm/locale/da/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/da/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/da/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/da/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/da/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/da/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/de -#home/httpd/webcyradm/locale/de/CVS -#home/httpd/webcyradm/locale/de/CVS/Entries -#home/httpd/webcyradm/locale/de/CVS/Entries.Log -#home/httpd/webcyradm/locale/de/CVS/Repository -#home/httpd/webcyradm/locale/de/CVS/Root -#home/httpd/webcyradm/locale/de/LC_MESSAGES -#home/httpd/webcyradm/locale/de/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/de/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/de/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/de/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/de/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/de/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/en -#home/httpd/webcyradm/locale/en/CVS -#home/httpd/webcyradm/locale/en/CVS/Entries -#home/httpd/webcyradm/locale/en/CVS/Entries.Log -#home/httpd/webcyradm/locale/en/CVS/Repository -#home/httpd/webcyradm/locale/en/CVS/Root -#home/httpd/webcyradm/locale/en/LC_MESSAGES -#home/httpd/webcyradm/locale/en/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/en/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/en/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/en/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/en/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/en/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/es -#home/httpd/webcyradm/locale/es/CVS -#home/httpd/webcyradm/locale/es/CVS/Entries -#home/httpd/webcyradm/locale/es/CVS/Entries.Log -#home/httpd/webcyradm/locale/es/CVS/Repository -#home/httpd/webcyradm/locale/es/CVS/Root -#home/httpd/webcyradm/locale/es/LC_MESSAGES -#home/httpd/webcyradm/locale/es/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/es/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/es/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/es/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/es/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/es/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/fr -#home/httpd/webcyradm/locale/fr/CVS -#home/httpd/webcyradm/locale/fr/CVS/Entries -#home/httpd/webcyradm/locale/fr/CVS/Entries.Log -#home/httpd/webcyradm/locale/fr/CVS/Repository -#home/httpd/webcyradm/locale/fr/CVS/Root -#home/httpd/webcyradm/locale/fr/LC_MESSAGES -#home/httpd/webcyradm/locale/fr/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/fr/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/fr/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/fr/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/fr/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/fr/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/hu -#home/httpd/webcyradm/locale/hu/CVS -#home/httpd/webcyradm/locale/hu/CVS/Entries -#home/httpd/webcyradm/locale/hu/CVS/Entries.Log -#home/httpd/webcyradm/locale/hu/CVS/Repository -#home/httpd/webcyradm/locale/hu/CVS/Root -#home/httpd/webcyradm/locale/hu/LC_MESSAGES -#home/httpd/webcyradm/locale/hu/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/hu/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/hu/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/hu/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/hu/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/hu/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/it -#home/httpd/webcyradm/locale/it/CVS -#home/httpd/webcyradm/locale/it/CVS/Entries -#home/httpd/webcyradm/locale/it/CVS/Entries.Log -#home/httpd/webcyradm/locale/it/CVS/Repository -#home/httpd/webcyradm/locale/it/CVS/Root -#home/httpd/webcyradm/locale/it/LC_MESSAGES -#home/httpd/webcyradm/locale/it/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/it/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/it/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/it/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/it/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/it/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/nb_NO -#home/httpd/webcyradm/locale/nb_NO/CVS -#home/httpd/webcyradm/locale/nb_NO/CVS/Entries -#home/httpd/webcyradm/locale/nb_NO/CVS/Entries.Log -#home/httpd/webcyradm/locale/nb_NO/CVS/Repository -#home/httpd/webcyradm/locale/nb_NO/CVS/Root -#home/httpd/webcyradm/locale/nb_NO/LC_MESSAGES -#home/httpd/webcyradm/locale/nb_NO/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/nb_NO/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/nb_NO/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/nb_NO/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/nb_NO/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/nb_NO/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/nl -#home/httpd/webcyradm/locale/nl/CVS -#home/httpd/webcyradm/locale/nl/CVS/Entries -#home/httpd/webcyradm/locale/nl/CVS/Entries.Log -#home/httpd/webcyradm/locale/nl/CVS/Repository -#home/httpd/webcyradm/locale/nl/CVS/Root -#home/httpd/webcyradm/locale/nl/LC_MESSAGES -#home/httpd/webcyradm/locale/nl/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/nl/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/nl/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/nl/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/nl/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/nl/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/no -#home/httpd/webcyradm/locale/no/CVS -#home/httpd/webcyradm/locale/no/CVS/Entries -#home/httpd/webcyradm/locale/no/CVS/Entries.Log -#home/httpd/webcyradm/locale/no/CVS/Repository -#home/httpd/webcyradm/locale/no/CVS/Root -#home/httpd/webcyradm/locale/no/LC_MESSAGES -#home/httpd/webcyradm/locale/no/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/no/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/no/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/no/LC_MESSAGES/CVS/Root -#home/httpd/webcyradm/locale/pl -#home/httpd/webcyradm/locale/pl/CVS -#home/httpd/webcyradm/locale/pl/CVS/Entries -#home/httpd/webcyradm/locale/pl/CVS/Entries.Log -#home/httpd/webcyradm/locale/pl/CVS/Repository -#home/httpd/webcyradm/locale/pl/CVS/Root -#home/httpd/webcyradm/locale/pl/LC_MESSAGES -#home/httpd/webcyradm/locale/pl/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/pl/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/pl/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/pl/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/pl/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/pl/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/pt -#home/httpd/webcyradm/locale/pt/CVS -#home/httpd/webcyradm/locale/pt/CVS/Entries -#home/httpd/webcyradm/locale/pt/CVS/Entries.Log -#home/httpd/webcyradm/locale/pt/CVS/Repository -#home/httpd/webcyradm/locale/pt/CVS/Root -#home/httpd/webcyradm/locale/pt/LC_MESSAGES -#home/httpd/webcyradm/locale/pt/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/pt/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/pt/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/pt/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/pt/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/pt/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/ro -#home/httpd/webcyradm/locale/ro/CVS -#home/httpd/webcyradm/locale/ro/CVS/Entries -#home/httpd/webcyradm/locale/ro/CVS/Entries.Log -#home/httpd/webcyradm/locale/ro/CVS/Repository -#home/httpd/webcyradm/locale/ro/CVS/Root -#home/httpd/webcyradm/locale/ro/LC_MESSAGES -#home/httpd/webcyradm/locale/ro/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/ro/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/ro/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/ro/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/ro/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/ro/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/ru -#home/httpd/webcyradm/locale/ru/CVS -#home/httpd/webcyradm/locale/ru/CVS/Entries -#home/httpd/webcyradm/locale/ru/CVS/Entries.Log -#home/httpd/webcyradm/locale/ru/CVS/Repository -#home/httpd/webcyradm/locale/ru/CVS/Root -#home/httpd/webcyradm/locale/ru/LC_MESSAGES -#home/httpd/webcyradm/locale/ru/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/ru/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/ru/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/ru/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/ru/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/ru/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/sl -#home/httpd/webcyradm/locale/sl/CVS -#home/httpd/webcyradm/locale/sl/CVS/Entries -#home/httpd/webcyradm/locale/sl/CVS/Entries.Log -#home/httpd/webcyradm/locale/sl/CVS/Repository -#home/httpd/webcyradm/locale/sl/CVS/Root -#home/httpd/webcyradm/locale/sl/LC_MESSAGES -#home/httpd/webcyradm/locale/sl/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/sl/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/sl/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/sl/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/sl/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/sl/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/sv -#home/httpd/webcyradm/locale/sv/CVS -#home/httpd/webcyradm/locale/sv/CVS/Entries -#home/httpd/webcyradm/locale/sv/CVS/Entries.Log -#home/httpd/webcyradm/locale/sv/CVS/Repository -#home/httpd/webcyradm/locale/sv/CVS/Root -#home/httpd/webcyradm/locale/sv/LC_MESSAGES -#home/httpd/webcyradm/locale/sv/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/sv/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/sv/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/sv/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/sv/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/sv/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/teamnames -#home/httpd/webcyradm/locale/templates -#home/httpd/webcyradm/locale/templates/CVS -#home/httpd/webcyradm/locale/templates/CVS/Entries -#home/httpd/webcyradm/locale/templates/CVS/Repository -#home/httpd/webcyradm/locale/templates/CVS/Root -home/httpd/webcyradm/locale/templates/web-cyradm.pot -#home/httpd/webcyradm/locale/tr -#home/httpd/webcyradm/locale/tr/CVS -#home/httpd/webcyradm/locale/tr/CVS/Entries -#home/httpd/webcyradm/locale/tr/CVS/Entries.Log -#home/httpd/webcyradm/locale/tr/CVS/Repository -#home/httpd/webcyradm/locale/tr/CVS/Root -#home/httpd/webcyradm/locale/tr/LC_MESSAGES -#home/httpd/webcyradm/locale/tr/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/tr/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/tr/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/tr/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/tr/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/tr/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/uk -#home/httpd/webcyradm/locale/uk/CVS -#home/httpd/webcyradm/locale/uk/CVS/Entries -#home/httpd/webcyradm/locale/uk/CVS/Entries.Log -#home/httpd/webcyradm/locale/uk/CVS/Repository -#home/httpd/webcyradm/locale/uk/CVS/Root -#home/httpd/webcyradm/locale/uk/LC_MESSAGES -#home/httpd/webcyradm/locale/uk/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/uk/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/uk/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/uk/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/uk/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/uk/LC_MESSAGES/web-cyradm.po -#home/httpd/webcyradm/locale/zh_CN -#home/httpd/webcyradm/locale/zh_CN/CVS -#home/httpd/webcyradm/locale/zh_CN/CVS/Entries -#home/httpd/webcyradm/locale/zh_CN/CVS/Entries.Log -#home/httpd/webcyradm/locale/zh_CN/CVS/Repository -#home/httpd/webcyradm/locale/zh_CN/CVS/Root -#home/httpd/webcyradm/locale/zh_CN/LC_MESSAGES -#home/httpd/webcyradm/locale/zh_CN/LC_MESSAGES/CVS -#home/httpd/webcyradm/locale/zh_CN/LC_MESSAGES/CVS/Entries -#home/httpd/webcyradm/locale/zh_CN/LC_MESSAGES/CVS/Repository -#home/httpd/webcyradm/locale/zh_CN/LC_MESSAGES/CVS/Root -home/httpd/webcyradm/locale/zh_CN/LC_MESSAGES/web-cyradm.mo -home/httpd/webcyradm/locale/zh_CN/LC_MESSAGES/web-cyradm.po -home/httpd/webcyradm/login.php -home/httpd/webcyradm/logout.php -home/httpd/webcyradm/manageaccount.php -home/httpd/webcyradm/menu.inc.php -#home/httpd/webcyradm/migrate.php-dist -home/httpd/webcyradm/newaccount.php -home/httpd/webcyradm/newadminuser.php -home/httpd/webcyradm/newalias.php -home/httpd/webcyradm/newdomain.php -home/httpd/webcyradm/newemail.php -#home/httpd/webcyradm/scripts -#home/httpd/webcyradm/scripts/CVS -#home/httpd/webcyradm/scripts/CVS/Entries -#home/httpd/webcyradm/scripts/CVS/Repository -#home/httpd/webcyradm/scripts/CVS/Root -#home/httpd/webcyradm/scripts/create_mysql.sql -#home/httpd/webcyradm/scripts/create_pgsql.sql -home/httpd/webcyradm/scripts/imap2imap-copy.php -#home/httpd/webcyradm/scripts/insertuser_mysql.sql -#home/httpd/webcyradm/scripts/insertuser_pgsql.sql -home/httpd/webcyradm/scripts/php2pot -home/httpd/webcyradm/scripts/pot2po -#home/httpd/webcyradm/scripts/upgrade-0.5.2-to-0.5.3_mysql.sql -#home/httpd/webcyradm/scripts/upgrade-0.5.3-to-0.5.4_mysql.sql -#home/httpd/webcyradm/scripts/upgrade-0.5.3-to-0.5.4_pgsql.sql -#home/httpd/webcyradm/scripts/upgrade-0.5.4-to-0.5.5_mysql.sql -#home/httpd/webcyradm/scripts/upgrade-0.5.4-to-0.5.5_pgsql.sql -home/httpd/webcyradm/search.php -home/httpd/webcyradm/session.php -home/httpd/webcyradm/setquota.php -home/httpd/webcyradm/settings.php -#home/httpd/webcyradm/setup -#home/httpd/webcyradm/setup/CVS -#home/httpd/webcyradm/setup/CVS/Entries -#home/httpd/webcyradm/setup/CVS/Repository -#home/httpd/webcyradm/setup/CVS/Root -home/httpd/webcyradm/setup/index.php -home/httpd/webcyradm/setup/populate.php -home/httpd/webcyradm/timeout.php -home/httpd/webcyradm/vacation.php -home/httpd/webcyradm/validate.inc.php -home/httpd/webcyradm/welcome.php -#srv/mysql/mail -srv/mysql/mail/accountuser.MYD -srv/mysql/mail/accountuser.MYI -srv/mysql/mail/accountuser.frm -srv/mysql/mail/adminuser.MYD -srv/mysql/mail/adminuser.MYI -srv/mysql/mail/adminuser.frm -srv/mysql/mail/alias.MYD -srv/mysql/mail/alias.MYI -srv/mysql/mail/alias.frm -srv/mysql/mail/db.opt -srv/mysql/mail/domain.MYD -srv/mysql/mail/domain.MYI -srv/mysql/mail/domain.frm -srv/mysql/mail/domainadmin.MYD -srv/mysql/mail/domainadmin.MYI -srv/mysql/mail/domainadmin.frm -srv/mysql/mail/log.MYD -srv/mysql/mail/log.MYI -srv/mysql/mail/log.frm -srv/mysql/mail/search.MYD -srv/mysql/mail/search.MYI -srv/mysql/mail/search.frm -srv/mysql/mail/settings.MYD -srv/mysql/mail/settings.MYI -srv/mysql/mail/settings.frm -srv/mysql/mail/virtual.MYD -srv/mysql/mail/virtual.MYI -srv/mysql/mail/virtual.frm diff --git a/src/paks/webcyradm/depends.txt b/src/paks/webcyradm/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/webcyradm/install.sh b/src/paks/webcyradm/install.sh deleted file mode 100644 index 2f78907fa2..0000000000 --- a/src/paks/webcyradm/install.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / diff --git a/src/paks/webcyradm/uninstall.sh b/src/paks/webcyradm/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/webcyradm/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/xvid/ROOTFILES b/src/paks/xvid/ROOTFILES deleted file mode 100644 index ffa7bc59d0..0000000000 --- a/src/paks/xvid/ROOTFILES +++ /dev/null @@ -1,5 +0,0 @@ -#usr/include/xvid.h -#usr/lib/libxvidcore.a -usr/lib/libxvidcore.so -usr/lib/libxvidcore.so.4 -usr/lib/libxvidcore.so.4.1 diff --git a/src/paks/xvid/depends.txt b/src/paks/xvid/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/xvid/install.sh b/src/paks/xvid/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/xvid/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/xvid/uninstall.sh b/src/paks/xvid/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/xvid/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/yasuc/ROOTFILES b/src/paks/yasuc/ROOTFILES deleted file mode 100644 index c81bf322e8..0000000000 --- a/src/paks/yasuc/ROOTFILES +++ /dev/null @@ -1 +0,0 @@ -usr/bin/yasuc diff --git a/src/paks/yasuc/depends.txt b/src/paks/yasuc/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/yasuc/install.sh b/src/paks/yasuc/install.sh deleted file mode 100644 index 2f78907fa2..0000000000 --- a/src/paks/yasuc/install.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / diff --git a/src/paks/yasuc/uninstall.sh b/src/paks/yasuc/uninstall.sh deleted file mode 100644 index 7ee2885e73..0000000000 --- a/src/paks/yasuc/uninstall.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files diff --git a/src/paks/zaptel/ROOTFILES b/src/paks/zaptel/ROOTFILES deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/zaptel/depends.txt b/src/paks/zaptel/depends.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/paks/zaptel/install.sh b/src/paks/zaptel/install.sh deleted file mode 100644 index 3a9ce551bf..0000000000 --- a/src/paks/zaptel/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Extract the files -tar xfz files.tgz -C / -cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2 diff --git a/src/paks/zaptel/uninstall.sh b/src/paks/zaptel/uninstall.sh deleted file mode 100644 index ad6122665e..0000000000 --- a/src/paks/zaptel/uninstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -################################################################# -# # -# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org # -# # -################################################################# -# -# Delete the files -## Befehl fehlt noch -rm -f /opt/pakfire/installed/ROOTFILES.$2