<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.26.0">
</HEAD>
<BODY>
Hi,<BR>
<BR>
A while ago I looked through the pci ids and found that a few were missing in the <TT><FONT COLOR="#1a1a1a">NVKnownChipsets</FONT></TT><TT> array. It did not cause a problem because the case statement would recognize it. I see a case statement being deleted, so it would be safer to check that the following ids are recognized, otherwise some cards will be dropped from support.</TT><BR>
<BR>
<TT>The comment I made beside refers to the id, for example, 0190, not 0191 or 0192, and so on.</TT><BR>
<TT>NVIsG80(int chipType)</TT><BR>
<TT>{ switch(chipType & 0xfff0) {</TT><BR>
<TT> case 0x0190:        "GeForce 8800 GTS"</TT><BR>
<TT> case 0x05e0:        "GeForce GTX 295"        </TT><BR>
<TT> return TRUE;</TT><BR>
<TT> } return FALSE;</TT><BR>
<TT>}</TT><BR>
<BR>
<TT>NVIsSupported(CARD32 id)</TT><BR>
<TT>{ /* look for a compatible devices which may be newer than</TT><BR>
<TT> the NVKnownChipsets list above. */</TT><BR>
<TT> switch(id & 0xfff0) {</TT><BR>
<TT> case 0x0390:        "GeForce 7650 GS"</TT><BR>
<TT> case 0x03D0:        "Geforce 6150 SE / nForce 430"        -- C61 integrated graphics. </TT><BR>
<TT> return TRUE;</TT><BR>
<TT> }</TT><BR>
<TT> return FALSE;</TT><BR>
<TT>}</TT><BR>
<BR>
These case statements are trying to look forward in time, making assumptions about future ids assignment. <BR>
<BR>
HSI bridge<BR>
-------------<BR>
<BR>
During the transition between AGP to PCI, cards were released with a bridge to allow an AGP chispet to work on a PCI bridge and vice-versa. The reported id on the bus is the one from the bridge, not the one from the chipset. The nv driver made a call to find the id of the chipset. At first, there was a one to one mapping between the bridge id and chip id. Later, different chips were released behind the same bridge id. A bridge id may map to multiple chip id, some we support, others we don't.<BR>
<BR>
This makes it difficult to produce a static list of supported ids as we don't know what is behind the bridge. I was wondering if the existing behaviour for ids 00f0->00ff and 02e0->02e4 was preserved or changed by the generated list.<BR>
<BR>
Blank lines in the new list<BR>
----------------------------------<BR>
<BR>
<TT><FONT COLOR="#1a1a1a">+"10DE","0049",,</FONT></TT> This is the first blank line in the list. I think it comes from the case statements for all those ids it deems unassigned but supportable. However, some of the blank lines have been filled with newly released cards recently. Here are those ids for which we now have a name for:<BR>
<BR>
0197 Tesla C870 I doubt nv supports this card<BR>
05E6 GeForce GTX 275<BR>
05E7 Tesla C1060<BR>
05ED Quadro Plex 2200 D2<BR>
0618 GeForce GTX 260M<BR>
0619 Quadro FX 4700 X2<BR>
061B Quadro FX 2700 / VX 200<BR>
0631 GeForce GTS 160M<BR>
0632 GeForce GTS 150M<BR>
0644 GeForce 9500 GS<BR>
0645 GeForce 9500 GS<BR>
0651 GeForce G 110M<BR>
0652 GeForce GT 130M<BR>
0653 GeForce GT 120M<BR>
065A Quadro FX 1700M<BR>
065B GeForce 9400 GT<BR>
06E2 GeForce 8400<BR>
06E3 GeForce 8300 GS<BR>
06EC GeForce G 105M<BR>
06EF GeForce G 103M<BR>
06FB Quadro FX 370M<BR>
0A20 GeForce GT 220<BR>
0A60 GeForce G210<BR>
0A65 GeForce G210<BR>
<BR>
<BR>
Duplicate lines for the same id<BR>
---------------------------------------<BR>
<BR>
<TT><FONT COLOR="#1a1a1a">+"10DE","0194",," GeForce 8800 Ultra"</FONT></TT><BR>
<TT><FONT COLOR="#1a1a1a">+"10DE","0194",,</FONT></TT><BR>
<BR>
<TT><FONT COLOR="#1a1a1a">+"10DE","019D",," Quadro FX 5600"</FONT></TT><BR>
<TT><FONT COLOR="#1a1a1a">+"10DE","019D",,</FONT></TT><BR>
<BR>
<TT><FONT COLOR="#1a1a1a">+"10DE","019E",,</FONT></TT><BR>
<TT><FONT COLOR="#1a1a1a">+"10DE","019E",," Quadro FX 4600"</FONT></TT><BR>
<BR>
<BR>
<BR>
<BR>
<BR>
On Sat, 2009-09-12 at 09:37 -0500, Mario Limonciello wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
This prevents the X server from "claiming" a slot but not
freeing it up since the driver used to abort on the probe routine.
To achieve this a few things had to be done:
        1) Move the list of devices into a parsable CSV file.
        2) Add a parsing perl script for generating the two static
         arrays that contain all the device lists. This came from
         initially xf86-video-ati with some modifications.
        3) Disable any code in the probe routine that was "ignoring"
         devices.
