summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2015-03-23 09:29:19 -0700
committerAaron Plattner <aplattner@nvidia.com>2015-03-23 09:29:19 -0700
commit2e99868608bb2a448319f03ee1005ffa6f0d413d (patch)
treed0721d0182229468d9f6dd8266ee00594e779511
parent20cad31521e4c281e60fae57304f7a952db2cb39 (diff)
349.12349.12
-rw-r--r--Makefile12
-rw-r--r--common-utils/common-utils.c77
-rw-r--r--common-utils/common-utils.h24
-rw-r--r--common-utils/gen-manpage-opts-helper.c24
-rw-r--r--common-utils/gen-manpage-opts-helper.h24
-rw-r--r--common-utils/msg.c24
-rw-r--r--common-utils/msg.h24
-rw-r--r--common-utils/nvgetopt.c24
-rw-r--r--common-utils/nvgetopt.h31
-rw-r--r--misc.c129
-rw-r--r--nvLegacy.h997
-rw-r--r--utils.mk24
-rw-r--r--version.mk2
13 files changed, 770 insertions, 646 deletions
diff --git a/Makefile b/Makefile
index a6e4960..2247002 100644
--- a/Makefile
+++ b/Makefile
@@ -36,8 +36,8 @@ include utils.mk
NCURSES_CFLAGS ?=
NCURSES_LDFLAGS ?=
-PCI_CFLAGS ?=
-PCI_LDFLAGS ?=
+PCIACCESS_CFLAGS ?=
+PCIACCESS_LDFLAGS ?=
##############################################################################
@@ -210,9 +210,9 @@ $(MAKESELF_HELP_SCRIPT): $(MAKESELF_HELP_SCRIPT_OBJS)
$(HOST_BIN_LDFLAGS) $(MAKESELF_HELP_SCRIPT_OBJS) -o $@
$(NVIDIA_INSTALLER): $(INSTALLER_OBJS)
- $(call quiet_cmd,LINK) $(CFLAGS) $(LDFLAGS) $(PCI_LDFLAGS) \
+ $(call quiet_cmd,LINK) $(CFLAGS) $(LDFLAGS) $(PCIACCESS_LDFLAGS) \
$(BIN_LDFLAGS) $(INSTALLER_OBJS) -o $@ \
- $(LIBS) -Bstatic -lpci -Bdynamic
+ $(LIBS) -Bstatic -lpciaccess -Bdynamic
$(call quiet_cmd,STRIP_CMD) $@
$(GEN_UI_ARRAY): gen-ui-array.c $(CONFIG_H)
@@ -248,8 +248,8 @@ $(RTLD_TEST_C): $(GEN_UI_ARRAY) $(RTLD_TEST)
$(RTLD_TEST_32_C): $(GEN_UI_ARRAY) $(RTLD_TEST_32)
$(call quiet_cmd,GEN_UI_ARRAY) $(RTLD_TEST_32) rtld_test_array_32 > $@
-# misc.c includes pci.h
-$(call BUILD_OBJECT_LIST,misc.c): CFLAGS += $(PCI_CFLAGS)
+# misc.c includes pciaccess.h
+$(call BUILD_OBJECT_LIST,misc.c): CFLAGS += $(PCIACCESS_CFLAGS)
# ncurses-ui.c includes ncurses.h
$(call BUILD_OBJECT_LIST,ncurses-ui.c): CFLAGS += $(NCURSES_CFLAGS) -fPIC
diff --git a/common-utils/common-utils.c b/common-utils/common-utils.c
index 81fd7ed..fe7889e 100644
--- a/common-utils/common-utils.c
+++ b/common-utils/common-utils.c
@@ -1,17 +1,23 @@
/*
* Copyright (C) 2010-2012 NVIDIA Corporation
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
+ * 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:
*
- * 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.
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses>.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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.
*/
@@ -60,40 +66,45 @@ void *nvalloc(size_t size)
/*
* nvstrcat() - allocate a new string, copying all given strings
- * into it. taken from glib
+ * into it.
*/
char *nvstrcat(const char *str, ...)
{
- unsigned int l;
- va_list args;
- char *s;
- char *concat;
-
- l = 1 + strlen(str);
- va_start(args, str);
- s = va_arg(args, char *);
-
- while (s) {
- l += strlen(s);
- s = va_arg(args, char *);
+ const char *s;
+ char *result;
+ size_t len;
+ va_list ap;
+
+ /* walk the varargs to compute the length of the result string */
+
+ va_start(ap, str);
+
+ for (s = str, len = 1; s; s = va_arg(ap, char *)) {
+ len += strlen(s);
+ }
+
+ va_end(ap);
+
+ /* allocate the result string */
+
+ result = nvalloc(len);
+ if (!result) {
+ return result;
}
- va_end(args);
+ result[0] = '\0';
- concat = nvalloc(l);
- concat[0] = 0;
+ /* concatenate the input strings, writing into the result string */
- strcat(concat, str);
- va_start(args, str);
- s = va_arg(args, char *);
- while (s) {
- strcat(concat, s);
- s = va_arg(args, char *);
+ va_start(ap, str);
+
+ for (s = str; s; s = va_arg(ap, char *)) {
+ strcat(result, s);
}
- va_end(args);
- return concat;
+ va_end(ap);
+ return result;
} /* nvstrcat() */
diff --git a/common-utils/common-utils.h b/common-utils/common-utils.h
index 709ff02..7a1f71a 100644
--- a/common-utils/common-utils.h
+++ b/common-utils/common-utils.h
@@ -1,17 +1,23 @@
/*
* Copyright (C) 2010-2012 NVIDIA Corporation
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
+ * 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:
*
- * 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.
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses>.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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.
*/
#ifndef __COMMON_UTILS_H__
diff --git a/common-utils/gen-manpage-opts-helper.c b/common-utils/gen-manpage-opts-helper.c
index 84bac62..b41e2aa 100644
--- a/common-utils/gen-manpage-opts-helper.c
+++ b/common-utils/gen-manpage-opts-helper.c
@@ -1,17 +1,23 @@
/*
* Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
+ * 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:
*
- * This program is distributed in the hope 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.
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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.
*/
#include <stdio.h>
diff --git a/common-utils/gen-manpage-opts-helper.h b/common-utils/gen-manpage-opts-helper.h
index b09852e..97a2908 100644
--- a/common-utils/gen-manpage-opts-helper.h
+++ b/common-utils/gen-manpage-opts-helper.h
@@ -1,17 +1,23 @@
/*
* Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
+ * 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:
*
- * This program is distributed in the hope 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.
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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.
*/
#if !defined(__GEN_MANPAGE_OPTS_HELPER_H__)
diff --git a/common-utils/msg.c b/common-utils/msg.c
index cdd3c4f..349c640 100644
--- a/common-utils/msg.c
+++ b/common-utils/msg.c
@@ -1,17 +1,23 @@
/*
* Copyright (C) 2004 NVIDIA Corporation.
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
+ * 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:
*
- * 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.
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses>.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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.
*/
#include <stdio.h>
diff --git a/common-utils/msg.h b/common-utils/msg.h
index 5e32c19..3eae767 100644
--- a/common-utils/msg.h
+++ b/common-utils/msg.h
@@ -1,17 +1,23 @@
/*
* Copyright (C) 2004 NVIDIA Corporation.
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
+ * 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:
*
- * 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.
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses>.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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.
*/
#ifndef __MSG_H__
diff --git a/common-utils/nvgetopt.c b/common-utils/nvgetopt.c
index aaebd78..1716495 100644
--- a/common-utils/nvgetopt.c
+++ b/common-utils/nvgetopt.c
@@ -1,17 +1,23 @@
/*
* Copyright (C) 2004-2010 NVIDIA Corporation
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
+ * 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:
*
- * 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.
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses>.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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.
*
*
* nvgetopt.c - portable getopt_long() replacement; removes the need
diff --git a/common-utils/nvgetopt.h b/common-utils/nvgetopt.h
index fc735ee..0fec64d 100644
--- a/common-utils/nvgetopt.h
+++ b/common-utils/nvgetopt.h
@@ -1,20 +1,23 @@
/*
* Copyright (C) 2004-2010 NVIDIA Corporation
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * 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, see <http://www.gnu.org/licenses>.
- *
- *
- * nvgetopt.h
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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.
*/
#ifndef __NVGETOPT_H__
diff --git a/misc.c b/misc.c
index c54d975..2541a8b 100644
--- a/misc.c
+++ b/misc.c
@@ -35,15 +35,11 @@
#include <sys/mman.h>
#include <dirent.h>
#include <libgen.h>
-#include <pci/pci.h>
+#include <pciaccess.h>
#include <dlfcn.h>
#include <elf.h>
#include <link.h>
-#ifndef PCI_CLASS_DISPLAY_3D
-#define PCI_CLASS_DISPLAY_3D 0x302
-#endif
-
#include "nvidia-installer.h"
#include "user-interface.h"
#include "kernel.h"
@@ -2203,79 +2199,112 @@ int check_for_running_x(Options *op)
* in the system, a warning message is printed for each one.
*/
-static void ignore_libpci_output(char *fmt, ...)
-{
-}
-
int check_for_nvidia_graphics_devices(Options *op, Package *p)
{
- struct pci_access *pacc;
- struct pci_dev *dev;
+ struct pci_device_iterator *iter;
+ struct pci_device *dev;
int i, found_supported_device = FALSE;
int found_vga_device = FALSE;
- uint16 class;
- pacc = pci_alloc();
- if (!pacc) return TRUE;
-
- pacc->error = ignore_libpci_output;
- pacc->warning = ignore_libpci_output;
- pci_init(pacc);
- if (!pacc->methods) return TRUE;
-
- pci_scan_bus(pacc);
+ /*
+ * libpciaccess stores the device class in bits 16-23, subclass in 8-15, and
+ * interface in bits 0-7 of dev->device_class. We care only about the class
+ * and subclass.
+ */
+ const uint32_t PCI_CLASS_DISPLAY_VGA = 0x30000;
+ const uint32_t PCI_CLASS_SUBCLASS_MASK = 0xffff00;
+ const struct pci_id_match match = {
+ .vendor_id = 0x10de,
+ .device_id = PCI_MATCH_ANY,
+ .subvendor_id = PCI_MATCH_ANY,
+ .subdevice_id = PCI_MATCH_ANY,
+ .device_class = PCI_CLASS_DISPLAY_VGA,
+ /*
+ * Ignore bit 1 of the subclass, to allow both 0x30000 (VGA controller)
+ * and 0x30200 (3D controller).
+ */
+ .device_class_mask = PCI_CLASS_SUBCLASS_MASK & ~0x200,
+ };
- for (dev = pacc->devices; dev != NULL; dev = dev->next) {
- if ((pci_fill_info(dev, PCI_FILL_IDENT) & PCI_FILL_IDENT) == 0)
- continue;
+ if (pci_system_init()) {
+ return TRUE;
+ }
- class = pci_read_word(dev, PCI_CLASS_DEVICE);
+ iter = pci_id_match_iterator_create(&match);
- if ((class == PCI_CLASS_DISPLAY_VGA || class == PCI_CLASS_DISPLAY_3D) &&
- (dev->vendor_id == 0x10de) /* NVIDIA */ &&
- (dev->device_id >= 0x0020) /* TNT or later */) {
+ for (dev = pci_device_next(iter); dev; dev = pci_device_next(iter)) {
+ if (dev->device_id >= 0x0020 /* TNT or later */) {
/*
* First check if this GPU is a "legacy" GPU; if it is, print a
* warning message and point the user to the NVIDIA Linux
* driver download page for.
+ *
+ * LegacyList only contains a row with a full 4-part ID (including
+ * subdevice and subvendor IDs) if its name differs from other
+ * devices with the same devid. For all other devices with the same
+ * devid and name, there is only one row, with subdevice and
+ * subvendor IDs set to 0.
+ *
+ * This loop finds the name for the matching devid, but continues
+ * searching for a matching 4-part ID with a different name, and
+ * breaks if it finds one.
*/
int found_legacy_device = FALSE;
+ unsigned int branch = 0;
+ const char *dev_name = NULL;
+
for (i = 0; i < sizeof(LegacyList) / sizeof(LEGACY_INFO); i++) {
if (dev->device_id == LegacyList[i].uiDevId) {
- int j, nstrings;
- const char *branch_string = "";
- nstrings = sizeof(LegacyStrings) / sizeof(LEGACY_STRINGS);
- for (j = 0; j < nstrings; j++) {
- if (LegacyStrings[j].branch == LegacyList[i].branch) {
- branch_string = LegacyStrings[j].description;
- break;
- }
+ int found_specific =
+ (dev->subvendor_id == LegacyList[i].uiSubVendorId &&
+ dev->subdevice_id == LegacyList[i].uiSubDevId);
+
+ if (found_specific || LegacyList[i].uiSubDevId == 0) {
+ branch = LegacyList[i].branch;
+ dev_name = LegacyList[i].AdapterString;
+ found_legacy_device = TRUE;
}
- ui_warn(op, "The NVIDIA %s GPU installed in this system is supported "
- "through the NVIDIA %s legacy Linux graphics drivers. Please "
- "visit http://www.nvidia.com/object/unix.html for more "
- "information. The %s NVIDIA Linux graphics driver will "
- "ignore this GPU.",
- LegacyList[i].AdapterString,
- branch_string,
- p->version);
- found_legacy_device = TRUE;
+ if (found_specific) {
+ break;
+ }
}
}
- if (!found_legacy_device) {
+ if (found_legacy_device) {
+ int j, nstrings;
+ const char *branch_string = "";
+ nstrings = sizeof(LegacyStrings) / sizeof(LEGACY_STRINGS);
+ for (j = 0; j < nstrings; j++) {
+ if (LegacyStrings[j].branch == branch) {
+ branch_string = LegacyStrings[j].description;
+ break;
+ }
+ }
+
+ ui_warn(op, "The NVIDIA %s GPU installed in this system is supported "
+ "through the NVIDIA %s legacy Linux graphics drivers. Please "
+ "visit http://www.nvidia.com/object/unix.html for more "
+ "information. The %s NVIDIA Linux graphics driver will "
+ "ignore this GPU.",
+ dev_name,
+ branch_string,
+ p->version);
+ } else {
found_supported_device = TRUE;
- if (class == PCI_CLASS_DISPLAY_VGA)
+ /*
+ * libpciaccess packs the device class into bits 16 through 23
+ * and the subclass into bits 8 through 15 of dev->device_class.
+ */
+ if ((dev->device_class & PCI_CLASS_SUBCLASS_MASK) ==
+ PCI_CLASS_DISPLAY_VGA)
found_vga_device = TRUE;
}
}
}
- dev = pacc->devices;
- pci_cleanup(pacc);
- if (!dev) return TRUE;
+ pci_system_cleanup();
if (!found_supported_device) {
ui_warn(op, "You do not appear to have an NVIDIA GPU supported by the "
diff --git a/nvLegacy.h b/nvLegacy.h
index 53d67ea..f799f32 100644
--- a/nvLegacy.h
+++ b/nvLegacy.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2006, 2012 NVIDIA Corporation
+ * Copyright (c) 2005, 2006, 2012, 2014 NVIDIA Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -26,6 +26,8 @@
typedef struct _LEGACY_INFO {
unsigned int uiDevId;
+ unsigned int uiSubVendorId;
+ unsigned int uiSubDevId;
unsigned int branch;
char* AdapterString;
} LEGACY_INFO;
@@ -48,484 +50,521 @@ static const LEGACY_STRINGS LegacyStrings[] = {
// This is the list of the legacy GPUs
static const LEGACY_INFO LegacyList[] = {
-// PCI-ID Branch Marketing name
- { 0x0020, 1, "RIVA TNT" },
- { 0x0028, 1, "RIVA TNT2/TNT2 Pro" },
- { 0x0029, 1, "RIVA TNT2 Ultra" },
- { 0x002C, 1, "Vanta/Vanta LT" },
- { 0x002D, 1, "RIVA TNT2 Model 64/Model 64 Pro" },
- { 0x0040, 4, "GeForce 6800 Ultra" },
- { 0x0041, 4, "GeForce 6800" },
- { 0x0042, 4, "GeForce 6800 LE" },
- { 0x0043, 4, "GeForce 6800 XE" },
- { 0x0044, 4, "GeForce 6800 XT" },
- { 0x0045, 4, "GeForce 6800 GT" },
- { 0x0046, 4, "GeForce 6800 GT" },
- { 0x0047, 4, "GeForce 6800 GS" },
- { 0x0048, 4, "GeForce 6800 XT" },
- { 0x004E, 4, "Quadro FX 4000" },
- { 0x0090, 4, "GeForce 7800 GTX" },
- { 0x0091, 4, "GeForce 7800 GTX" },
- { 0x0092, 4, "GeForce 7800 GT" },
- { 0x0093, 4, "GeForce 7800 GS" },
- { 0x0095, 4, "GeForce 7800 SLI" },
- { 0x0098, 4, "GeForce Go 7800" },
- { 0x0099, 4, "GeForce Go 7800 GTX" },
- { 0x009D, 4, "Quadro FX 4500" },
- { 0x00A0, 1, "Aladdin TNT2" },
- { 0x00C0, 4, "GeForce 6800 GS" },
- { 0x00C1, 4, "GeForce 6800" },
- { 0x00C2, 4, "GeForce 6800 LE" },
- { 0x00C3, 4, "GeForce 6800 XT" },
- { 0x00C8, 4, "GeForce Go 6800" },
- { 0x00C9, 4, "GeForce Go 6800 Ultra" },
- { 0x00CC, 4, "Quadro FX Go1400" },
- { 0x00CD, 4, "Quadro FX 3450/4000 SDI" },
- { 0x00CE, 4, "Quadro FX 1400" },
- { 0x00F1, 4, "GeForce 6600 GT" },
- { 0x00F2, 4, "GeForce 6600" },
- { 0x00F3, 4, "GeForce 6200" },
- { 0x00F4, 4, "GeForce 6600 LE" },
- { 0x00F5, 4, "GeForce 7800 GS" },
- { 0x00F6, 4, "GeForce 6800 GS" },
- { 0x00F8, 4, "Quadro FX 3400/Quadro FX 4000" },
- { 0x00F9, 4, "GeForce 6800 Ultra" },
- { 0x00FA, 3, "GeForce PCX 5750" },
- { 0x00FB, 3, "GeForce PCX 5900" },
- { 0x00FC, 3, "Quadro FX 330/GeForce PCX 5300" },
- { 0x00FD, 3, "Quadro FX 330/Quadro NVS 280 PCI-E" },
- { 0x00FE, 3, "Quadro FX 1300" },
- { 0x0100, 1, "GeForce 256" },
- { 0x0101, 1, "GeForce DDR" },
- { 0x0103, 1, "Quadro" },
- { 0x0110, 2, "GeForce2 MX/MX 400" },
- { 0x0111, 2, "GeForce2 MX 100/200" },
- { 0x0112, 2, "GeForce2 Go" },
- { 0x0113, 2, "Quadro2 MXR/EX/Go" },
- { 0x0140, 4, "GeForce 6600 GT" },
- { 0x0141, 4, "GeForce 6600" },
- { 0x0142, 4, "GeForce 6600 LE" },
- { 0x0143, 4, "GeForce 6600 VE" },
- { 0x0144, 4, "GeForce Go 6600" },
- { 0x0145, 4, "GeForce 6610 XL" },
- { 0x0146, 4, "GeForce Go 6600 TE/6200 TE" },
- { 0x0147, 4, "GeForce 6700 XL" },
- { 0x0148, 4, "GeForce Go 6600" },
- { 0x0149, 4, "GeForce Go 6600 GT" },
- { 0x014A, 4, "Quadro NVS 440" },
- { 0x014C, 4, "Quadro FX 540M" },
- { 0x014D, 4, "Quadro FX 550" },
- { 0x014E, 4, "Quadro FX 540" },
- { 0x014F, 4, "GeForce 6200" },
- { 0x0150, 1, "GeForce2 GTS/GeForce2 Pro" },
- { 0x0151, 1, "GeForce2 Ti" },
- { 0x0152, 1, "GeForce2 Ultra" },
- { 0x0153, 1, "Quadro2 Pro" },
- { 0x0160, 4, "GeForce 6500" },
- { 0x0161, 4, "GeForce 6200 TurboCache(TM)" },
- { 0x0162, 4, "GeForce 6200SE TurboCache(TM)" },
- { 0x0163, 4, "GeForce 6200 LE" },
- { 0x0164, 4, "GeForce Go 6200" },
- { 0x0165, 4, "Quadro NVS 285" },
- { 0x0166, 4, "GeForce Go 6400" },
- { 0x0167, 4, "GeForce Go 6200" },
- { 0x0168, 4, "GeForce Go 6400" },
- { 0x0169, 4, "GeForce 6250" },
- { 0x016A, 4, "GeForce 7100 GS" },
- { 0x0170, 2, "GeForce4 MX 460" },
- { 0x0171, 2, "GeForce4 MX 440" },
- { 0x0172, 2, "GeForce4 MX 420" },
- { 0x0173, 2, "GeForce4 MX 440-SE" },
- { 0x0174, 2, "GeForce4 440 Go" },
- { 0x0175, 2, "GeForce4 420 Go" },
- { 0x0176, 2, "GeForce4 420 Go 32M" },
- { 0x0177, 2, "GeForce4 460 Go" },
- { 0x0178, 2, "Quadro4 550 XGL" },
- { 0x0179, 2, "GeForce4 440 Go 64M" },
- { 0x017A, 2, "Quadro NVS 400" },
- { 0x017C, 2, "Quadro4 500 GoGL" },
- { 0x017D, 2, "GeForce4 410 Go 16M" },
- { 0x0181, 2, "GeForce4 MX 440 with AGP8X" },
- { 0x0182, 2, "GeForce4 MX 440SE with AGP8X" },
- { 0x0183, 2, "GeForce4 MX 420 with AGP8X" },
- { 0x0185, 2, "GeForce4 MX 4000" },
- { 0x0188, 2, "Quadro4 580 XGL" },
- { 0x018A, 2, "Quadro NVS 280 SD" },
- { 0x018B, 2, "Quadro4 380 XGL" },
- { 0x018C, 2, "Quadro NVS 50 PCI" },
- { 0x0191, 5, "GeForce 8800 GTX" },
- { 0x0193, 5, "GeForce 8800 GTS" },
- { 0x0194, 5, "GeForce 8800 Ultra" },
- { 0x0197, 5, "Tesla C870" },
- { 0x019D, 5, "Quadro FX 5600" },
- { 0x019E, 5, "Quadro FX 4600" },
- { 0x01A0, 2, "GeForce2 Integrated GPU" },
- { 0x01D0, 4, "GeForce 7350 LE" },
- { 0x01D1, 4, "GeForce 7300 LE" },
- { 0x01D2, 4, "GeForce 7550 LE" },
- { 0x01D3, 4, "GeForce 7300 SE/7200 GS" },
- { 0x01D6, 4, "GeForce Go 7200" },
- { 0x01D7, 4, "GeForce Go 7300" },
- { 0x01D8, 4, "GeForce Go 7400" },
- { 0x01DA, 4, "Quadro NVS 110M" },
- { 0x01DB, 4, "Quadro NVS 120M" },
- { 0x01DC, 4, "Quadro FX 350M" },
- { 0x01DD, 4, "GeForce 7500 LE" },
- { 0x01DE, 4, "Quadro FX 350" },
- { 0x01DF, 4, "GeForce 7300 GS" },
- { 0x01F0, 2, "GeForce4 MX Integrated GPU" },
- { 0x0200, 2, "GeForce3" },
- { 0x0201, 2, "GeForce3 Ti 200" },
- { 0x0202, 2, "GeForce3 Ti 500" },
- { 0x0203, 2, "Quadro DCC" },
- { 0x0211, 4, "GeForce 6800" },
- { 0x0212, 4, "GeForce 6800 LE" },
- { 0x0215, 4, "GeForce 6800 GT" },
- { 0x0218, 4, "GeForce 6800 XT" },
- { 0x0221, 4, "GeForce 6200" },
- { 0x0222, 4, "GeForce 6200 A-LE" },
- { 0x0240, 4, "GeForce 6150" },
- { 0x0241, 4, "GeForce 6150 LE" },
- { 0x0242, 4, "GeForce 6100" },
- { 0x0244, 4, "GeForce Go 6150" },
- { 0x0245, 4, "Quadro NVS 210S / GeForce 6150LE" },
- { 0x0247, 4, "GeForce Go 6100" },
- { 0x0250, 2, "GeForce4 Ti 4600" },
- { 0x0251, 2, "GeForce4 Ti 4400" },
- { 0x0253, 2, "GeForce4 Ti 4200" },
- { 0x0258, 2, "Quadro4 900 XGL" },
- { 0x0259, 2, "Quadro4 750 XGL" },
- { 0x025B, 2, "Quadro4 700 XGL" },
- { 0x0280, 2, "GeForce4 Ti 4800" },
- { 0x0281, 2, "GeForce4 Ti 4200 with AGP8X" },
- { 0x0282, 2, "GeForce4 Ti 4800 SE" },
- { 0x0286, 2, "GeForce4 4200 Go" },
- { 0x0288, 2, "Quadro4 980 XGL" },
- { 0x0289, 2, "Quadro4 780 XGL" },
- { 0x028C, 2, "Quadro4 700 GoGL" },
- { 0x0290, 4, "GeForce 7900 GTX" },
- { 0x0291, 4, "GeForce 7900 GT/GTO" },
- { 0x0292, 4, "GeForce 7900 GS" },
- { 0x0293, 4, "GeForce 7950 GX2" },
- { 0x0294, 4, "GeForce 7950 GX2" },
- { 0x0295, 4, "GeForce 7950 GT" },
- { 0x0297, 4, "GeForce Go 7950 GTX" },
- { 0x0298, 4, "GeForce Go 7900 GS" },
- { 0x0299, 4, "Quadro NVS 510M" },
- { 0x029A, 4, "Quadro FX 2500M" },
- { 0x029B, 4, "Quadro FX 1500M" },
- { 0x029C, 4, "Quadro FX 5500" },
- { 0x029D, 4, "Quadro FX 3500" },
- { 0x029E, 4, "Quadro FX 1500" },
- { 0x029F, 4, "Quadro FX 4500 X2" },
- { 0x02E0, 4, "GeForce 7600 GT" },
- { 0x02E1, 4, "GeForce 7600 GS" },
- { 0x02E2, 4, "GeForce 7300 GT" },
- { 0x02E3, 4, "GeForce 7900 GS" },
- { 0x02E4, 4, "GeForce 7950 GT" },
- { 0x0301, 3, "GeForce FX 5800 Ultra" },
- { 0x0302, 3, "GeForce FX 5800" },
- { 0x0308, 3, "Quadro FX 2000" },
- { 0x0309, 3, "Quadro FX 1000" },
- { 0x0311, 3, "GeForce FX 5600 Ultra" },
- { 0x0312, 3, "GeForce FX 5600" },
- { 0x0314, 3, "GeForce FX 5600XT" },
- { 0x031A, 3, "GeForce FX Go5600" },
- { 0x031B, 3, "GeForce FX Go5650" },
- { 0x031C, 3, "Quadro FX Go700" },
- { 0x0320, 3, "GeForce FX 5200" },
- { 0x0321, 3, "GeForce FX 5200 Ultra" },
- { 0x0322, 3, "GeForce FX 5200" },
- { 0x0323, 3, "GeForce FX 5200LE" },
- { 0x0324, 3, "GeForce FX Go5200" },
- { 0x0325, 3, "GeForce FX Go5250" },
- { 0x0326, 3, "GeForce FX 5500" },
- { 0x0327, 3, "GeForce FX 5100" },
- { 0x0328, 3, "GeForce FX Go5200 32M/64M" },
- { 0x032A, 3, "Quadro NVS 55/280 PCI" },
- { 0x032B, 3, "Quadro FX 500/FX 600" },
- { 0x032C, 3, "GeForce FX Go53xx" },
- { 0x032D, 3, "GeForce FX Go5100" },
- { 0x0330, 3, "GeForce FX 5900 Ultra" },
- { 0x0331, 3, "GeForce FX 5900" },
- { 0x0332, 3, "GeForce FX 5900XT" },
- { 0x0333, 3, "GeForce FX 5950 Ultra" },
- { 0x0334, 3, "GeForce FX 5900ZT" },
- { 0x0338, 3, "Quadro FX 3000" },
- { 0x033F, 3, "Quadro FX 700" },
- { 0x0341, 3, "GeForce FX 5700 Ultra" },
- { 0x0342, 3, "GeForce FX 5700" },
- { 0x0343, 3, "GeForce FX 5700LE" },
- { 0x0344, 3, "GeForce FX 5700VE" },
- { 0x0347, 3, "GeForce FX Go5700" },
- { 0x0348, 3, "GeForce FX Go5700" },
- { 0x034C, 3, "Quadro FX Go1000" },
- { 0x034E, 3, "Quadro FX 1100" },
- { 0x038B, 4, "GeForce 7650 GS" },
- { 0x0390, 4, "GeForce 7650 GS" },
- { 0x0391, 4, "GeForce 7600 GT" },
- { 0x0392, 4, "GeForce 7600 GS" },
- { 0x0393, 4, "GeForce 7300 GT" },
- { 0x0394, 4, "GeForce 7600 LE" },
- { 0x0395, 4, "GeForce 7300 GT" },
- { 0x0397, 4, "GeForce Go 7700" },
- { 0x0398, 4, "GeForce Go 7600" },
- { 0x0399, 4, "GeForce Go 7600 GT" },
- { 0x039C, 4, "Quadro FX 560M" },
- { 0x039E, 4, "Quadro FX 560" },
- { 0x03D0, 4, "GeForce 6150SE nForce 430" },
- { 0x03D1, 4, "GeForce 6100 nForce 405" },
- { 0x03D2, 4, "GeForce 6100 nForce 400" },
- { 0x03D5, 4, "GeForce 6100 nForce 420" },
- { 0x03D6, 4, "GeForce 7025 / nForce 630a" },
- { 0x0400, 5, "GeForce 8600 GTS" },
- { 0x0401, 5, "GeForce 8600 GT" },
- { 0x0402, 5, "GeForce 8600 GT" },
- { 0x0403, 5, "GeForce 8600 GS" },
- { 0x0404, 5, "GeForce 8400 GS" },
- { 0x0405, 5, "GeForce 9500M GS" },
- { 0x0406, 5, "GeForce 8300 GS" },
- { 0x0407, 5, "GeForce 8600M GT" },
- { 0x0408, 5, "GeForce 9650M GS" },
- { 0x0409, 5, "GeForce 8700M GT" },
- { 0x040A, 5, "Quadro FX 370" },
- { 0x040B, 5, "Quadro NVS 320M" },
- { 0x040C, 5, "Quadro FX 570M" },
- { 0x040D, 5, "Quadro FX 1600M" },
- { 0x040E, 5, "Quadro FX 570" },
- { 0x040F, 5, "Quadro FX 1700" },
- { 0x0410, 5, "GeForce GT 330" },
- { 0x0420, 5, "GeForce 8400 SE" },
- { 0x0421, 5, "GeForce 8500 GT" },
- { 0x0422, 5, "GeForce 8400 GS" },
- { 0x0423, 5, "GeForce 8300 GS" },
- { 0x0424, 5, "GeForce 8400 GS" },
- { 0x0425, 5, "GeForce 8600M GS" },
- { 0x0426, 5, "GeForce 8400M GT" },
- { 0x0427, 5, "GeForce 8400M GS" },
- { 0x0428, 5, "GeForce 8400M G" },
- { 0x0429, 5, "Quadro NVS 140M" },
- { 0x042A, 5, "Quadro NVS 130M" },
- { 0x042B, 5, "Quadro NVS 135M" },
- { 0x042C, 5, "GeForce 9400 GT" },
- { 0x042D, 5, "Quadro FX 360M" },
- { 0x042E, 5, "GeForce 9300M G" },
- { 0x042F, 5, "Quadro NVS 290" },
- { 0x0531, 4, "GeForce 7150M / nForce 630M" },
- { 0x0533, 4, "GeForce 7000M / nForce 610M" },
- { 0x053A, 4, "GeForce 7050 PV / nForce 630a" },
- { 0x053B, 4, "GeForce 7050 PV / nForce 630a" },
- { 0x053E, 4, "GeForce 7025 / nForce 630a" },
- { 0x05E0, 5, "GeForce GTX 295" },
- { 0x05E1, 5, "GeForce GTX 280" },
- { 0x05E2, 5, "GeForce GTX 260" },
- { 0x05E3, 5, "GeForce GTX 285" },
- { 0x05E6, 5, "GeForce GTX 275" },
- { 0x05E7, 5, "Tesla C1060/Tesla M1060/Tesla T10 Processor" },
- { 0x05EA, 5, "GeForce GTX 260" },
- { 0x05EB, 5, "GeForce GTX 295" },
- { 0x05ED, 5, "Quadroplex 2200 D2" },
- { 0x05F8, 5, "Quadroplex 2200 S4" },
- { 0x05F9, 5, "Quadro CX" },
- { 0x05FD, 5, "Quadro FX 5800" },
- { 0x05FE, 5, "Quadro FX 4800" },
- { 0x05FF, 5, "Quadro FX 3800" },
- { 0x0600, 5, "GeForce 8800 GTS 512" },
- { 0x0601, 5, "GeForce 9800 GT" },
- { 0x0602, 5, "GeForce 8800 GT" },
- { 0x0603, 5, "GeForce GT 230" },
- { 0x0604, 5, "GeForce 9800 GX2" },
- { 0x0605, 5, "GeForce 9800 GT" },
- { 0x0606, 5, "GeForce 8800 GS" },
- { 0x0607, 5, "GeForce GTS 240" },
- { 0x0608, 5, "GeForce 9800M GTX" },
- { 0x0609, 5, "GeForce 8800M GTS/GeForce 8800 GS" },
- { 0x060A, 5, "GeForce GTX 280M" },
- { 0x060B, 5, "GeForce 9800M GT" },
- { 0x060C, 5, "GeForce 8800M GTX" },
- { 0x060D, 5, "GeForce 8800 GS" },
- { 0x060F, 5, "GeForce GTX 285M" },
- { 0x0610, 5, "GeForce 9600 GSO" },
- { 0x0611, 5, "GeForce 8800 GT" },
- { 0x0612, 5, "GeForce 9800 GTX/9800 GTX+" },
- { 0x0613, 5, "GeForce 9800 GTX+" },
- { 0x0614, 5, "GeForce 9800 GT" },
- { 0x0615, 5, "GeForce GTS 250" },
- { 0x0617, 5, "GeForce 9800M GTX" },
- { 0x0618, 5, "GeForce GTX 260M" },
- { 0x0619, 5, "Quadro FX 4700 X2" },
- { 0x061A, 5, "Quadro FX 3700" },
- { 0x061B, 5, "Quadro VX 200" },
- { 0x061C, 5, "Quadro FX 3600M" },
- { 0x061D, 5, "Quadro FX 2800M" },
- { 0x061E, 5, "Quadro FX 3700M" },
- { 0x061F, 5, "Quadro FX 3800M" },
- { 0x0621, 5, "GeForce GT 230" },
- { 0x0622, 5, "GeForce 9600 GT" },
- { 0x0623, 5, "GeForce 9600 GS" },
- { 0x0625, 5, "GeForce 9600 GSO 512" },
- { 0x0626, 5, "GeForce GT 130" },
- { 0x0627, 5, "GeForce GT 140" },
- { 0x0628, 5, "GeForce 9800M GTS" },
- { 0x062A, 5, "GeForce 9700M GTS" },
- { 0x062B, 5, "GeForce 9800M GS" },
- { 0x062C, 5, "GeForce 9800M GTS" },
- { 0x062D, 5, "GeForce 9600 GT" },
- { 0x062E, 5, "GeForce 9600 GT/GeForce GT 130" },
- { 0x0630, 5, "GeForce 9700 S" },
- { 0x0631, 5, "GeForce GTS 160M" },
- { 0x0632, 5, "GeForce GTS 150M" },
- { 0x0635, 5, "GeForce 9600 GSO" },
- { 0x0637, 5, "GeForce 9600 GT" },
- { 0x0638, 5, "Quadro FX 1800" },
- { 0x063A, 5, "Quadro FX 2700M" },
- { 0x0640, 5, "GeForce 9500 GT" },
- { 0x0641, 5, "GeForce 9400 GT" },
- { 0x0643, 5, "GeForce 9500 GT" },
- { 0x0644, 5, "GeForce 9500 GS" },
- { 0x0645, 5, "GeForce 9500 GS" },
- { 0x0646, 5, "GeForce GT 120" },
- { 0x0647, 5, "GeForce 9600M GT" },
- { 0x0648, 5, "GeForce 9600M GS" },
- { 0x0649, 5, "GeForce 9600M GT/GeForce GT 220M" },
- { 0x064A, 5, "GeForce 9700M GT" },
- { 0x064B, 5, "GeForce 9500M G" },
- { 0x064C, 5, "GeForce 9650M GT" },
- { 0x0651, 5, "GeForce G 110M" },
- { 0x0652, 5, "GeForce GT 130M/GeForce GT 240M LE" },
- { 0x0653, 5, "GeForce GT 120M" },
- { 0x0654, 5, "GeForce GT 220M/GeForce GT 320M" },
- { 0x0655, 5, "GeForce GT 120" },
- { 0x0656, 5, "GeForce GT 120" },
- { 0x0658, 5, "Quadro FX 380" },
- { 0x0659, 5, "Quadro FX 580" },
- { 0x065A, 5, "Quadro FX 1700M" },
- { 0x065B, 5, "GeForce 9400 GT" },
- { 0x065C, 5, "Quadro FX 770M" },
- { 0x06E0, 5, "GeForce 9300 GE" },
- { 0x06E1, 5, "GeForce 9300 GS" },
- { 0x06E2, 5, "GeForce 8400" },
- { 0x06E3, 5, "GeForce 8400 SE" },
- { 0x06E4, 5, "GeForce 8400 GS" },
- { 0x06E5, 5, "GeForce 9300M GS" },
- { 0x06E6, 5, "GeForce G100" },
- { 0x06E7, 5, "GeForce 9300 SE" },
- { 0x06E8, 5, "GeForce 9200M GS/GeForce 9200M GE" },
- { 0x06E9, 5, "GeForce 9300M GS" },
- { 0x06EA, 5, "Quadro NVS 150M" },
- { 0x06EB, 5, "Quadro NVS 160M" },
- { 0x06EC, 5, "GeForce G 105M" },
- { 0x06EF, 5, "GeForce G 103M" },
- { 0x06F1, 5, "GeForce G105M" },
- { 0x06F8, 5, "Quadro NVS 420" },
- { 0x06F9, 5, "Quadro FX 370 LP/Quadro FX 370 Low Profile" },
- { 0x06FA, 5, "Quadro NVS 450" },
- { 0x06FB, 5, "Quadro FX 370M" },
- { 0x06FD, 5, "Quadro NVS 295" },
- { 0x06FF, 5, "HICx16 + Graphics/HICx8 + Graphics" },
- { 0x07E0, 4, "GeForce 7150 / nForce 630i" },
- { 0x07E1, 4, "GeForce 7100 / nForce 630i" },
- { 0x07E2, 4, "GeForce 7050 / nForce 630i" },
- { 0x07E3, 4, "GeForce 7050 / nForce 610i" },
- { 0x07E5, 4, "GeForce 7050 / nForce 620i" },
- { 0x0840, 5, "GeForce 8200M" },
- { 0x0844, 5, "GeForce 9100M G" },
- { 0x0845, 5, "GeForce 8200M G" },
- { 0x0846, 5, "GeForce 9200" },
- { 0x0847, 5, "GeForce 9100" },
- { 0x0848, 5, "GeForce 8300" },
- { 0x0849, 5, "GeForce 8200" },
- { 0x084A, 5, "nForce 730a" },
- { 0x084B, 5, "GeForce 9200" },
- { 0x084C, 5, "nForce 980a/780a SLI" },
- { 0x084D, 5, "nForce 750a SLI" },
- { 0x084F, 5, "GeForce 8100 / nForce 720a" },
- { 0x0860, 5, "GeForce 9400" },
- { 0x0861, 5, "GeForce 9400" },
- { 0x0862, 5, "GeForce 9400M G" },
- { 0x0863, 5, "GeForce 9400M" },
- { 0x0864, 5, "GeForce 9300" },
- { 0x0865, 5, "ION" },
- { 0x0866, 5, "GeForce 9400M G/GeForce 9400M" },
- { 0x0867, 5, "GeForce 9400" },
- { 0x0868, 5, "nForce 760i SLI" },
- { 0x0869, 5, "GeForce 9400" },
- { 0x086A, 5, "GeForce 9400" },
- { 0x086C, 5, "GeForce 9300 / nForce 730i" },
- { 0x086D, 5, "GeForce 9200" },
- { 0x086E, 5, "GeForce 9100M G" },
- { 0x086F, 5, "GeForce 8200M G" },
- { 0x0870, 5, "GeForce 9400M" },
- { 0x0871, 5, "GeForce 9200" },
- { 0x0872, 5, "GeForce G102M/GeForce G205M" },
- { 0x0873, 5, "GeForce G102M/GeForce G205M" },
- { 0x0874, 5, "ION" },
- { 0x0876, 5, "ION" },
- { 0x087A, 5, "GeForce 9400" },
- { 0x087D, 5, "ION" },
- { 0x087E, 5, "ION LE" },
- { 0x087F, 5, "ION LE" },
- { 0x08A0, 5, "GeForce 320M" },
- { 0x08A2, 5, "GeForce 320M" },
- { 0x08A3, 5, "GeForce 320M" },
- { 0x08A4, 5, "GeForce 320M" },
- { 0x08A5, 5, "GeForce 320M" },
- { 0x0A20, 5, "GeForce GT 220" },
- { 0x0A22, 5, "GeForce 315" },
- { 0x0A23, 5, "GeForce 210" },
- { 0x0A26, 5, "GeForce 405" },
- { 0x0A27, 5, "GeForce 405" },
- { 0x0A28, 5, "GeForce GT 230M" },
- { 0x0A29, 5, "GeForce GT 330M" },
- { 0x0A2A, 5, "GeForce GT 230M" },
- { 0x0A2B, 5, "GeForce GT 330M" },
- { 0x0A2C, 5, "NVS 5100M" },
- { 0x0A2D, 5, "GeForce GT 320M" },
- { 0x0A32, 5, "GeForce GT 415" },
- { 0x0A34, 5, "GeForce GT 240M" },
- { 0x0A35, 5, "GeForce GT 325M" },
- { 0x0A38, 5, "Quadro 400" },
- { 0x0A3C, 5, "Quadro FX 880M" },
- { 0x0A60, 5, "GeForce G210" },
- { 0x0A62, 5, "GeForce 205" },
- { 0x0A63, 5, "GeForce 310" },
- { 0x0A64, 5, "Second Generation ION" },
- { 0x0A65, 5, "GeForce 210" },
- { 0x0A66, 5, "GeForce 310" },
- { 0x0A67, 5, "GeForce 315" },
- { 0x0A68, 5, "GeForce G105M" },
- { 0x0A69, 5, "GeForce G105M" },
- { 0x0A6A, 5, "NVS 2100M" },
- { 0x0A6C, 5, "NVS 3100M" },
- { 0x0A6E, 5, "GeForce 305M/Second Generation ION" },
- { 0x0A6F, 5, "Second Generation ION" },
- { 0x0A70, 5, "GeForce 310M/Second Generation ION" },
- { 0x0A71, 5, "GeForce 305M" },
- { 0x0A72, 5, "GeForce 310M" },
- { 0x0A73, 5, "GeForce 305M/Second Generation ION" },
- { 0x0A74, 5, "GeForce G210M/GeForce G210" },
- { 0x0A75, 5, "GeForce 310M/Second Generation ION" },
- { 0x0A76, 5, "Second Generation ION" },
- { 0x0A78, 5, "Quadro FX 380 LP" },
- { 0x0A7A, 5, "GeForce 315M/GeForce 405/GeForce 405M" },
- { 0x0A7C, 5, "Quadro FX 380M" },
- { 0x0CA0, 5, "GeForce GT 330" },
- { 0x0CA2, 5, "GeForce GT 320" },
- { 0x0CA3, 5, "GeForce GT 240" },
- { 0x0CA4, 5, "GeForce GT 340" },
- { 0x0CA5, 5, "GeForce GT 220" },
- { 0x0CA7, 5, "GeForce GT 330" },
- { 0x0CA8, 5, "GeForce GTS 260M" },
- { 0x0CA9, 5, "GeForce GTS 250M" },
- { 0x0CAC, 5, "GeForce GT 220" },
- { 0x0CAF, 5, "GeForce GT 335M" },
- { 0x0CB0, 5, "GeForce GTS 350M" },
- { 0x0CB1, 5, "GeForce GTS 360M" },
- { 0x0CBC, 5, "Quadro FX 1800M" },
- { 0x10C0, 5, "GeForce 9300 GS" },
- { 0x10C3, 5, "GeForce 8400GS" },
- { 0x10C5, 5, "GeForce 405" },
- { 0x10D8, 5, "NVS 300" }
+// PCI-ID Subvend Subdev Branch Marketing name
+ { 0x0020, 0x0000, 0x0000, 1, "RIVA TNT" },
+ { 0x0028, 0x0000, 0x0000, 1, "RIVA TNT2/TNT2 Pro" },
+ { 0x00A0, 0x0000, 0x0000, 1, "Aladdin TNT2" },
+ { 0x002C, 0x0000, 0x0000, 1, "Vanta/Vanta LT" },
+ { 0x0029, 0x0000, 0x0000, 1, "RIVA TNT2 Ultra" },
+ { 0x002D, 0x0000, 0x0000, 1, "RIVA TNT2 Model 64/Model 64 Pro" },
+ { 0x0100, 0x0000, 0x0000, 1, "GeForce 256" },
+ { 0x0101, 0x0000, 0x0000, 1, "GeForce DDR" },
+ { 0x0103, 0x0000, 0x0000, 1, "Quadro" },
+ { 0x0150, 0x0000, 0x0000, 1, "GeForce2 GTS/GeForce2 Pro" },
+ { 0x0151, 0x0000, 0x0000, 1, "GeForce2 Ti" },
+ { 0x0152, 0x0000, 0x0000, 1, "GeForce2 Ultra" },
+ { 0x0153, 0x0000, 0x0000, 1, "Quadro2 Pro" },
+ { 0x0110, 0x0000, 0x0000, 2, "GeForce2 MX/MX 400" },
+ { 0x0111, 0x0000, 0x0000, 2, "GeForce2 MX 100/200" },
+ { 0x0113, 0x0000, 0x0000, 2, "Quadro2 MXR/EX/Go" },
+ { 0x0170, 0x0000, 0x0000, 2, "GeForce4 MX 460" },
+ { 0x0171, 0x0000, 0x0000, 2, "GeForce4 MX 440" },
+ { 0x0172, 0x0000, 0x0000, 2, "GeForce4 MX 420" },
+ { 0x0173, 0x0000, 0x0000, 2, "GeForce4 MX 440-SE" },
+ { 0x0178, 0x0000, 0x0000, 2, "Quadro4 550 XGL" },
+ { 0x017A, 0x0000, 0x0000, 2, "Quadro NVS 400" },
+ { 0x0181, 0x0000, 0x0000, 2, "GeForce4 MX 440 with AGP8X" },
+ { 0x0182, 0x0000, 0x0000, 2, "GeForce4 MX 440SE with AGP8X" },
+ { 0x0183, 0x0000, 0x0000, 2, "GeForce4 MX 420 with AGP8X" },
+ { 0x0185, 0x0000, 0x0000, 2, "GeForce4 MX 4000" },
+ { 0x0188, 0x0000, 0x0000, 2, "Quadro4 580 XGL" },
+ { 0x018A, 0x0000, 0x0000, 2, "Quadro NVS 280 SD" },
+ { 0x018B, 0x0000, 0x0000, 2, "Quadro4 380 XGL" },
+ { 0x018C, 0x0000, 0x0000, 2, "Quadro NVS 50 PCI" },
+ { 0x0200, 0x0000, 0x0000, 2, "GeForce3" },
+ { 0x0201, 0x0000, 0x0000, 2, "GeForce3 Ti 200" },
+ { 0x0202, 0x0000, 0x0000, 2, "GeForce3 Ti 500" },
+ { 0x0203, 0x0000, 0x0000, 2, "Quadro DCC" },
+ { 0x0250, 0x0000, 0x0000, 2, "GeForce4 Ti 4600" },
+ { 0x0251, 0x0000, 0x0000, 2, "GeForce4 Ti 4400" },
+ { 0x0253, 0x0000, 0x0000, 2, "GeForce4 Ti 4200" },
+ { 0x0258, 0x0000, 0x0000, 2, "Quadro4 900 XGL" },
+ { 0x0259, 0x0000, 0x0000, 2, "Quadro4 750 XGL" },
+ { 0x025B, 0x0000, 0x0000, 2, "Quadro4 700 XGL" },
+ { 0x0280, 0x0000, 0x0000, 2, "GeForce4 Ti 4800" },
+ { 0x0281, 0x0000, 0x0000, 2, "GeForce4 Ti 4200 with AGP8X" },
+ { 0x0282, 0x0000, 0x0000, 2, "GeForce4 Ti 4800 SE" },
+ { 0x0288, 0x0000, 0x0000, 2, "Quadro4 980 XGL" },
+ { 0x0289, 0x0000, 0x0000, 2, "Quadro4 780 XGL" },
+ { 0x0112, 0x0000, 0x0000, 2, "GeForce2 Go" },
+ { 0x0174, 0x0000, 0x0000, 2, "GeForce4 440 Go" },
+ { 0x0175, 0x0000, 0x0000, 2, "GeForce4 420 Go" },
+ { 0x0176, 0x0000, 0x0000, 2, "GeForce4 420 Go 32M" },
+ { 0x0177, 0x0000, 0x0000, 2, "GeForce4 460 Go" },
+ { 0x0179, 0x0000, 0x0000, 2, "GeForce4 440 Go 64M" },
+ { 0x017D, 0x0000, 0x0000, 2, "GeForce4 410 Go 16M" },
+ { 0x017C, 0x0000, 0x0000, 2, "Quadro4 500 GoGL" },
+ { 0x0286, 0x0000, 0x0000, 2, "GeForce4 4200 Go" },
+ { 0x028C, 0x0000, 0x0000, 2, "Quadro4 700 GoGL" },
+ { 0x01A0, 0x0000, 0x0000, 2, "GeForce2 Integrated GPU" },
+ { 0x01F0, 0x0000, 0x0000, 2, "GeForce4 MX Integrated GPU" },
+ { 0x0301, 0x0000, 0x0000, 3, "GeForce FX 5800 Ultra" },
+ { 0x0302, 0x0000, 0x0000, 3, "GeForce FX 5800" },
+ { 0x0311, 0x0000, 0x0000, 3, "GeForce FX 5600 Ultra" },
+ { 0x0312, 0x0000, 0x0000, 3, "GeForce FX 5600" },
+ { 0x0314, 0x0000, 0x0000, 3, "GeForce FX 5600XT" },
+ { 0x0320, 0x0000, 0x0000, 3, "GeForce FX 5200" },
+ { 0x0321, 0x0000, 0x0000, 3, "GeForce FX 5200 Ultra" },
+ { 0x0322, 0x0000, 0x0000, 3, "GeForce FX 5200" },
+ { 0x0323, 0x0000, 0x0000, 3, "GeForce FX 5200LE" },
+ { 0x0326, 0x0000, 0x0000, 3, "GeForce FX 5500" },
+ { 0x0327, 0x0000, 0x0000, 3, "GeForce FX 5100" },
+ { 0x0330, 0x0000, 0x0000, 3, "GeForce FX 5900 Ultra" },
+ { 0x0331, 0x0000, 0x0000, 3, "GeForce FX 5900" },
+ { 0x0332, 0x0000, 0x0000, 3, "GeForce FX 5900XT" },
+ { 0x0333, 0x0000, 0x0000, 3, "GeForce FX 5950 Ultra" },
+ { 0x0334, 0x0000, 0x0000, 3, "GeForce FX 5900ZT" },
+ { 0x0341, 0x0000, 0x0000, 3, "GeForce FX 5700 Ultra" },
+ { 0x0342, 0x0000, 0x0000, 3, "GeForce FX 5700" },
+ { 0x0343, 0x0000, 0x0000, 3, "GeForce FX 5700LE" },
+ { 0x0344, 0x0000, 0x0000, 3, "GeForce FX 5700VE" },
+ { 0x00FC, 0x0000, 0x0000, 3, "Quadro FX 330" },
+ { 0x00FD, 0x0000, 0x0000, 3, "Quadro FX 330" },
+ { 0x00FE, 0x0000, 0x0000, 3, "Quadro FX 1300" },
+ { 0x032B, 0x0000, 0x0000, 3, "Quadro FX 500/FX 600" },
+ { 0x033F, 0x0000, 0x0000, 3, "Quadro FX 700" },
+ { 0x0309, 0x0000, 0x0000, 3, "Quadro FX 1000" },
+ { 0x034E, 0x0000, 0x0000, 3, "Quadro FX 1100" },
+ { 0x0308, 0x0000, 0x0000, 3, "Quadro FX 2000" },
+ { 0x0338, 0x0000, 0x0000, 3, "Quadro FX 3000" },
+ { 0x031A, 0x0000, 0x0000, 3, "GeForce FX Go5600" },
+ { 0x031B, 0x0000, 0x0000, 3, "GeForce FX Go5650" },
+ { 0x0324, 0x0000, 0x0000, 3, "GeForce FX Go5200" },
+ { 0x0325, 0x0000, 0x0000, 3, "GeForce FX Go5250" },
+ { 0x0328, 0x0000, 0x0000, 3, "GeForce FX Go5200 32M/64M" },
+ { 0x032C, 0x0000, 0x0000, 3, "GeForce FX Go53xx" },
+ { 0x032D, 0x0000, 0x0000, 3, "GeForce FX Go5100" },
+ { 0x0347, 0x0000, 0x0000, 3, "GeForce FX Go5700" },
+ { 0x0348, 0x0000, 0x0000, 3, "GeForce FX Go5700" },
+ { 0x034C, 0x0000, 0x0000, 3, "Quadro FX Go1000" },
+ { 0x00FA, 0x0000, 0x0000, 3, "GeForce PCX 5750" },
+ { 0x00FB, 0x0000, 0x0000, 3, "GeForce PCX 5900" },
+ { 0x00FC, 0x0000, 0x0000, 3, "GeForce PCX 5300" },
+ { 0x00FD, 0x0000, 0x0000, 3, "Quadro NVS 280 PCI-E" },
+ { 0x032A, 0x0000, 0x0000, 3, "Quadro NVS 55/280 PCI" },
+ { 0x031C, 0x0000, 0x0000, 3, "Quadro FX Go700" },
+ { 0x00F1, 0x0000, 0x0000, 4, "GeForce 6600 GT" },
+ { 0x00F2, 0x0000, 0x0000, 4, "GeForce 6600" },
+ { 0x00F3, 0x0000, 0x0000, 4, "GeForce 6200" },
+ { 0x00F4, 0x0000, 0x0000, 4, "GeForce 6600 LE" },
+ { 0x00F5, 0x0000, 0x0000, 4, "GeForce 7800 GS" },
+ { 0x00F6, 0x0000, 0x0000, 4, "GeForce 6800 GS" },
+ { 0x00F8, 0x0000, 0x0000, 4, "Quadro FX 3400" },
+ { 0x00F8, 0x0000, 0x0000, 4, "Quadro FX 4000" },
+ { 0x00F9, 0x0000, 0x0000, 4, "GeForce 6800 Ultra" },
+ { 0x02E0, 0x0000, 0x0000, 4, "GeForce 7600 GT" },
+ { 0x02E1, 0x0000, 0x0000, 4, "GeForce 7600 GS" },
+ { 0x02E2, 0x0000, 0x0000, 4, "GeForce 7300 GT" },
+ { 0x02E3, 0x0000, 0x0000, 4, "GeForce 7900 GS" },
+ { 0x02E4, 0x0000, 0x0000, 4, "GeForce 7950 GT" },
+ { 0x0240, 0x0000, 0x0000, 4, "GeForce 6150" },
+ { 0x0241, 0x0000, 0x0000, 4, "GeForce 6150 LE" },
+ { 0x0242, 0x0000, 0x0000, 4, "GeForce 6100" },
+ { 0x0245, 0x0000, 0x0000, 4, "Quadro NVS 210S / GeForce 6150LE" },
+ { 0x03D0, 0x0000, 0x0000, 4, "GeForce 6150SE nForce 430" },
+ { 0x03D1, 0x0000, 0x0000, 4, "GeForce 6100 nForce 405" },
+ { 0x03D2, 0x0000, 0x0000, 4, "GeForce 6100 nForce 400" },
+ { 0x03D5, 0x0000, 0x0000, 4, "GeForce 6100 nForce 420" },
+ { 0x03D6, 0x0000, 0x0000, 4, "GeForce 7025 / nForce 630a" },
+ { 0x053A, 0x0000, 0x0000, 4, "GeForce 7050 PV / nForce 630a" },
+ { 0x053B, 0x0000, 0x0000, 4, "GeForce 7050 PV / nForce 630a" },
+ { 0x053E, 0x0000, 0x0000, 4, "GeForce 7025 / nForce 630a" },
+ { 0x07E0, 0x0000, 0x0000, 4, "GeForce 7150 / nForce 630i" },
+ { 0x07E1, 0x0000, 0x0000, 4, "GeForce 7100 / nForce 630i" },
+ { 0x07E2, 0x0000, 0x0000, 4, "GeForce 7050 / nForce 630i" },
+ { 0x07E3, 0x0000, 0x0000, 4, "GeForce 7050 / nForce 610i" },
+ { 0x07E5, 0x0000, 0x0000, 4, "GeForce 7050 / nForce 620i" },
+ { 0x0090, 0x0000, 0x0000, 4, "GeForce 7800 GTX" },
+ { 0x0091, 0x0000, 0x0000, 4, "GeForce 7800 GTX" },
+ { 0x0092, 0x0000, 0x0000, 4, "GeForce 7800 GT" },
+ { 0x0093, 0x0000, 0x0000, 4, "GeForce 7800 GS" },
+ { 0x0095, 0x0000, 0x0000, 4, "GeForce 7800 SLI" },
+ { 0x009D, 0x0000, 0x0000, 4, "Quadro FX 4500" },
+ { 0x0290, 0x0000, 0x0000, 4, "GeForce 7900 GTX" },
+ { 0x0291, 0x0000, 0x0000, 4, "GeForce 7900 GT/GTO" },
+ { 0x0292, 0x0000, 0x0000, 4, "GeForce 7900 GS" },
+ { 0x0293, 0x0000, 0x0000, 4, "GeForce 7950 GX2" },
+ { 0x0294, 0x0000, 0x0000, 4, "GeForce 7950 GX2" },
+ { 0x0295, 0x0000, 0x0000, 4, "GeForce 7950 GT" },
+ { 0x029C, 0x0000, 0x0000, 4, "Quadro FX 5500" },
+ { 0x029D, 0x0000, 0x0000, 4, "Quadro FX 3500" },
+ { 0x029E, 0x0000, 0x0000, 4, "Quadro FX 1500" },
+ { 0x029F, 0x0000, 0x0000, 4, "Quadro FX 4500 X2" },
+ { 0x01D0, 0x0000, 0x0000, 4, "GeForce 7350 LE" },
+ { 0x01D1, 0x0000, 0x0000, 4, "GeForce 7300 LE" },
+ { 0x01D2, 0x0000, 0x0000, 4, "GeForce 7550 LE" },
+ { 0x01D3, 0x0000, 0x0000, 4, "GeForce 7300 SE/7200 GS" },
+ { 0x01DD, 0x0000, 0x0000, 4, "GeForce 7500 LE" },
+ { 0x01DE, 0x0000, 0x0000, 4, "Quadro FX 350" },
+ { 0x01DF, 0x0000, 0x0000, 4, "GeForce 7300 GS" },
+ { 0x038B, 0x0000, 0x0000, 4, "GeForce 7650 GS" },
+ { 0x0390, 0x0000, 0x0000, 4, "GeForce 7650 GS" },
+ { 0x0391, 0x0000, 0x0000, 4, "GeForce 7600 GT" },
+ { 0x0392, 0x0000, 0x0000, 4, "GeForce 7600 GS" },
+ { 0x0393, 0x0000, 0x0000, 4, "GeForce 7300 GT" },
+ { 0x0394, 0x0000, 0x0000, 4, "GeForce 7600 LE" },
+ { 0x0395, 0x0000, 0x0000, 4, "GeForce 7300 GT" },
+ { 0x039E, 0x0000, 0x0000, 4, "Quadro FX 560" },
+ { 0x0040, 0x0000, 0x0000, 4, "GeForce 6800 Ultra" },
+ { 0x0041, 0x0000, 0x0000, 4, "GeForce 6800" },
+ { 0x0042, 0x0000, 0x0000, 4, "GeForce 6800 LE" },
+ { 0x0043, 0x0000, 0x0000, 4, "GeForce 6800 XE" },
+ { 0x0044, 0x0000, 0x0000, 4, "GeForce 6800 XT" },
+ { 0x0045, 0x0000, 0x0000, 4, "GeForce 6800 GT" },
+ { 0x0047, 0x0000, 0x0000, 4, "GeForce 6800 GS" },
+ { 0x0048, 0x0000, 0x0000, 4, "GeForce 6800 XT" },
+ { 0x004E, 0x0000, 0x0000, 4, "Quadro FX 4000" },
+ { 0x00C0, 0x0000, 0x0000, 4, "GeForce 6800 GS" },
+ { 0x00C1, 0x0000, 0x0000, 4, "GeForce 6800" },
+ { 0x00C2, 0x0000, 0x0000, 4, "GeForce 6800 LE" },
+ { 0x00C3, 0x0000, 0x0000, 4, "GeForce 6800 XT" },
+ { 0x00CD, 0x0000, 0x0000, 4, "Quadro FX 3450/4000 SDI" },
+ { 0x00CE, 0x0000, 0x0000, 4, "Quadro FX 1400" },
+ { 0x0140, 0x0000, 0x0000, 4, "GeForce 6600 GT" },
+ { 0x0141, 0x0000, 0x0000, 4, "GeForce 6600" },
+ { 0x0142, 0x0000, 0x0000, 4, "GeForce 6600 LE" },
+ { 0x0143, 0x0000, 0x0000, 4, "GeForce 6600 VE" },
+ { 0x0145, 0x0000, 0x0000, 4, "GeForce 6610 XL" },
+ { 0x0147, 0x0000, 0x0000, 4, "GeForce 6700 XL" },
+ { 0x014A, 0x0000, 0x0000, 4, "Quadro NVS 440" },
+ { 0x014C, 0x0000, 0x0000, 4, "Quadro FX 540M" },
+ { 0x014D, 0x0000, 0x0000, 4, "Quadro FX 550" },
+ { 0x014E, 0x0000, 0x0000, 4, "Quadro FX 540" },
+ { 0x014F, 0x0000, 0x0000, 4, "GeForce 6200" },
+ { 0x0160, 0x0000, 0x0000, 4, "GeForce 6500" },
+ { 0x0161, 0x0000, 0x0000, 4, "GeForce 6200 TurboCache(TM)" },
+ { 0x0162, 0x0000, 0x0000, 4, "GeForce 6200SE TurboCache(TM)" },
+ { 0x0163, 0x0000, 0x0000, 4, "GeForce 6200 LE" },
+ { 0x0165, 0x0000, 0x0000, 4, "Quadro NVS 285" },
+ { 0x0169, 0x0000, 0x0000, 4, "GeForce 6250" },
+ { 0x016A, 0x0000, 0x0000, 4, "GeForce 7100 GS" },
+ { 0x0221, 0x0000, 0x0000, 4, "GeForce 6200" },
+ { 0x0222, 0x0000, 0x0000, 4, "GeForce 6200 A-LE" },
+ { 0x0046, 0x0000, 0x0000, 4, "GeForce 6800 GT" },
+ { 0x0211, 0x0000, 0x0000, 4, "GeForce 6800" },
+ { 0x0212, 0x0000, 0x0000, 4, "GeForce 6800 LE" },
+ { 0x0215, 0x0000, 0x0000, 4, "GeForce 6800 GT" },
+ { 0x0218, 0x0000, 0x0000, 4, "GeForce 6800 XT" },
+ { 0x0244, 0x0000, 0x0000, 4, "GeForce Go 6150" },
+ { 0x0247, 0x0000, 0x0000, 4, "GeForce Go 6100" },
+ { 0x0531, 0x0000, 0x0000, 4, "GeForce 7150M / nForce 630M" },
+ { 0x0533, 0x0000, 0x0000, 4, "GeForce 7000M / nForce 610M" },
+ { 0x0098, 0x0000, 0x0000, 4, "GeForce Go 7800" },
+ { 0x0099, 0x0000, 0x0000, 4, "GeForce Go 7800 GTX" },
+ { 0x0297, 0x0000, 0x0000, 4, "GeForce Go 7950 GTX" },
+ { 0x0298, 0x0000, 0x0000, 4, "GeForce Go 7900 GS" },
+ { 0x0299, 0x0000, 0x0000, 4, "Quadro NVS 510M" },
+ { 0x029A, 0x0000, 0x0000, 4, "Quadro FX 2500M" },
+ { 0x029B, 0x0000, 0x0000, 4, "Quadro FX 1500M" },
+ { 0x01D6, 0x0000, 0x0000, 4, "GeForce Go 7200" },
+ { 0x01D7, 0x0000, 0x0000, 4, "GeForce Go 7300" },
+ { 0x01D8, 0x0000, 0x0000, 4, "GeForce Go 7400" },
+ { 0x01DA, 0x0000, 0x0000, 4, "Quadro NVS 110M" },
+ { 0x01DB, 0x0000, 0x0000, 4, "Quadro NVS 120M" },
+ { 0x01DC, 0x0000, 0x0000, 4, "Quadro FX 350M" },
+ { 0x0397, 0x0000, 0x0000, 4, "GeForce Go 7700" },
+ { 0x0398, 0x0000, 0x0000, 4, "GeForce Go 7600" },
+ { 0x0399, 0x0000, 0x0000, 4, "GeForce Go 7600 GT" },
+ { 0x039C, 0x0000, 0x0000, 4, "Quadro FX 560M" },
+ { 0x00C8, 0x0000, 0x0000, 4, "GeForce Go 6800" },
+ { 0x00C9, 0x0000, 0x0000, 4, "GeForce Go 6800 Ultra" },
+ { 0x00CC, 0x0000, 0x0000, 4, "Quadro FX Go1400" },
+ { 0x0144, 0x0000, 0x0000, 4, "GeForce Go 6600" },
+ { 0x0146, 0x0000, 0x0000, 4, "GeForce Go 6600 TE/6200 TE" },
+ { 0x0148, 0x0000, 0x0000, 4, "GeForce Go 6600" },
+ { 0x0149, 0x0000, 0x0000, 4, "GeForce Go 6600 GT" },
+ { 0x0164, 0x0000, 0x0000, 4, "GeForce Go 6200" },
+ { 0x0166, 0x0000, 0x0000, 4, "GeForce Go 6400" },
+ { 0x0167, 0x0000, 0x0000, 4, "GeForce Go 6200" },
+ { 0x0168, 0x0000, 0x0000, 4, "GeForce Go 6400" },
+ { 0x0840, 0x0000, 0x0000, 5, "GeForce 8200M" },
+ { 0x0846, 0x0000, 0x0000, 5, "GeForce 9200" },
+ { 0x0847, 0x0000, 0x0000, 5, "GeForce 9100" },
+ { 0x0848, 0x0000, 0x0000, 5, "GeForce 8300" },
+ { 0x0849, 0x0000, 0x0000, 5, "GeForce 8200" },
+ { 0x084A, 0x0000, 0x0000, 5, "nForce 730a" },
+ { 0x084B, 0x0000, 0x0000, 5, "GeForce 9200" },
+ { 0x084C, 0x0000, 0x0000, 5, "nForce 980a/780a SLI" },
+ { 0x084D, 0x0000, 0x0000, 5, "nForce 750a SLI" },
+ { 0x084F, 0x0000, 0x0000, 5, "GeForce 8100 / nForce 720a" },
+ { 0x0860, 0x0000, 0x0000, 5, "GeForce 9400" },
+ { 0x0861, 0x0000, 0x0000, 5, "GeForce 9400" },
+ { 0x0862, 0x0000, 0x0000, 5, "GeForce 9400M G" },
+ { 0x0863, 0x0000, 0x0000, 5, "GeForce 9400M" },
+ { 0x0864, 0x0000, 0x0000, 5, "GeForce 9300" },
+ { 0x0865, 0x0000, 0x0000, 5, "ION" },
+ { 0x0866, 0x0000, 0x0000, 5, "GeForce 9400M G" },
+ { 0x0866, 0x106B, 0x00B1, 5, "GeForce 9400M" },
+ { 0x0867, 0x0000, 0x0000, 5, "GeForce 9400" },
+ { 0x0868, 0x0000, 0x0000, 5, "nForce 760i SLI" },
+ { 0x0869, 0x0000, 0x0000, 5, "GeForce 9400" },
+ { 0x086A, 0x0000, 0x0000, 5, "GeForce 9400" },
+ { 0x086C, 0x0000, 0x0000, 5, "GeForce 9300 / nForce 730i" },
+ { 0x086D, 0x0000, 0x0000, 5, "GeForce 9200" },
+ { 0x086E, 0x0000, 0x0000, 5, "GeForce 9100M G" },
+ { 0x086F, 0x0000, 0x0000, 5, "GeForce 8200M G" },
+ { 0x0870, 0x0000, 0x0000, 5, "GeForce 9400M" },
+ { 0x0871, 0x0000, 0x0000, 5, "GeForce 9200" },
+ { 0x0872, 0x0000, 0x0000, 5, "GeForce G102M" },
+ { 0x0872, 0x1043, 0x1C42, 5, "GeForce G205M" },
+ { 0x0873, 0x0000, 0x0000, 5, "GeForce G102M" },
+ { 0x0873, 0x1043, 0x1C52, 5, "GeForce G205M" },
+ { 0x0874, 0x0000, 0x0000, 5, "ION" },
+ { 0x0876, 0x0000, 0x0000, 5, "ION" },
+ { 0x087A, 0x0000, 0x0000, 5, "GeForce 9400" },
+ { 0x087D, 0x0000, 0x0000, 5, "ION" },
+ { 0x0A20, 0x0000, 0x0000, 5, "GeForce GT 220" },
+ { 0x0A22, 0x0000, 0x0000, 5, "GeForce 315" },
+ { 0x0A23, 0x0000, 0x0000, 5, "GeForce 210" },
+ { 0x0A38, 0x0000, 0x0000, 5, "Quadro 400" },
+ { 0x0A60, 0x0000, 0x0000, 5, "GeForce G210" },
+ { 0x0A62, 0x0000, 0x0000, 5, "GeForce 205" },
+ { 0x0A63, 0x0000, 0x0000, 5, "GeForce 310" },
+ { 0x0A64, 0x0000, 0x0000, 5, "Second Generation ION" },
+ { 0x0A65, 0x0000, 0x0000, 5, "GeForce 210" },
+ { 0x0A66, 0x0000, 0x0000, 5, "GeForce 310" },
+ { 0x0A67, 0x0000, 0x0000, 5, "GeForce 315" },
+ { 0x0A68, 0x0000, 0x0000, 5, "GeForce G105M" },
+ { 0x0A69, 0x0000, 0x0000, 5, "GeForce G105M" },
+ { 0x0A6A, 0x0000, 0x0000, 5, "NVS 2100M" },
+ { 0x0A6C, 0x0000, 0x0000, 5, "NVS 3100M" },
+ { 0x0A6E, 0x0000, 0x0000, 5, "GeForce 305M" },
+ { 0x0A6E, 0x17AA, 0x3607, 5, "Second Generation ION" },
+ { 0x0A6F, 0x0000, 0x0000, 5, "Second Generation ION" },
+ { 0x0A76, 0x0000, 0x0000, 5, "Second Generation ION" },
+ { 0x0A78, 0x0000, 0x0000, 5, "Quadro FX 380 LP" },
+ { 0x0CA0, 0x0000, 0x0000, 5, "GeForce GT 330" },
+ { 0x0CA2, 0x0000, 0x0000, 5, "GeForce GT 320" },
+ { 0x0CA3, 0x0000, 0x0000, 5, "GeForce GT 240" },
+ { 0x0CA4, 0x0000, 0x0000, 5, "GeForce GT 340" },
+ { 0x0CA5, 0x0000, 0x0000, 5, "GeForce GT 220" },
+ { 0x0CA7, 0x0000, 0x0000, 5, "GeForce GT 330" },
+ { 0x0CAC, 0x0000, 0x0000, 5, "GeForce GT 220" },
+ { 0x05E0, 0x0000, 0x0000, 5, "GeForce GTX 295" },
+ { 0x05E1, 0x0000, 0x0000, 5, "GeForce GTX 280" },
+ { 0x05E2, 0x0000, 0x0000, 5, "GeForce GTX 260" },
+ { 0x05E3, 0x0000, 0x0000, 5, "GeForce GTX 285" },
+ { 0x05E6, 0x0000, 0x0000, 5, "GeForce GTX 275" },
+ { 0x05E7, 0x0000, 0x0000, 5, "Tesla C1060" },
+ { 0x05E7, 0x10DE, 0x0595, 5, "Tesla T10 Processor" },
+ { 0x05E7, 0x10DE, 0x068F, 5, "Tesla T10 Processor" },
+ { 0x05E7, 0x10DE, 0x0697, 5, "Tesla M1060" },
+ { 0x05E7, 0x10DE, 0x0714, 5, "Tesla M1060" },
+ { 0x05E7, 0x10DE, 0x0743, 5, "Tesla M1060" },
+ { 0x05EA, 0x0000, 0x0000, 5, "GeForce GTX 260" },
+ { 0x05EB, 0x0000, 0x0000, 5, "GeForce GTX 295" },
+ { 0x05ED, 0x0000, 0x0000, 5, "Quadroplex 2200 D2" },
+ { 0x05F8, 0x0000, 0x0000, 5, "Quadroplex 2200 S4" },
+ { 0x05F9, 0x0000, 0x0000, 5, "Quadro CX" },
+ { 0x05FD, 0x0000, 0x0000, 5, "Quadro FX 5800" },
+ { 0x05FE, 0x0000, 0x0000, 5, "Quadro FX 4800" },
+ { 0x05FF, 0x0000, 0x0000, 5, "Quadro FX 3800" },
+ { 0x0191, 0x0000, 0x0000, 5, "GeForce 8800 GTX" },
+ { 0x0193, 0x0000, 0x0000, 5, "GeForce 8800 GTS" },
+ { 0x0194, 0x0000, 0x0000, 5, "GeForce 8800 Ultra" },
+ { 0x0197, 0x0000, 0x0000, 5, "Tesla C870" },
+ { 0x019D, 0x0000, 0x0000, 5, "Quadro FX 5600" },
+ { 0x019E, 0x0000, 0x0000, 5, "Quadro FX 4600" },
+ { 0x0400, 0x0000, 0x0000, 5, "GeForce 8600 GTS" },
+ { 0x0401, 0x0000, 0x0000, 5, "GeForce 8600 GT" },
+ { 0x0402, 0x0000, 0x0000, 5, "GeForce 8600 GT" },
+ { 0x0403, 0x0000, 0x0000, 5, "GeForce 8600 GS" },
+ { 0x0404, 0x0000, 0x0000, 5, "GeForce 8400 GS" },
+ { 0x0405, 0x0000, 0x0000, 5, "GeForce 9500M GS" },
+ { 0x0406, 0x0000, 0x0000, 5, "GeForce 8300 GS" },
+ { 0x040B, 0x0000, 0x0000, 5, "Quadro NVS 320M" },
+ { 0x040C, 0x0000, 0x0000, 5, "Quadro FX 570M" },
+ { 0x040D, 0x0000, 0x0000, 5, "Quadro FX 1600M" },
+ { 0x040E, 0x0000, 0x0000, 5, "Quadro FX 570" },
+ { 0x040F, 0x0000, 0x0000, 5, "Quadro FX 1700" },
+ { 0x0410, 0x0000, 0x0000, 5, "GeForce GT 330" },
+ { 0x0420, 0x0000, 0x0000, 5, "GeForce 8400 SE" },
+ { 0x0421, 0x0000, 0x0000, 5, "GeForce 8500 GT" },
+ { 0x0422, 0x0000, 0x0000, 5, "GeForce 8400 GS" },
+ { 0x0423, 0x0000, 0x0000, 5, "GeForce 8300 GS" },
+ { 0x0424, 0x0000, 0x0000, 5, "GeForce 8400 GS" },
+ { 0x042C, 0x0000, 0x0000, 5, "GeForce 9400 GT" },
+ { 0x042D, 0x0000, 0x0000, 5, "Quadro FX 360M" },
+ { 0x042E, 0x0000, 0x0000, 5, "GeForce 9300M G" },
+ { 0x042F, 0x0000, 0x0000, 5, "Quadro NVS 290" },
+ { 0x0600, 0x0000, 0x0000, 5, "GeForce 8800 GTS 512" },
+ { 0x0601, 0x0000, 0x0000, 5, "GeForce 9800 GT" },
+ { 0x0602, 0x0000, 0x0000, 5, "GeForce 8800 GT" },
+ { 0x0603, 0x0000, 0x0000, 5, "GeForce GT 230" },
+ { 0x0605, 0x0000, 0x0000, 5, "GeForce 9800 GT" },
+ { 0x0606, 0x0000, 0x0000, 5, "GeForce 8800 GS" },
+ { 0x0607, 0x0000, 0x0000, 5, "GeForce GTS 240" },
+ { 0x0611, 0x0000, 0x0000, 5, "GeForce 8800 GT" },
+ { 0x0618, 0x0000, 0x0000, 5, "GeForce GTX 260M" },
+ { 0x0619, 0x0000, 0x0000, 5, "Quadro FX 4700 X2" },
+ { 0x061A, 0x0000, 0x0000, 5, "Quadro FX 3700" },
+ { 0x061B, 0x0000, 0x0000, 5, "Quadro VX 200" },
+ { 0x06E0, 0x0000, 0x0000, 5, "GeForce 9300 GE" },
+ { 0x06E1, 0x0000, 0x0000, 5, "GeForce 9300 GS" },
+ { 0x06E2, 0x0000, 0x0000, 5, "GeForce 8400" },
+ { 0x06E3, 0x0000, 0x0000, 5, "GeForce 8400 SE" },
+ { 0x06E4, 0x0000, 0x0000, 5, "GeForce 8400 GS" },
+ { 0x06E7, 0x0000, 0x0000, 5, "GeForce 9300 SE" },
+ { 0x06FF, 0x0000, 0x0000, 5, "HICx16 + Graphics" },
+ { 0x06FF, 0x10DE, 0x0711, 5, "HICx8 + Graphics" },
+ { 0x0844, 0x0000, 0x0000, 5, "GeForce 9100M G" },
+ { 0x0845, 0x0000, 0x0000, 5, "GeForce 8200M G" },
+ { 0x087E, 0x0000, 0x0000, 5, "ION LE" },
+ { 0x087F, 0x0000, 0x0000, 5, "ION LE" },
+ { 0x08A0, 0x0000, 0x0000, 5, "GeForce 320M" },
+ { 0x08A2, 0x0000, 0x0000, 5, "GeForce 320M" },
+ { 0x08A3, 0x0000, 0x0000, 5, "GeForce 320M" },
+ { 0x08A4, 0x0000, 0x0000, 5, "GeForce 320M" },
+ { 0x08A5, 0x0000, 0x0000, 5, "GeForce 320M" },
+ { 0x0A26, 0x0000, 0x0000, 5, "GeForce 405" },
+ { 0x0A27, 0x0000, 0x0000, 5, "GeForce 405" },
+ { 0x0A28, 0x0000, 0x0000, 5, "GeForce GT 230M" },
+ { 0x0A29, 0x0000, 0x0000, 5, "GeForce GT 330M" },
+ { 0x0A2A, 0x0000, 0x0000, 5, "GeForce GT 230M" },
+ { 0x0A2B, 0x0000, 0x0000, 5, "GeForce GT 330M" },
+ { 0x0A2C, 0x0000, 0x0000, 5, "NVS 5100M" },
+ { 0x0A2D, 0x0000, 0x0000, 5, "GeForce GT 320M" },
+ { 0x0A32, 0x0000, 0x0000, 5, "GeForce GT 415" },
+ { 0x0A34, 0x0000, 0x0000, 5, "GeForce GT 240M" },
+ { 0x0A35, 0x0000, 0x0000, 5, "GeForce GT 325M" },
+ { 0x0A3C, 0x0000, 0x0000, 5, "Quadro FX 880M" },
+ { 0x0A70, 0x0000, 0x0000, 5, "GeForce 310M" },
+ { 0x0A70, 0x17AA, 0x3605, 5, "Second Generation ION" },
+ { 0x0A70, 0x17AA, 0x3617, 5, "Second Generation ION" },
+ { 0x0A71, 0x0000, 0x0000, 5, "GeForce 305M" },
+ { 0x0A72, 0x0000, 0x0000, 5, "GeForce 310M" },
+ { 0x0A73, 0x0000, 0x0000, 5, "GeForce 305M" },
+ { 0x0A73, 0x17AA, 0x3607, 5, "Second Generation ION" },
+ { 0x0A73, 0x17AA, 0x3610, 5, "Second Generation ION" },
+ { 0x0A74, 0x0000, 0x0000, 5, "GeForce G210M" },
+ { 0x0A74, 0x17AA, 0x903A, 5, "GeForce G210" },
+ { 0x0A75, 0x0000, 0x0000, 5, "GeForce 310M" },
+ { 0x0A75, 0x17AA, 0x3605, 5, "Second Generation ION" },
+ { 0x0A7A, 0x0000, 0x0000, 5, "GeForce 315M" },
+ { 0x0A7A, 0x1BFD, 0x0003, 5, "GeForce 405" },
+ { 0x0A7A, 0x17AA, 0x3950, 5, "GeForce 405M" },
+ { 0x0A7A, 0x17AA, 0x397D, 5, "GeForce 405M" },
+ { 0x0A7A, 0x1642, 0x3980, 5, "GeForce 405" },
+ { 0x0A7A, 0x1BFD, 0x8006, 5, "GeForce 405" },
+ { 0x0A7A, 0x1B0A, 0x90B4, 5, "GeForce 405" },
+ { 0x0A7A, 0x1462, 0xAA51, 5, "GeForce 405" },
+ { 0x0A7A, 0x1462, 0xAA58, 5, "GeForce 405" },
+ { 0x0A7A, 0x1462, 0xAC71, 5, "GeForce 405" },
+ { 0x0A7A, 0x1462, 0xAC82, 5, "GeForce 405" },
+ { 0x0A7C, 0x0000, 0x0000, 5, "Quadro FX 380M" },
+ { 0x0CA8, 0x0000, 0x0000, 5, "GeForce GTS 260M" },
+ { 0x0CA9, 0x0000, 0x0000, 5, "GeForce GTS 250M" },
+ { 0x0CAF, 0x0000, 0x0000, 5, "GeForce GT 335M" },
+ { 0x0CB0, 0x0000, 0x0000, 5, "GeForce GTS 350M" },
+ { 0x0CB1, 0x0000, 0x0000, 5, "GeForce GTS 360M" },
+ { 0x0CBC, 0x0000, 0x0000, 5, "Quadro FX 1800M" },
+ { 0x0407, 0x0000, 0x0000, 5, "GeForce 8600M GT" },
+ { 0x0408, 0x0000, 0x0000, 5, "GeForce 9650M GS" },
+ { 0x0409, 0x0000, 0x0000, 5, "GeForce 8700M GT" },
+ { 0x040A, 0x0000, 0x0000, 5, "Quadro FX 370" },
+ { 0x0425, 0x0000, 0x0000, 5, "GeForce 8600M GS" },
+ { 0x0426, 0x0000, 0x0000, 5, "GeForce 8400M GT" },
+ { 0x0427, 0x0000, 0x0000, 5, "GeForce 8400M GS" },
+ { 0x0428, 0x0000, 0x0000, 5, "GeForce 8400M G" },
+ { 0x0429, 0x0000, 0x0000, 5, "Quadro NVS 140M" },
+ { 0x042A, 0x0000, 0x0000, 5, "Quadro NVS 130M" },
+ { 0x042B, 0x0000, 0x0000, 5, "Quadro NVS 135M" },
+ { 0x0604, 0x0000, 0x0000, 5, "GeForce 9800 GX2" },
+ { 0x0608, 0x0000, 0x0000, 5, "GeForce 9800M GTX" },
+ { 0x0609, 0x0000, 0x0000, 5, "GeForce 8800M GTS" },
+ { 0x0609, 0x106B, 0x00A7, 5, "GeForce 8800 GS" },
+ { 0x060A, 0x0000, 0x0000, 5, "GeForce GTX 280M" },
+ { 0x060B, 0x0000, 0x0000, 5, "GeForce 9800M GT" },
+ { 0x060C, 0x0000, 0x0000, 5, "GeForce 8800M GTX" },
+ { 0x060D, 0x0000, 0x0000, 5, "GeForce 8800 GS" },
+ { 0x060F, 0x0000, 0x0000, 5, "GeForce GTX 285M" },
+ { 0x0610, 0x0000, 0x0000, 5, "GeForce 9600 GSO" },
+ { 0x0612, 0x0000, 0x0000, 5, "GeForce 9800 GTX/9800 GTX+" },
+ { 0x0613, 0x0000, 0x0000, 5, "GeForce 9800 GTX+" },
+ { 0x0614, 0x0000, 0x0000, 5, "GeForce 9800 GT" },
+ { 0x0615, 0x0000, 0x0000, 5, "GeForce GTS 250" },
+ { 0x0617, 0x0000, 0x0000, 5, "GeForce 9800M GTX" },
+ { 0x061C, 0x0000, 0x0000, 5, "Quadro FX 3600M" },
+ { 0x061D, 0x0000, 0x0000, 5, "Quadro FX 2800M" },
+ { 0x061E, 0x0000, 0x0000, 5, "Quadro FX 3700M" },
+ { 0x061F, 0x0000, 0x0000, 5, "Quadro FX 3800M" },
+ { 0x0621, 0x0000, 0x0000, 5, "GeForce GT 230" },
+ { 0x0622, 0x0000, 0x0000, 5, "GeForce 9600 GT" },
+ { 0x0623, 0x0000, 0x0000, 5, "GeForce 9600 GS" },
+ { 0x0625, 0x0000, 0x0000, 5, "GeForce 9600 GSO 512" },
+ { 0x0626, 0x0000, 0x0000, 5, "GeForce GT 130" },
+ { 0x0627, 0x0000, 0x0000, 5, "GeForce GT 140" },
+ { 0x0628, 0x0000, 0x0000, 5, "GeForce 9800M GTS" },
+ { 0x062A, 0x0000, 0x0000, 5, "GeForce 9700M GTS" },
+ { 0x062B, 0x0000, 0x0000, 5, "GeForce 9800M GS" },
+ { 0x062C, 0x0000, 0x0000, 5, "GeForce 9800M GTS" },
+ { 0x062D, 0x0000, 0x0000, 5, "GeForce 9600 GT" },
+ { 0x062E, 0x0000, 0x0000, 5, "GeForce 9600 GT" },
+ { 0x062E, 0x106B, 0x0605, 5, "GeForce GT 130" },
+ { 0x0630, 0x0000, 0x0000, 5, "GeForce 9700 S" },
+ { 0x0631, 0x0000, 0x0000, 5, "GeForce GTS 160M" },
+ { 0x0632, 0x0000, 0x0000, 5, "GeForce GTS 150M" },
+ { 0x0635, 0x0000, 0x0000, 5, "GeForce 9600 GSO" },
+ { 0x0637, 0x0000, 0x0000, 5, "GeForce 9600 GT" },
+ { 0x0638, 0x0000, 0x0000, 5, "Quadro FX 1800" },
+ { 0x063A, 0x0000, 0x0000, 5, "Quadro FX 2700M" },
+ { 0x0640, 0x0000, 0x0000, 5, "GeForce 9500 GT" },
+ { 0x0641, 0x0000, 0x0000, 5, "GeForce 9400 GT" },
+ { 0x0643, 0x0000, 0x0000, 5, "GeForce 9500 GT" },
+ { 0x0644, 0x0000, 0x0000, 5, "GeForce 9500 GS" },
+ { 0x0645, 0x0000, 0x0000, 5, "GeForce 9500 GS" },
+ { 0x0646, 0x0000, 0x0000, 5, "GeForce GT 120" },
+ { 0x0647, 0x0000, 0x0000, 5, "GeForce 9600M GT" },
+ { 0x0648, 0x0000, 0x0000, 5, "GeForce 9600M GS" },
+ { 0x0649, 0x0000, 0x0000, 5, "GeForce 9600M GT" },
+ { 0x0649, 0x1043, 0x202D, 5, "GeForce GT 220M" },
+ { 0x064A, 0x0000, 0x0000, 5, "GeForce 9700M GT" },
+ { 0x064B, 0x0000, 0x0000, 5, "GeForce 9500M G" },
+ { 0x064C, 0x0000, 0x0000, 5, "GeForce 9650M GT" },
+ { 0x0651, 0x0000, 0x0000, 5, "GeForce G 110M" },
+ { 0x0652, 0x0000, 0x0000, 5, "GeForce GT 130M" },
+ { 0x0652, 0x152D, 0x0850, 5, "GeForce GT 240M LE" },
+ { 0x0653, 0x0000, 0x0000, 5, "GeForce GT 120M" },
+ { 0x0654, 0x0000, 0x0000, 5, "GeForce GT 220M" },
+ { 0x0654, 0x1043, 0x14A2, 5, "GeForce GT 320M" },
+ { 0x0654, 0x1043, 0x14D2, 5, "GeForce GT 320M" },
+ { 0x0655, 0x106B, 0x0633, 5, "GeForce GT 120" },
+ { 0x0656, 0x106B, 0x0693, 5, "GeForce GT 120" },
+ { 0x0658, 0x0000, 0x0000, 5, "Quadro FX 380" },
+ { 0x0659, 0x0000, 0x0000, 5, "Quadro FX 580" },
+ { 0x065A, 0x0000, 0x0000, 5, "Quadro FX 1700M" },
+ { 0x065B, 0x0000, 0x0000, 5, "GeForce 9400 GT" },
+ { 0x065C, 0x0000, 0x0000, 5, "Quadro FX 770M" },
+ { 0x06E5, 0x0000, 0x0000, 5, "GeForce 9300M GS" },
+ { 0x06E6, 0x0000, 0x0000, 5, "GeForce G100" },
+ { 0x06EC, 0x0000, 0x0000, 5, "GeForce G 105M" },
+ { 0x06EF, 0x0000, 0x0000, 5, "GeForce G 103M" },
+ { 0x06F1, 0x0000, 0x0000, 5, "GeForce G105M" },
+ { 0x06EB, 0x0000, 0x0000, 5, "Quadro NVS 160M" },
+ { 0x06EA, 0x0000, 0x0000, 5, "Quadro NVS 150M" },
+ { 0x06E9, 0x0000, 0x0000, 5, "GeForce 9300M GS" },
+ { 0x06E8, 0x0000, 0x0000, 5, "GeForce 9200M GS" },
+ { 0x06E8, 0x103C, 0x360B, 5, "GeForce 9200M GE" },
+ { 0x06F8, 0x0000, 0x0000, 5, "Quadro NVS 420" },
+ { 0x06F9, 0x0000, 0x0000, 5, "Quadro FX 370 LP" },
+ { 0x06F9, 0x10DE, 0x060D, 5, "Quadro FX 370 Low Profile" },
+ { 0x06FA, 0x0000, 0x0000, 5, "Quadro NVS 450" },
+ { 0x06FB, 0x0000, 0x0000, 5, "Quadro FX 370M" },
+ { 0x06FD, 0x0000, 0x0000, 5, "Quadro NVS 295" },
+ { 0x10C0, 0x0000, 0x0000, 5, "GeForce 9300 GS" },
+ { 0x10C3, 0x0000, 0x0000, 5, "GeForce 8400GS" },
+ { 0x10C5, 0x0000, 0x0000, 5, "GeForce 405" },
+ { 0x10D8, 0x0000, 0x0000, 5, "NVS 300" }
};
#endif /* __NV_LEGACY_H */
diff --git a/utils.mk b/utils.mk
index 88598d2..9c50176 100644
--- a/utils.mk
+++ b/utils.mk
@@ -1,17 +1,23 @@
#
# Copyright (C) 2008 NVIDIA Corporation
#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms and conditions of the GNU General Public License,
-# version 2, as published by the Free Software Foundation.
+# 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:
#
-# 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.
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses>.
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS 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.
#
#
# utils.mk: common Makefile fragment used by nvidia-xconfig,
diff --git a/version.mk b/version.mk
index d622b1f..714e597 100644
--- a/version.mk
+++ b/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 346.47
+NVIDIA_VERSION = 349.12