[PATCH] Move the logic for matching devices out of probe routine.

Mario Limonciello superm1 at gmail.com
Sat Sep 12 07:37:39 PDT 2009


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 <Mario_Limonciello at Dell.com> 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;
-- 
1.6.0.4



More information about the xorg-devel mailing list