---
src/nv_driver.c | 452 +-------------------------
src/pcidb/nv_list.csv | 638 +++++++++++++++++++++++++++++++++++++
src/pcidb/parse_pci_ids.pl | 82 +++++
3 files changed, 729 insertions(+), 443 deletions(-)
create mode 100644 src/nvidia_chipset_gen.h
create mode 100644 src/nvidia_pci_device_match_gen.h
create mode 100644 src/pcidb/nv_list.csv
create mode 100755 src/pcidb/parse_pci_ids.pl
diff --git a/src/nv_driver.c b/src/nv_driver.c
index a7cf2dc..1dd1b3e 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -32,6 +32,9 @@
#include "xf86int10.h"
#include "vbeModes.h"
+#include "nvidia_chipset_gen.h"
+#include "nvidia_pci_device_match_gen.h"
+
const OptionInfoRec * RivaAvailableOptions(int chipid, int busid);
Bool RivaGetScrnInfoRec(PciChipsets *chips, int chip);
Bool G80GetScrnInfoRec(PciChipsets *chips, int chip);
@@ -76,27 +79,6 @@ static void        NVRestore(ScrnInfoPtr pScrn);
static Bool        NVModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode);
static Bool        NVSetModeVBE(ScrnInfoPtr pScrn, DisplayModePtr pMode);
-#if XSERVER_LIBPCIACCESS
-/* For now, just match any NVIDIA display device and sort through them in the
- * probe routine */
-
-/*
- * libpciaccess's masks are shifted by 8 bits compared to the ones in xf86Pci.h.
- */
-#define LIBPCIACCESS_CLASS_SHIFT (PCI_CLASS_SHIFT - 8)
-#define LIBPCIACCESS_CLASS_MASK (PCI_CLASS_MASK >> 8)
-
-static const struct pci_id_match NVPciIdMatchList[] = {
- { PCI_VENDOR_NVIDIA, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY,
- PCI_CLASS_DISPLAY << LIBPCIACCESS_CLASS_SHIFT, LIBPCIACCESS_CLASS_MASK, 0 },
-
- { PCI_VENDOR_NVIDIA_SGS, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY,
- PCI_CLASS_DISPLAY << LIBPCIACCESS_CLASS_SHIFT, LIBPCIACCESS_CLASS_MASK, 0 },
-
- { 0, 0, 0 }
-};
-#endif
-
/*
* This contains the functions needed by the server after loading the
* driver module. It must be supplied, and gets added the driver list by
@@ -124,369 +106,6 @@ _X_EXPORT DriverRec NV = {
#endif
};
-/* Known cards as of 2009/05/15 */
-
-static SymTabRec NVKnownChipsets[] =
-{
- { 0x12D20018, "RIVA 128" },
-
- { 0x10DE0020, "RIVA TNT" },
-
- { 0x10DE0028, "RIVA TNT2" },
- { 0x10DE002A, "Unknown TNT2" },
- { 0x10DE002C, "Vanta" },
- { 0x10DE0029, "RIVA TNT2 Ultra" },
- { 0x10DE002D, "RIVA TNT2 Model 64" },
-
- { 0x10DE00A0, "Aladdin TNT2" },
-
- { 0x10DE0100, "GeForce 256" },
- { 0x10DE0101, "GeForce DDR" },
- { 0x10DE0103, "Quadro" },
-
- { 0x10DE0110, "GeForce2 MX/MX 400" },
- { 0x10DE0111, "GeForce2 MX 100/200" },
- { 0x10DE0112, "GeForce2 Go" },
- { 0x10DE0113, "Quadro2 MXR/EX/Go" },
-
- { 0x10DE01A0, "GeForce2 Integrated GPU" },
-
- { 0x10DE0150, "GeForce2 GTS" },
- { 0x10DE0151, "GeForce2 Ti" },
- { 0x10DE0152, "GeForce2 Ultra" },
- { 0x10DE0153, "Quadro2 Pro" },
-
- { 0x10DE0170, "GeForce4 MX 460" },
- { 0x10DE0171, "GeForce4 MX 440" },
- { 0x10DE0172, "GeForce4 MX 420" },
- { 0x10DE0173, "GeForce4 MX 440-SE" },
- { 0x10DE0174, "GeForce4 440 Go" },
- { 0x10DE0175, "GeForce4 420 Go" },
- { 0x10DE0176, "GeForce4 420 Go 32M" },
- { 0x10DE0177, "GeForce4 460 Go" },
- { 0x10DE0178, "Quadro4 550 XGL" },
-#if defined(__powerpc__)
- { 0x10DE0179, "GeForce4 MX (Mac)" },
-#else
- { 0x10DE0179, "GeForce4 440 Go 64M" },
-#endif
- { 0x10DE017A, "Quadro NVS" },
- { 0x10DE017C, "Quadro4 500 GoGL" },
- { 0x10DE017D, "GeForce4 410 Go 16M" },
-
- { 0x10DE0181, "GeForce4 MX 440 with AGP8X" },
- { 0x10DE0182, "GeForce4 MX 440SE with AGP8X" },
- { 0x10DE0183, "GeForce4 MX 420 with AGP8X" },
- { 0x10DE0185, "GeForce4 MX 4000" },
- { 0x10DE0186, "GeForce4 448 Go" },
- { 0x10DE0187, "GeForce4 488 Go" },
- { 0x10DE0188, "Quadro4 580 XGL" },
-#if defined(__powerpc__)
- { 0x10DE0189, "GeForce4 MX with AGP8X (Mac)" },
-#endif
- { 0x10DE018A, "Quadro4 NVS 280 SD" },
- { 0x10DE018B, "Quadro4 380 XGL" },
- { 0x10DE018C, "Quadro NVS 50 PCI" },
- { 0x10DE018D, "GeForce4 448 Go" },
-
- { 0x10DE01F0, "GeForce4 MX Integrated GPU" },
-
- { 0x10DE0200, "GeForce3" },
- { 0x10DE0201, "GeForce3 Ti 200" },
- { 0x10DE0202, "GeForce3 Ti 500" },
- { 0x10DE0203, "Quadro DCC" },
-
- { 0x10DE0250, "GeForce4 Ti 4600" },
- { 0x10DE0251, "GeForce4 Ti 4400" },
- { 0x10DE0253, "GeForce4 Ti 4200" },
- { 0x10DE0258, "Quadro4 900 XGL" },
- { 0x10DE0259, "Quadro4 750 XGL" },
- { 0x10DE025B, "Quadro4 700 XGL" },
-
- { 0x10DE0280, "GeForce4 Ti 4800" },
- { 0x10DE0281, "GeForce4 Ti 4200 with AGP8X" },
- { 0x10DE0282, "GeForce4 Ti 4800 SE" },
- { 0x10DE0286, "GeForce4 4200 Go" },
- { 0x10DE028C, "Quadro4 700 GoGL" },
- { 0x10DE0288, "Quadro4 980 XGL" },
- { 0x10DE0289, "Quadro4 780 XGL" },
-
- { 0x10DE0301, "GeForce FX 5800 Ultra" },
- { 0x10DE0302, "GeForce FX 5800" },
- { 0x10DE0308, "Quadro FX 2000" },
- { 0x10DE0309, "Quadro FX 1000" },
-
- { 0x10DE0311, "GeForce FX 5600 Ultra" },
- { 0x10DE0312, "GeForce FX 5600" },
- { 0x10DE0314, "GeForce FX 5600XT" },
- { 0x10DE031A, "GeForce FX Go5600" },
- { 0x10DE031B, "GeForce FX Go5650" },
- { 0x10DE031C, "Quadro FX Go700" },
-
- { 0x10DE0320, "GeForce FX 5200" },
- { 0x10DE0321, "GeForce FX 5200 Ultra" },
- { 0x10DE0322, "GeForce FX 5200" },
- { 0x10DE0323, "GeForce FX 5200LE" },
- { 0x10DE0324, "GeForce FX Go5200" },
- { 0x10DE0325, "GeForce FX Go5250" },
- { 0x10DE0326, "GeForce FX 5500" },
- { 0x10DE0327, "GeForce FX 5100" },
- { 0x10DE0328, "GeForce FX Go5200 32M/64M" },
-#if defined(__powerpc__)
- { 0x10DE0329, "GeForce FX 5200 (Mac)" },
-#endif
- { 0x10DE032A, "Quadro NVS 55/280 PCI" },
- { 0x10DE032B, "Quadro FX 500/600 PCI" },
- { 0x10DE032C, "GeForce FX Go53xx Series" },
- { 0x10DE032D, "GeForce FX Go5100" },
-
- { 0x10DE0330, "GeForce FX 5900 Ultra" },
- { 0x10DE0331, "GeForce FX 5900" },
- { 0x10DE0332, "GeForce FX 5900XT" },
- { 0x10DE0333, "GeForce FX 5950 Ultra" },
- { 0x10DE0334, "GeForce FX 5900ZT" },
- { 0x10DE0338, "Quadro FX 3000" },
- { 0x10DE033F, "Quadro FX 700" },
-
- { 0x10DE0341, "GeForce FX 5700 Ultra" },
- { 0x10DE0342, "GeForce FX 5700" },
- { 0x10DE0343, "GeForce FX 5700LE" },
- { 0x10DE0344, "GeForce FX 5700VE" },
- { 0x10DE0347, "GeForce FX Go5700" },
- { 0x10DE0348, "GeForce FX Go5700" },
- { 0x10DE034C, "Quadro FX Go1000" },
- { 0x10DE034E, "Quadro FX 1100" },
-
- { 0x10DE0040, "GeForce 6800 Ultra" },
- { 0x10DE0041, "GeForce 6800" },
- { 0x10DE0042, "GeForce 6800 LE" },
- { 0x10DE0043, "GeForce 6800 XE" },
- { 0x10DE0044, "GeForce 6800 XT" },
- { 0x10DE0045, "GeForce 6800 GT" },
- { 0x10DE0046, "GeForce 6800 GT" },
- { 0x10DE0047, "GeForce 6800 GS" },
- { 0x10DE0048, "GeForce 6800 XT" },
- { 0x10DE004E, "Quadro FX 4000" },
-
- { 0x10DE00C0, "GeForce 6800 GS" },
- { 0x10DE00C1, "GeForce 6800" },
- { 0x10DE00C2, "GeForce 6800 LE" },
- { 0x10DE00C3, "GeForce 6800 XT" },
- { 0x10DE00C8, "GeForce Go 6800" },
- { 0x10DE00C9, "GeForce Go 6800 Ultra" },
- { 0x10DE00CC, "Quadro FX Go1400" },
- { 0x10DE00CD, "Quadro FX 3450/4000 SDI" },
- { 0x10DE00CE, "Quadro FX 1400" },
-
- { 0x10DE0140, "GeForce 6600 GT" },
- { 0x10DE0141, "GeForce 6600" },
- { 0x10DE0142, "GeForce 6600 LE" },
- { 0x10DE0143, "GeForce 6600 VE" },
- { 0x10DE0144, "GeForce Go 6600" },
- { 0x10DE0145, "GeForce 6610 XL" },
- { 0x10DE0146, "GeForce Go 6600 TE/6200 TE" },
- { 0x10DE0147, "GeForce 6700 XL" },
- { 0x10DE0148, "GeForce Go 6600" },
- { 0x10DE0149, "GeForce Go 6600 GT" },
- { 0x10DE014A, "Quadro NVS 440" },
- { 0x10DE014C, "Quadro FX 550" },
- { 0x10DE014D, "Quadro FX 550" },
- { 0x10DE014E, "Quadro FX 540" },
- { 0x10DE014F, "GeForce 6200" },
-
- { 0x10DE0160, "GeForce 6500" },
- { 0x10DE0161, "GeForce 6200 TurboCache(TM)" },
- { 0x10DE0162, "GeForce 6200SE TurboCache(TM)" },
- { 0x10DE0163, "GeForce 6200 LE" },
- { 0x10DE0164, "GeForce Go 6200" },
- { 0x10DE0165, "Quadro NVS 285" },
- { 0x10DE0166, "GeForce Go 6400" },
- { 0x10DE0167, "GeForce Go 6200" },
- { 0x10DE0168, "GeForce Go 6400" },
- { 0x10DE0169, "GeForce 6250" },
- { 0x10DE016A, "GeForce 7100 GS" },
-
- { 0x10DE0211, "GeForce 6800" },
- { 0x10DE0212, "GeForce 6800 LE" },
- { 0x10DE0215, "GeForce 6800 GT" },
- { 0x10DE0218, "GeForce 6800 XT" },
-
- { 0x10DE0221, "GeForce 6200" },
- { 0x10DE0222, "GeForce 6200 A-LE" },
-
- { 0x10DE0090, "GeForce 7800 GTX" },
- { 0x10DE0091, "GeForce 7800 GTX" },
- { 0x10DE0092, "GeForce 7800 GT" },
- { 0x10DE0093, "GeForce 7800 GS" },
- { 0x10DE0095, "GeForce 7800 SLI" },
- { 0x10DE0098, "GeForce Go 7800" },
- { 0x10DE0099, "GeForce Go 7800 GTX" },
- { 0x10DE009D, "Quadro FX 4500" },
-
- { 0x10DE01D0, "GeForce 7350 LE" },
- { 0x10DE01D1, "GeForce 7300 LE" },
- { 0x10DE01D3, "GeForce 7300 SE" },
- { 0x10DE01D6, "GeForce Go 7200" },
- { 0x10DE01D7, "GeForce Go 7300" },
- { 0x10DE01D8, "GeForce Go 7400" },
- { 0x10DE01D9, "GeForce Go 7400 GS" },
- { 0x10DE01DA, "Quadro NVS 110M" },
- { 0x10DE01DB, "Quadro NVS 120M" },
- { 0x10DE01DC, "Quadro FX 350M" },
- { 0x10DE01DD, "GeForce 7500 LE" },
- { 0x10DE01DE, "Quadro FX 350" },
- { 0x10DE01DF, "GeForce 7300 GS" },
-
- { 0x10DE0390, "GeForce 7650 GS" },
- { 0x10DE0391, "GeForce 7600 GT" },
- { 0x10DE0392, "GeForce 7600 GS" },
- { 0x10DE0393, "GeForce 7300 GT" },
- { 0x10DE0394, "GeForce 7600 LE" },
- { 0x10DE0395, "GeForce 7300 GT" },
- { 0x10DE0397, "GeForce Go 7700" },
- { 0x10DE0398, "GeForce Go 7600" },
- { 0x10DE0399, "GeForce Go 7600 GT"},
- { 0x10DE039A, "Quadro NVS 300M" },
- { 0x10DE039B, "GeForce Go 7900 SE" },
- { 0x10DE039C, "Quadro FX 550M" },
- { 0x10DE039E, "Quadro FX 560" },
-
- { 0x10DE0290, "GeForce 7900 GTX" },
- { 0x10DE0291, "GeForce 7900 GT" },
- { 0x10DE0292, "GeForce 7900 GS" },
- { 0x10DE0293, "GeForce 7950 GX2" },
- { 0x10DE0294, "GeForce 7950 GX2" },
- { 0x10DE0295, "GeForce 7950 GT"},
- { 0x10DE0297, "GeForce Go 7950 GTX" },
- { 0x10DE0298, "GeForce Go 7900 GS" },
- { 0x10DE0299, "GeForce Go 7900 GTX" },
- { 0x10DE029A, "Quadro FX 2500M" },
- { 0x10DE029B, "Quadro FX 1500M" },
- { 0x10DE029C, "Quadro FX 5500" },
- { 0x10DE029D, "Quadro FX 3500" },
- { 0x10DE029E, "Quadro FX 1500" },
- { 0x10DE029F, "Quadro FX 4500 X2" },
-
- { 0x10DE0240, "GeForce 6150" },
- { 0x10DE0241, "GeForce 6150 LE" },
- { 0x10DE0242, "GeForce 6100" },
- { 0x10DE0244, "GeForce Go 6150" },
- { 0x10DE0245, "Quadro NVS 210S / NVIDIA GeForce 6150LE" },
- { 0x10DE0247, "GeForce Go 6100" },
-
- { 0x10DE03D0, "GeForce 6150SE" },
- { 0x10DE03D1, "GeForce 6100 nForce 405" },
- { 0x10DE03D2, "GeForce 6100 nForce 400" },
- { 0x10DE03D5, "GeForce 6100 nForce 420" },
-
-/*************** G8x ***************/
- { 0x10DE0191, "GeForce 8800 GTX" },
- { 0x10DE0193, "GeForce 8800 GTS" },
- { 0x10DE0194, "GeForce 8800 Ultra" },
- { 0x10DE019D, "Quadro FX 5600" },
- { 0x10DE019E, "Quadro FX 4600" },
- { 0x10DE0400, "GeForce 8600 GTS" },
- { 0x10DE0401, "GeForce 8600 GT" },
- { 0x10DE0402, "GeForce 8600 GT" },
- { 0x10DE0403, "GeForce 8600 GS" },
- { 0x10DE0404, "GeForce 8400 GS" },
- { 0x10DE0405, "GeForce 9500M GS" },
- { 0x10DE0407, "GeForce 8600M GT" },
- { 0x10DE0408, "GeForce 9650M GS" },
- { 0x10DE0409, "GeForce 8700M GT" },
- { 0x10DE040A, "Quadro FX 370" },
- { 0x10DE040B, "Quadro NVS 320M" },
- { 0x10DE040C, "Quadro FX 570M" },
- { 0x10DE040D, "Quadro FX 1600M" },
- { 0x10DE040E, "Quadro FX 570" },
- { 0x10DE040F, "Quadro FX 1700" },
- { 0x10DE0420, "GeForce 8400 SE" },
- { 0x10DE0421, "GeForce 8500 GT" },
- { 0x10DE0422, "GeForce 8400 GS" },
- { 0x10DE0423, "GeForce 8300 GS" },
- { 0x10DE0424, "GeForce 8400 GS" },
- { 0x10DE0425, "GeForce 8600M GS" },
- { 0x10DE0426, "GeForce 8400M GT" },
- { 0x10DE0427, "GeForce 8400M GS" },
- { 0x10DE0428, "GeForce 8400M G" },
- { 0x10DE0429, "Quadro NVS 140M" },
- { 0x10DE042A, "Quadro NVS 130M" },
- { 0x10DE042B, "Quadro NVS 135M" },
- { 0x10DE042C, "GeForce 9400 GT" },
- { 0x10DE042D, "Quadro FX 360M" },
- { 0x10DE042E, "GeForce 9300M G" },
- { 0x10DE042F, "Quadro NVS 290" },
- { 0x10DE05E0, "GeForce GTX 295" },
- { 0x10DE05E1, "GeForce GTX 280" },
- { 0x10DE05E2, "GeForce GTX 260" },
- { 0x10DE05E3, "GeForce GTX 285" },
- { 0x10DE05F9, "Quadro CX" },
- { 0x10DE05FD, "Quadro FX 5800" },
- { 0x10DE05FE, "Quadro FX 4800" },
- { 0x10DE05FF, "Quadro FX 3800" },
- { 0x10DE0600, "GeForce 8800 GTS 512" },
- { 0x10DE0601, "GeForce 9800 GT" },
- { 0x10DE0602, "GeForce 8800 GT" },
- { 0x10DE0604, "GeForce 9800 GX2" },
- { 0x10DE0605, "GeForce 9800 GT" },
- { 0x10DE0606, "GeForce 8800 GS" },
- { 0x10DE0608, "GeForce 9800M GTX" },
- { 0x10DE0609, "GeForce 8800M GTS" },
- { 0x10DE060B, "GeForce 9800M GT" },
- { 0x10DE060C, "GeForce 8800M GTX" },
- { 0x10DE060D, "GeForce 8800 GS" },
- { 0x10DE0610, "GeForce 9600 GSO" },
- { 0x10DE0611, "GeForce 8800 GT" },
- { 0x10DE0612, "GeForce 9800 GTX" },
- { 0x10DE0613, "GeForce 9800 GTX+" },
- { 0x10DE0614, "GeForce 9800 GT" },
- { 0x10DE0615, "GeForce GTS 250" },
- { 0x10DE0617, "GeForce 9800M GTX" },
- { 0x10DE061A, "Quadro FX 3700" },
- { 0x10DE061C, "Quadro FX 3600M" },
- { 0x10DE061E, "Quadro FX 3700M" },
- { 0x10DE0622, "GeForce 9600 GT" },
- { 0x10DE0623, "GeForce 9600 GS" },
- { 0x10DE0625, "GeForce 9600 GSO 512" },
- { 0x10DE0626, "GeForce GT 130" },
- { 0x10DE0627, "GeForce GT 140" },
- { 0x10DE0628, "GeForce 9800M GTS" },
- { 0x10DE062A, "GeForce 9700M GTS" },
- { 0x10DE062B, "GeForce 9800M GS" },
- { 0x10DE062C, "GeForce 9800M GTS" },
- { 0x10DE0638, "Quadro FX 1800" },
- { 0x10DE063A, "Quadro FX 2700M" },
- { 0x10DE0640, "GeForce 9500 GT" },
- { 0x10DE0641, "GeForce 9400 GT" },
- { 0x10DE0643, "GeForce 9500 GT" },
- { 0x10DE0646, "GeForce GT 120" },
- { 0x10DE0647, "GeForce 9600M GT" },
- { 0x10DE0648, "GeForce 9600M GS" },
- { 0x10DE0649, "GeForce 9600M GT" },
- { 0x10DE064A, "GeForce 9700M GT" },
- { 0x10DE064B, "GeForce 9500M G" },
- { 0x10DE064C, "GeForce 9650M GT" },
- { 0x10DE0656, "GeForce 9500 GT" },
- { 0x10DE0658, "Quadro FX 380" },
- { 0x10DE0659, "Quadro FX 580" },
- { 0x10DE065C, "Quadro FX 770M" },
- { 0x10DE06E0, "GeForce 9300 GE" },
- { 0x10DE06E1, "GeForce 9300 GS" },
- { 0x10DE06E4, "GeForce 8400 GS" },
- { 0x10DE06E5, "GeForce 9300M GS" },
- { 0x10DE06E6, "GeForce G100" },
- { 0x10DE06E8, "GeForce 9200M GS" },
- { 0x10DE06E9, "GeForce 9300M GS" },
- { 0x10DE06EA, "Quadro NVS 150M" },
- { 0x10DE06EB, "Quadro NVS 160M" },
- { 0x10DE06F8, "Quadro NVS 420" },
- { 0x10DE06F9, "Quadro FX 370 LP" },
- { 0x10DE06FA, "Quadro NVS 450" },
- { 0x10DE06FD, "Quadro NVS 295" },
-
- {-1, NULL}
-};
-
#ifdef XFree86LOADER
static MODULESETUPPROTO(nvSetup);
@@ -736,40 +355,6 @@ NVIsG80(int chipType)
return FALSE;
}
-static Bool
-NVIsSupported(CARD32 id)
-{
- /* look for a compatible devices which may be newer than
- the NVKnownChipsets list above. */
- switch(id & 0xfff0) {
- case 0x0040:
- case 0x0090:
- case 0x00C0:
- case 0x0120:
- case 0x0140:
- case 0x0160:
- case 0x0170:
- case 0x0180:
- case 0x01D0:
- case 0x0210:
- case 0x0220:
- case 0x0240:
- case 0x0250:
- case 0x0280:
- case 0x0290:
- case 0x0300:
- case 0x0310:
- case 0x0320:
- case 0x0330:
- case 0x0340:
- case 0x0390:
- case 0x03D0:
- return TRUE;
- }
-
- return FALSE;
-}
-
/* Mandatory */
#if XSERVER_LIBPCIACCESS
static Bool
@@ -780,21 +365,6 @@ NVPciProbe(DriverPtr drv, int entity, struct pci_device *dev, intptr_t data)
NVGetPCIXpressChip(dev) : dev->vendor_id << 16 | dev->device_id;
const char *name = xf86TokenToString(NVKnownChipsets, id);
- if(dev->vendor_id == PCI_VENDOR_NVIDIA && !name &&
- !NVIsSupported(id) && !NVIsG80(id)) {
- /* See if pci.ids knows what the heck this thing is */
- name = pci_device_get_device_name(dev);
- if(name)
- xf86DrvMsg(0, X_WARNING,
- NV_NAME ": Ignoring unsupported device 0x%x (%s) at %2.2x@%2.2x:%2.2x:%1.1x\n",
- id, name, dev->bus, dev->domain, dev->dev, dev->func);
- else
- xf86DrvMsg(0, X_WARNING,
- NV_NAME ": Ignoring unsupported device 0x%x at %2.2x@%2.2x:%2.2x:%1.1x\n",
- id, dev->bus, dev->domain, dev->dev, dev->func);
- return FALSE;
- }
-
if(!name)
name = pci_device_get_device_name(dev);
if(!name)
@@ -855,16 +425,12 @@ NVProbe(DriverPtr drv, int flags)
nvchips++;
}
- if(nvchips->name ||
- ((*ppPci)->vendor == PCI_VENDOR_NVIDIA &&
- (NVIsSupported(token) || NVIsG80((*ppPci)->chipType)))) {
- NVChipsets[numUsed].token = pciid;
- NVChipsets[numUsed].name = nvchips->name ? nvchips->name : "Unknown NVIDIA chip";
- NVPciChipsets[numUsed].numChipset = pciid;
- NVPciChipsets[numUsed].PCIid = pciid;
- NVPciChipsets[numUsed].resList = RES_SHARED_VGA;
- numUsed++;
- }
+ NVChipsets[numUsed].token = pciid;
+ NVChipsets[numUsed].name = nvchips->name ? nvchips->name : "Unknown NVIDIA chip";
+ NVPciChipsets[numUsed].numChipset = pciid;
+ NVPciChipsets[numUsed].PCIid = pciid;
+ NVPciChipsets[numUsed].resList = RES_SHARED_VGA;
+ numUsed++;
}
ppPci++;
}
diff --git a/src/nvidia_chipset_gen.h b/src/nvidia_chipset_gen.h
new file mode 100644
index 0000000..e69de29
diff --git a/src/nvidia_pci_device_match_gen.h b/src/nvidia_pci_device_match_gen.h
new file mode 100644
index 0000000..e69de29
diff --git a/src/pcidb/nv_list.csv b/src/pcidb/nv_list.csv
new file mode 100644
index 0000000..06dd95d
--- /dev/null
+++ b/src/pcidb/nv_list.csv
@@ -0,0 +1,638 @@
+"#last updated 2009/05/15","","",""
+"#vendor_id","device_id","special_case_data","Name"
+"12D2","0018",," RIVA 128"
+"10DE","0020",," RIVA TNT"
+"10DE","0028",," RIVA TNT2"
+"10DE","0029",," RIVA TNT2 Ultra"
+"10DE","002A",," Unknown TNT2"
+"10DE","002C",," Vanta"
+"10DE","002D",," RIVA TNT2 Model 64"
+"10DE","0040",," GeForce 6800 Ultra"
+"10DE","0041",," GeForce 6800"
+"10DE","0042",," GeForce 6800 LE"
+"10DE","0043",," GeForce 6800 XE"
+"10DE","0044",," GeForce 6800 XT"
+"10DE","0045",," GeForce 6800 GT"
+"10DE","0046",," GeForce 6800 GT"
+"10DE","0047",," GeForce 6800 GS"
+"10DE","0048",," GeForce 6800 XT"
+"10DE","0049",,
+"10DE","004A",,
+"10DE","004B",,
+"10DE","004C",,
+"10DE","004D",,
+"10DE","004E",," Quadro FX 4000"
+"10DE","004F",,
+"10DE","0090",," GeForce 7800 GTX"
+"10DE","0091",," GeForce 7800 GTX"
+"10DE","0092",," GeForce 7800 GT"
+"10DE","0093",," GeForce 7800 GS"
+"10DE","0094",,
+"10DE","0095",," GeForce 7800 SLI"
+"10DE","0096",,
+"10DE","0097",,
+"10DE","0098",," GeForce Go 7800"
+"10DE","0099",," GeForce Go 7800 GTX"
+"10DE","009A",,
+"10DE","009B",,
+"10DE","009C",,
+"10DE","009D",," Quadro FX 4500"
+"10DE","009E",,
+"10DE","009F",,
+"10DE","00A0",," Aladdin TNT2"
+"10DE","00C0",," GeForce 6800 GS"
+"10DE","00C1",," GeForce 6800"
+"10DE","00C2",," GeForce 6800 LE"
+"10DE","00C3",," GeForce 6800 XT"
+"10DE","00C4",,
+"10DE","00C5",,
+"10DE","00C6",,
+"10DE","00C7",,
+"10DE","00C8",," GeForce Go 6800"
+"10DE","00C9",," GeForce Go 6800 Ultra"
+"10DE","00CA",,
+"10DE","00CB",,
+"10DE","00CC",," Quadro FX Go1400"
+"10DE","00CD",," Quadro FX 3450/4000 SDI"
+"10DE","00CE",," Quadro FX 1400"
+"10DE","00CF",,
+"10DE","0100",," GeForce 256"
+"10DE","0101",," GeForce DDR"
+"10DE","0103",," Quadro"
+"10DE","0110",," GeForce2 MX/MX 400"
+"10DE","0111",," GeForce2 MX 100/200"
+"10DE","0112",," GeForce2 Go"
+"10DE","0113",," Quadro2 MXR/EX/Go"
+"10DE","0120",,
+"10DE","0121",,
+"10DE","0122",,
+"10DE","0123",,
+"10DE","0124",,
+"10DE","0125",,
+"10DE","0126",,
+"10DE","0127",,
+"10DE","0128",,
+"10DE","0129",,
+"10DE","012A",,
+"10DE","012B",,
+"10DE","012C",,
+"10DE","012D",,
+"10DE","012E",,
+"10DE","012F",,
+"10DE","0140",," GeForce 6600 GT"
+"10DE","0141",," GeForce 6600"
+"10DE","0142",," GeForce 6600 LE"
+"10DE","0143",," GeForce 6600 VE"
+"10DE","0144",," GeForce Go 6600"
+"10DE","0145",," GeForce 6610 XL"
+"10DE","0146",," GeForce Go 6600 TE/6200 TE"
+"10DE","0147",," GeForce 6700 XL"
+"10DE","0148",," GeForce Go 6600"
+"10DE","0149",," GeForce Go 6600 GT"
+"10DE","014A",," Quadro NVS 440"
+"10DE","014B",,
+"10DE","014C",," Quadro FX 550"
+"10DE","014D",," Quadro FX 550"
+"10DE","014E",," Quadro FX 540"
+"10DE","014F",," GeForce 6200"
+"10DE","0150",," GeForce2 GTS"
+"10DE","0151",," GeForce2 Ti"
+"10DE","0152",," GeForce2 Ultra"
+"10DE","0153",," Quadro2 Pro"
+"10DE","0160",," GeForce 6500"
+"10DE","0161",," GeForce 6200 TurboCache(TM)"
+"10DE","0162",," GeForce 6200SE TurboCache(TM)"
+"10DE","0163",," GeForce 6200 LE"
+"10DE","0164",," GeForce Go 6200"
+"10DE","0165",," Quadro NVS 285"
+"10DE","0166",," GeForce Go 6400"
+"10DE","0167",," GeForce Go 6200"
+"10DE","0168",," GeForce Go 6400"
+"10DE","0169",," GeForce 6250"
+"10DE","016A",," GeForce 7100 GS"
+"10DE","016B",,
+"10DE","016C",,
+"10DE","016D",,
+"10DE","016E",,
+"10DE","016F",,
+"10DE","0170",," GeForce4 MX 460"
+"10DE","0171",," GeForce4 MX 440"
+"10DE","0172",," GeForce4 MX 420"
+"10DE","0173",," GeForce4 MX 440-SE"
+"10DE","0174",," GeForce4 440 Go"
+"10DE","0175",," GeForce4 420 Go"
+"10DE","0176",," GeForce4 420 Go 32M"
+"10DE","0177",," GeForce4 460 Go"
+"10DE","0178",," Quadro4 550 XGL"
+"10DE","0179","#if !defined(__powerpc__)"," GeForce4 440 Go 64M"
+"10DE","0179","#if defined(__powerpc__)"," GeForce4 MX (Mac)"
+"10DE","017A",," Quadro NVS"
+"10DE","017B",,
+"10DE","017C",," Quadro4 500 GoGL"
+"10DE","017D",," GeForce4 410 Go 16M"
+"10DE","017E",,
+"10DE","017F",,
+"10DE","0180",,
+"10DE","0181",," GeForce4 MX 440 with AGP8X"
+"10DE","0182",," GeForce4 MX 440SE with AGP8X"
+"10DE","0183",," GeForce4 MX 420 with AGP8X"
+"10DE","0184",,
+"10DE","0185",," GeForce4 MX 4000"
+"10DE","0186",," GeForce4 448 Go"
+"10DE","0187",," GeForce4 488 Go"
+"10DE","0188",," Quadro4 580 XGL"
+"10DE","0189","#if defined(__powerpc__)"," GeForce4 MX with AGP8X (Mac)"
+"10DE","018A",," Quadro4 NVS 280 SD"
+"10DE","018B",," Quadro4 380 XGL"
+"10DE","018C",," Quadro NVS 50 PCI"
+"10DE","018D",," GeForce4 448 Go"
+"10DE","018E",,
+"10DE","018F",,
+"10DE","0190",,
+"10DE","0191",," GeForce 8800 GTX"
+"10DE","0192",,
+"10DE","0193",," GeForce 8800 GTS"
+"10DE","0194",," GeForce 8800 Ultra"
+"10DE","0194",,
+"10DE","0195",,
+"10DE","0196",,
+"10DE","0197",,
+"10DE","0198",,
+"10DE","0199",,
+"10DE","019A",,
+"10DE","019B",,
+"10DE","019C",,
+"10DE","019D",," Quadro FX 5600"
+"10DE","019D",,
+"10DE","019E",,
+"10DE","019E",," Quadro FX 4600"
+"10DE","019F",,
+"10DE","01A0",," GeForce2 Integrated GPU"
+"10DE","01D0",," GeForce 7350 LE"
+"10DE","01D1",," GeForce 7300 LE"
+"10DE","01D2",,
+"10DE","01D3",," GeForce 7300 SE"
+"10DE","01D4",,
+"10DE","01D5",,
+"10DE","01D6",," GeForce Go 7200"
+"10DE","01D7",," GeForce Go 7300"
+"10DE","01D8",," GeForce Go 7400"
+"10DE","01D9",," GeForce Go 7400 GS"
+"10DE","01DA",," Quadro NVS 110M"
+"10DE","01DB",," Quadro NVS 120M"
+"10DE","01DC",," Quadro FX 350M"
+"10DE","01DD",," GeForce 7500 LE"
+"10DE","01DE",," Quadro FX 350"
+"10DE","01DF",," GeForce 7300 GS"
+"10DE","01F0",," GeForce4 MX Integrated GPU"
+"10DE","0200",," GeForce3"
+"10DE","0201",," GeForce3 Ti 200"
+"10DE","0202",," GeForce3 Ti 500"
+"10DE","0203",," Quadro DCC"
+"10DE","0210",,
+"10DE","0211",," GeForce 6800"
+"10DE","0212",," GeForce 6800 LE"
+"10DE","0213",,
+"10DE","0214",,
+"10DE","0215",," GeForce 6800 GT"
+"10DE","0216",,
+"10DE","0217",,
+"10DE","0218",," GeForce 6800 XT"
+"10DE","0219",,
+"10DE","021A",,
+"10DE","021B",,
+"10DE","021C",,
+"10DE","021D",,
+"10DE","021E",,
+"10DE","021F",,
+"10DE","0220",,
+"10DE","0221",," GeForce 6200"
+"10DE","0222",," GeForce 6200 A-LE"
+"10DE","0223",,
+"10DE","0224",,
+"10DE","0225",,
+"10DE","0226",,
+"10DE","0227",,
+"10DE","0228",,
+"10DE","0229",,
+"10DE","022A",,
+"10DE","022B",,
+"10DE","022C",,
+"10DE","022D",,
+"10DE","022E",,
+"10DE","022F",,
+"10DE","0240",," GeForce 6150"
+"10DE","0241",," GeForce 6150 LE"
+"10DE","0242",," GeForce 6100"
+"10DE","0243",,
+"10DE","0244",," GeForce Go 6150"
+"10DE","0245",," Quadro NVS 210S / NVIDIA GeForce 6150LE"
+"10DE","0246",,
+"10DE","0247",," GeForce Go 6100"
+"10DE","0248",,
+"10DE","0249",,
+"10DE","024A",,
+"10DE","024B",,
+"10DE","024C",,
+"10DE","024D",,
+"10DE","024E",,
+"10DE","024F",,
+"10DE","0250",," GeForce4 Ti 4600"
+"10DE","0251",," GeForce4 Ti 4400"
+"10DE","0252",,
+"10DE","0253",," GeForce4 Ti 4200"
+"10DE","0254",,
+"10DE","0255",,
+"10DE","0256",,
+"10DE","0257",,
+"10DE","0258",," Quadro4 900 XGL"
+"10DE","0259",," Quadro4 750 XGL"
+"10DE","025A",,
+"10DE","025B",," Quadro4 700 XGL"
+"10DE","025C",,
+"10DE","025D",,
+"10DE","025E",,
+"10DE","025F",,
+"10DE","0280",," GeForce4 Ti 4800"
+"10DE","0281",," GeForce4 Ti 4200 with AGP8X"
+"10DE","0282",," GeForce4 Ti 4800 SE"
+"10DE","0283",,
+"10DE","0284",,
+"10DE","0285",,
+"10DE","0286",," GeForce4 4200 Go"
+"10DE","0287",,
+"10DE","0288",," Quadro4 980 XGL"
+"10DE","0289",," Quadro4 780 XGL"
+"10DE","028A",,
+"10DE","028B",,
+"10DE","028C",," Quadro4 700 GoGL"
+"10DE","028D",,
+"10DE","028E",,
+"10DE","028F",,
+"10DE","0290",," GeForce 7900 GTX"
+"10DE","0291",," GeForce 7900 GT"
+"10DE","0292",," GeForce 7900 GS"
+"10DE","0293",," GeForce 7950 GX2"
+"10DE","0294",," GeForce 7950 GX2"
+"10DE","0295",," GeForce 7950 GT}"
+"10DE","0296",,
+"10DE","0297",," GeForce Go 7950 GTX"
+"10DE","0298",," GeForce Go 7900 GS"
+"10DE","0299",," GeForce Go 7900 GTX"
+"10DE","029A",," Quadro FX 2500M"
+"10DE","029B",," Quadro FX 1500M"
+"10DE","029C",," Quadro FX 5500"
+"10DE","029D",," Quadro FX 3500"
+"10DE","029E",," Quadro FX 1500"
+"10DE","029F",," Quadro FX 4500 X2"
+"10DE","0300",,
+"10DE","0301",," GeForce FX 5800 Ultra"
+"10DE","0302",," GeForce FX 5800"
+"10DE","0303",,
+"10DE","0304",,
+"10DE","0305",,
+"10DE","0306",,
+"10DE","0307",,
+"10DE","0308",," Quadro FX 2000"
+"10DE","0309",," Quadro FX 1000"
+"10DE","030A",,
+"10DE","030B",,
+"10DE","030C",,
+"10DE","030D",,
+"10DE","030E",,
+"10DE","030F",,
+"10DE","0310",,
+"10DE","0311",," GeForce FX 5600 Ultra"
+"10DE","0312",," GeForce FX 5600"
+"10DE","0313",,
+"10DE","0314",," GeForce FX 560T"
+"10DE","0315",,
+"10DE","0316",,
+"10DE","0317",,
+"10DE","0318",,
+"10DE","0319",,
+"10DE","031A",," GeForce FX Go5600"
+"10DE","031B",," GeForce FX Go5650"
+"10DE","031C",," Quadro FX Go700"
+"10DE","031D",,
+"10DE","031E",,
+"10DE","031F",,
+"10DE","0320",," GeForce FX 5200"
+"10DE","0321",," GeForce FX 5200 Ultra"
+"10DE","0322",," GeForce FX 5200"
+"10DE","0323",," GeForce FX 5200LE"
+"10DE","0324",," GeForce FX Go5200"
+"10DE","0325",," GeForce FX Go5250"
+"10DE","0326",," GeForce FX 5500"
+"10DE","0327",," GeForce FX 5100"
+"10DE","0328",," GeForce FX Go5200 32M/64M"
+"10DE","0329","#if defined(__powerpc__)"," GeForce FX 5200 (Mac)"
+"10DE","032A",," Quadro NVS 55/280 PCI"
+"10DE","032B",," Quadro FX 500/600 PCI"
+"10DE","032C",," GeForce FX Go53xx Series"
+"10DE","032D",," GeForce FX Go5100"
+"10DE","032E",,
+"10DE","032F",,
+"10DE","0330",," GeForce FX 5900 Ultra"
+"10DE","0331",," GeForce FX 5900"
+"10DE","0332",," GeForce FX 590T"
+"10DE","0333",," GeForce FX 5950 Ultra"
+"10DE","0334",," GeForce FX 5900ZT"
+"10DE","0335",,
+"10DE","0336",,
+"10DE","0337",,
+"10DE","0338",," Quadro FX 3000"
+"10DE","0339",,
+"10DE","033A",,
+"10DE","033B",,
+"10DE","033C",,
+"10DE","033D",,
+"10DE","033E",,
+"10DE","033F",," Quadro FX 700"
+"10DE","0340",,
+"10DE","0341",," GeForce FX 5700 Ultra"
+"10DE","0342",," GeForce FX 5700"
+"10DE","0343",," GeForce FX 5700LE"
+"10DE","0344",," GeForce FX 5700VE"
+"10DE","0345",,
+"10DE","0346",,
+"10DE","0347",," GeForce FX Go5700"
+"10DE","0348",," GeForce FX Go5700"
+"10DE","0349",,
+"10DE","034A",,
+"10DE","034B",,
+"10DE","034C",," Quadro FX Go1000"
+"10DE","034D",,
+"10DE","034E",," Quadro FX 1100"
+"10DE","034F",,
+"10DE","0390",," GeForce 7650 GS"
+"10DE","0391",," GeForce 7600 GT"
+"10DE","0392",," GeForce 7600 GS"
+"10DE","0393",," GeForce 7300 GT"
+"10DE","0394",," GeForce 7600 LE"
+"10DE","0395",," GeForce 7300 GT"
+"10DE","0396",,
+"10DE","0397",," GeForce Go 7700"
+"10DE","0398",," GeForce Go 7600"
+"10DE","0399",," GeForce Go 7600 GT}"
+"10DE","039A",," Quadro NVS 300M"
+"10DE","039B",," GeForce Go 7900 SE"
+"10DE","039C",," Quadro FX 550M"
+"10DE","039D",,
+"10DE","039E",," Quadro FX 560"
+"10DE","039F",,
+"10DE","03D0",," GeForce 6150SE"
+"10DE","03D1",," GeForce 6100 nForce 405"
+"10DE","03D2",," GeForce 6100 nForce 400"
+"10DE","03D3",,
+"10DE","03D4",,
+"10DE","03D5",," GeForce 6100 nForce 420"
+"10DE","03D6",,
+"10DE","03D7",,
+"10DE","03D8",,
+"10DE","03D9",,
+"10DE","03DA",,
+"10DE","03DB",,
+"10DE","03DC",,
+"10DE","03DD",,
+"10DE","03DE",,
+"10DE","03DF",,
+"10DE","0400",," GeForce 8600 GTS"
+"10DE","0401",," GeForce 8600 GT"
+"10DE","0402",," GeForce 8600 GT"
+"10DE","0403",," GeForce 8600 GS"
+"10DE","0404",," GeForce 8400 GS"
+"10DE","0405",," GeForce 9500M GS"
+"10DE","0406",,
+"10DE","0407",," GeForce 8600M GT"
+"10DE","0408",," GeForce 9650M GS"
+"10DE","0409",," GeForce 8700M GT"
+"10DE","040A",," Quadro FX 370"
+"10DE","040B",," Quadro NVS 320M"
+"10DE","040C",," Quadro FX 570M"
+"10DE","040D",," Quadro FX 1600M"
+"10DE","040E",," Quadro FX 570"
+"10DE","040F",," Quadro FX 1700"
+"10DE","0420",," GeForce 8400 SE"
+"10DE","0421",," GeForce 8500 GT"
+"10DE","0422",," GeForce 8400 GS"
+"10DE","0423",," GeForce 8300 GS"
+"10DE","0424",," GeForce 8400 GS"
+"10DE","0425",," GeForce 8600M GS"
+"10DE","0426",," GeForce 8400M GT"
+"10DE","0427",," GeForce 8400M GS"
+"10DE","0428",," GeForce 8400M G"
+"10DE","0429",," Quadro NVS 140M"
+"10DE","042A",," Quadro NVS 130M"
+"10DE","042B",," Quadro NVS 135M"
+"10DE","042C",," GeForce 9400 GT"
+"10DE","042D",," Quadro FX 360M"
+"10DE","042E",," GeForce 9300M G"
+"10DE","042F",," Quadro NVS 290"
+"10DE","05E0",," GeForce GTX 295"
+"10DE","05E1",," GeForce GTX 280"
+"10DE","05E2",," GeForce GTX 260"
+"10DE","05E3",," GeForce GTX 285"
+"10DE","05E4",,
+"10DE","05E5",,
+"10DE","05E6",,
+"10DE","05E7",,
+"10DE","05E8",,
+"10DE","05E9",,
+"10DE","05EA",,
+"10DE","05EB",,
+"10DE","05EC",,
+"10DE","05ED",,
+"10DE","05EE",,
+"10DE","05EF",,
+"10DE","05F0",,
+"10DE","05F1",,
+"10DE","05F2",,
+"10DE","05F3",,
+"10DE","05F4",,
+"10DE","05F5",,
+"10DE","05F6",,
+"10DE","05F7",,
+"10DE","05F8",,
+"10DE","05F9",," Quadro CX"
+"10DE","05FA",,
+"10DE","05FB",,
+"10DE","05FC",,
+"10DE","05FD",," Quadro FX 5800"
+"10DE","05FE",," Quadro FX 4800"
+"10DE","05FF",," Quadro FX 3800"
+"10DE","0600",," GeForce 8800 GTS 512"
+"10DE","0601",," GeForce 9800 GT"
+"10DE","0602",," GeForce 8800 GT"
+"10DE","0603",,
+"10DE","0604",," GeForce 9800 GX2"
+"10DE","0605",," GeForce 9800 GT"
+"10DE","0606",," GeForce 8800 GS"
+"10DE","0607",,
+"10DE","0608",," GeForce 9800M GTX"
+"10DE","0609",," GeForce 8800M GTS"
+"10DE","060A",,
+"10DE","060B",," GeForce 9800M GT"
+"10DE","060C",," GeForce 8800M GTX"
+"10DE","060D",," GeForce 8800 GS"
+"10DE","060E",,
+"10DE","060F",,
+"10DE","0610",," GeForce 9600 GSO"
+"10DE","0611",," GeForce 8800 GT"
+"10DE","0612",," GeForce 9800 GTX"
+"10DE","0613",," GeForce 9800 GTX+"
+"10DE","0614",," GeForce 9800 GT"
+"10DE","0615",," GeForce GTS 250"
+"10DE","0617",," GeForce 9800M GTX"
+"10DE","0618",,
+"10DE","0619",,
+"10DE","061A",," Quadro FX 3700"
+"10DE","061B",,
+"10DE","061C",," Quadro FX 3600M"
+"10DE","061D",,
+"10DE","061E",," Quadro FX 3700M"
+"10DE","061F",,
+"10DE","0620",,
+"10DE","0621",,
+"10DE","0622",," GeForce 9600 GT"
+"10DE","0623",," GeForce 9600 GS"
+"10DE","0624",,
+"10DE","0625",," GeForce 9600 GSO 512"
+"10DE","0626",," GeForce GT 130"
+"10DE","0627",," GeForce GT 140"
+"10DE","0628",," GeForce 9800M GTS"
+"10DE","0629",,
+"10DE","062A",," GeForce 9700M GTS"
+"10DE","062B",," GeForce 9800M GS"
+"10DE","062C",," GeForce 9800M GTS"
+"10DE","062D",,
+"10DE","062E",,
+"10DE","062F",,
+"10DE","0630",,
+"10DE","0631",,
+"10DE","0632",,
+"10DE","0633",,
+"10DE","0634",,
+"10DE","0635",,
+"10DE","0636",,
+"10DE","0637",,
+"10DE","0638",," Quadro FX 1800"
+"10DE","0639",,
+"10DE","063A",," Quadro FX 2700M"
+"10DE","063B",,
+"10DE","063C",,
+"10DE","063D",,
+"10DE","063E",,
+"10DE","063F",,
+"10DE","0640",," GeForce 9500 GT"
+"10DE","0641",," GeForce 9400 GT"
+"10DE","0642",,
+"10DE","0643",," GeForce 9500 GT"
+"10DE","0644",,
+"10DE","0645",,
+"10DE","0646",," GeForce GT 120"
+"10DE","0647",," GeForce 9600M GT"
+"10DE","0648",," GeForce 9600M GS"
+"10DE","0649",," GeForce 9600M GT"
+"10DE","064A",," GeForce 9700M GT"
+"10DE","064B",," GeForce 9500M G"
+"10DE","064C",," GeForce 9650M GT"
+"10DE","064D",,
+"10DE","064E",,
+"10DE","064F",,
+"10DE","0650",,
+"10DE","0651",,
+"10DE","0652",,
+"10DE","0653",,
+"10DE","0654",,
+"10DE","0655",,
+"10DE","0656",," GeForce 9500 GT"
+"10DE","0657",,
+"10DE","0658",," Quadro FX 380"
+"10DE","0659",," Quadro FX 580"
+"10DE","065A",,
+"10DE","065B",,
+"10DE","065C",," Quadro FX 770M"
+"10DE","065D",,
+"10DE","065E",,
+"10DE","065F",,
+"10DE","06E0",," GeForce 9300 GE"
+"10DE","06E1",," GeForce 9300 GS"
+"10DE","06E2",,
+"10DE","06E3",,
+"10DE","06E4",," GeForce 8400 GS"
+"10DE","06E5",," GeForce 9300M GS"
+"10DE","06E6",," GeForce G100"
+"10DE","06E7",,
+"10DE","06E8",," GeForce 9200M GS"
+"10DE","06E9",," GeForce 9300M GS"
+"10DE","06EA",," Quadro NVS 150M"
+"10DE","06EB",," Quadro NVS 160M"
+"10DE","06EC",,
+"10DE","06ED",,
+"10DE","06EE",,
+"10DE","06EF",,
+"10DE","06F0",,
+"10DE","06F1",,
+"10DE","06F2",,
+"10DE","06F3",,
+"10DE","06F4",,
+"10DE","06F5",,
+"10DE","06F6",,
+"10DE","06F7",,
+"10DE","06F8",," Quadro NVS 420"
+"10DE","06F9",," Quadro FX 370 LP"
+"10DE","06FA",," Quadro NVS 450"
+"10DE","06FB",,
+"10DE","06FC",,
+"10DE","06FD",," Quadro NVS 295"
+"10DE","06FE",,
+"10DE","06FF",,
+"10DE","0A60",,
+"10DE","0A61",,
+"10DE","0A62",,
+"10DE","0A63",,
+"10DE","0A64",,
+"10DE","0A65",,
+"10DE","0A66",,
+"10DE","0A67",,
+"10DE","0A68",,
+"10DE","0A69",,
+"10DE","0A6A",,
+"10DE","0A6B",,
+"10DE","0A6C",,
+"10DE","0A6D",,
+"10DE","0A6E",,
+"10DE","0A6F",,
+"10DE","0A70",,
+"10DE","0A71",,
+"10DE","0A72",,
+"10DE","0A73",,
+"10DE","0A74",,
+"10DE","0A75",,
+"10DE","0A76",,
+"10DE","0A77",,
+"10DE","0A78",,
+"10DE","0A79",,
+"10DE","0A7A",,
+"10DE","0A7B",,
+"10DE","0A7C",,
+"10DE","0A7D",,
+"10DE","0A7E",,
+"10DE","0A7F",,
+"10DE","0CA0",,
+"10DE","0CA1",,
+"10DE","0CA2",,
+"10DE","0CA3",,
+"10DE","0CA4",,
+"10DE","0CA5",,
+"10DE","0CA6",,
+"10DE","0CA7",,
+"10DE","0CA8",,
+"10DE","0CA9",,
+"10DE","0CAA",,
+"10DE","0CAB",,
+"10DE","0CAC",,
+"10DE","0CAD",,
+"10DE","0CAE",,
+"10DE","0CAF",,
diff --git a/src/pcidb/parse_pci_ids.pl b/src/pcidb/parse_pci_ids.pl
new file mode 100755
index 0000000..4afe4f2
--- /dev/null
+++ b/src/pcidb/parse_pci_ids.pl
@@ -0,0 +1,82 @@
+#!/usr/bin/perl
+#
+# Copyright 2007 Red Hat Inc.
+# This crappy script written by Dave Airlie to avoid hassle of adding
+# ids in every place.
+#
+# Modified by Mario Limonciello <<A HREF="mailto:Mario_Limonciello@Dell.com">Mario_Limonciello@Dell.com</A>> to handle nv
+#
+use strict;
+use warnings;
+use Text::CSV_XS;
+
+my $file = $ARGV[0];
+
+my $nvidiapcidevicematchfile = 'nvidia_pci_device_match_gen.h';
+my $nvidiachipsetfile = 'nvidia_chipset_gen.h';
+
+my $csv = Text::CSV_XS->new();
+
+open (CSV, "<", $file) or die $!;
+
+open (PCIDEVICEMATCH, ">", $nvidiapcidevicematchfile) or die;
+open (NVIDIACHIPSET, ">", $nvidiachipsetfile) or die;
+
+print NVIDIACHIPSET "/* This file is autogenerated please do not edit */\n";
+print NVIDIACHIPSET "static SymTabRec NVKnownChipsets[] = {\n";
+
+print PCIDEVICEMATCH "/* This file is autogenerated please do not edit */\n";
+
+print PCIDEVICEMATCH "#if XSERVER_LIBPCIACCESS\n";
+print PCIDEVICEMATCH "#define LIBPCIACCESS_CLASS_SHIFT (PCI_CLASS_SHIFT - 8)\n";
+print PCIDEVICEMATCH "#define LIBPCIACCESS_CLASS_MASK (PCI_CLASS_MASK >> 8)\n";
+
+print PCIDEVICEMATCH "#define NVIDIA_DEVICE_MATCH(v, d, i) \\\n";
+print PCIDEVICEMATCH " { (v), (d), PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_CLASS_DISPLAY << LIBPCIACCESS_CLASS_SHIFT, LIBPCIACCESS_CLASS_MASK, (i) }\n";
+
+print PCIDEVICEMATCH "static const struct pci_id_match NVPciIdMatchList[] = {\n";
+
+while (<CSV>) {
+ if ($csv->parse($_)) {
+ my @columns = $csv->fields();
+
+ if ((substr($columns[0], 0, 1) ne "#")) {
+
+        #for special case
+        if ($columns[2] ne "") {
+                print NVIDIACHIPSET "$columns[2]\n";
+                print PCIDEVICEMATCH "$columns[2]\n";
+        }
+
+        if ($columns[0] eq "12D2") {
+                print PCIDEVICEMATCH " NVIDIA_DEVICE_MATCH( PCI_VENDOR_NVIDIA_SGS, 0x$columns[1], 0 ),\n";
+        }
+        
+        if ($columns[0] eq "10DE") {
+                print PCIDEVICEMATCH " NVIDIA_DEVICE_MATCH( PCI_VENDOR_NVIDIA, 0x$columns[1], 0 ),\n";
+        }
+        
+ if ($columns[3] ne "") {
+                print NVIDIACHIPSET " { 0x$columns[0]$columns[1], \"$columns[3]\" },\n";
+        }
+
+        #for special case
+        if ($columns[2] ne "") {
+                print NVIDIACHIPSET "#endif\n";
+                print PCIDEVICEMATCH "#endif\n";
+        }
+
+
+ }
+ } else {
+ my $err = $csv->error_input;
+ print "Failed to parse line: $err";
+ }
+}
+
+print NVIDIACHIPSET " { -1, NULL }\n};\n";
+print PCIDEVICEMATCH " { 0, 0, 0 }\n};\n";
+print PCIDEVICEMATCH "#endif\n";
+close CSV;
+close PCIDEVICEMATCH;
+close NVIDIACHIPSET;
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>