Add initial support for flashing some NVIDIA graphics cards

The new option is '-p gfxnvidia', rest of the interface is as usual.

I tested a successful identify and read on a "RIVA TNT2 Model 64/Model 64 Pro"
card for now, erase and write did NOT work properly so far!

Please do not attempt to write/erase cards yet, unless you can recover!

In addition to the NVIDIA handling code it was required to call
programmer_shutdown() in a lot more places, otherwise the graphics card
will be disabled in the init function, but never enabled again as the
shutdown function is not called.
The shutdown handling may be changed to use atexit() later.

Corresponding to flashrom svn r737.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Luc Verhaegen <libv@skynet.be>
diff --git a/flash.h b/flash.h
index 376204a..b5b9ff5 100644
--- a/flash.h
+++ b/flash.h
@@ -88,6 +88,9 @@
 #if NIC3COM_SUPPORT == 1
 	PROGRAMMER_NIC3COM,
 #endif
+#if GFXNVIDIA_SUPPORT == 1
+	PROGRAMMER_GFXNVIDIA,
+#endif
 #if DRKAISER_SUPPORT == 1
 	PROGRAMMER_DRKAISER,
 #endif
@@ -437,6 +440,13 @@
 uint8_t nic3com_chip_readb(const chipaddr addr);
 extern struct pcidev_status nics_3com[];
 
+/* gfxnvidia.c */
+int gfxnvidia_init(void);
+int gfxnvidia_shutdown(void);
+void gfxnvidia_chip_writeb(uint8_t val, chipaddr addr);
+uint8_t gfxnvidia_chip_readb(const chipaddr addr);
+extern struct pcidev_status gfx_nvidia[];
+
 /* drkaiser.c */
 int drkaiser_init(void);
 int drkaiser_shutdown(void);