Index: flashrom-probe_params_manuf_model/flash.h
===================================================================
--- flashrom-probe_params_manuf_model/flash.h	(Revision 551)
+++ flashrom-probe_params_manuf_model/flash.h	(Arbeitskopie)
@@ -139,7 +139,7 @@
 	 */
 	uint32_t tested;
 
-	int (*probe) (struct flashchip *flash);
+	int (*probe) (struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 	int (*erase) (struct flashchip *flash);
 	int (*write) (struct flashchip *flash, uint8_t *buf);
 	int (*read) (struct flashchip *flash, uint8_t *buf);
@@ -692,10 +692,10 @@
 extern char *lb_part, *lb_vendor;
 
 /* spi.c */
-int probe_spi_rdid(struct flashchip *flash);
-int probe_spi_rdid4(struct flashchip *flash);
-int probe_spi_rems(struct flashchip *flash);
-int probe_spi_res(struct flashchip *flash);
+int probe_spi_rdid(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
+int probe_spi_rdid4(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
+int probe_spi_rems(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
+int probe_spi_res(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int spi_command(unsigned int writecnt, unsigned int readcnt,
 		const unsigned char *writearr, unsigned char *readarr);
 int spi_write_enable(void);
@@ -717,17 +717,17 @@
 uint32_t spi_get_valid_read_addr(void);
 
 /* 82802ab.c */
-int probe_82802ab(struct flashchip *flash);
+int probe_82802ab(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_82802ab(struct flashchip *flash);
 int write_82802ab(struct flashchip *flash, uint8_t *buf);
 
 /* am29f040b.c */
-int probe_29f040b(struct flashchip *flash);
+int probe_29f040b(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_29f040b(struct flashchip *flash);
 int write_29f040b(struct flashchip *flash, uint8_t *buf);
 
 /* en29f002a.c */
-int probe_en29f002a(struct flashchip *flash);
+int probe_en29f002a(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_en29f002a(struct flashchip *flash);
 int write_en29f002a(struct flashchip *flash, uint8_t *buf);
 
@@ -765,7 +765,7 @@
 void protect_jedec(chipaddr bios);
 int write_byte_program_jedec(chipaddr bios, uint8_t *src,
 			     chipaddr dst);
-int probe_jedec(struct flashchip *flash);
+int probe_jedec(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_chip_jedec(struct flashchip *flash);
 int write_jedec(struct flashchip *flash, uint8_t *buf);
 int erase_sector_jedec(chipaddr bios, unsigned int page);
@@ -779,7 +779,7 @@
 int write_m29f002b(struct flashchip *flash, uint8_t *buf);
 
 /* m29f400bt.c */
-int probe_m29f400bt(struct flashchip *flash);
+int probe_m29f400bt(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_m29f400bt(struct flashchip *flash);
 int block_erase_m29f400bt(chipaddr bios,
 				 chipaddr dst);
@@ -792,17 +792,17 @@
 			  chipaddr dst, int page_size);
 
 /* mx29f002.c */
-int probe_29f002(struct flashchip *flash);
+int probe_29f002(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_29f002(struct flashchip *flash);
 int write_29f002(struct flashchip *flash, uint8_t *buf);
 
 /* pm49fl00x.c */
-int probe_49fl00x(struct flashchip *flash);
+int probe_49fl00x(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_49fl00x(struct flashchip *flash);
 int write_49fl00x(struct flashchip *flash, uint8_t *buf);
 
 /* sharplhf00l04.c */
-int probe_lhf00l04(struct flashchip *flash);
+int probe_lhf00l04(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_lhf00l04(struct flashchip *flash);
 int write_lhf00l04(struct flashchip *flash, uint8_t *buf);
 void toggle_ready_lhf00l04(chipaddr dst);
@@ -810,7 +810,7 @@
 void protect_lhf00l04(chipaddr bios);
 
 /* sst28sf040.c */
-int probe_28sf040(struct flashchip *flash);
+int probe_28sf040(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_28sf040(struct flashchip *flash);
 int write_28sf040(struct flashchip *flash, uint8_t *buf);
 
@@ -823,27 +823,27 @@
 int write_49lf040(struct flashchip *flash, uint8_t *buf);
 
 /* sst49lfxxxc.c */
-int probe_49lfxxxc(struct flashchip *flash);
+int probe_49lfxxxc(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_49lfxxxc(struct flashchip *flash);
 int write_49lfxxxc(struct flashchip *flash, uint8_t *buf);
 
 /* sst_fwhub.c */
-int probe_sst_fwhub(struct flashchip *flash);
+int probe_sst_fwhub(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_sst_fwhub(struct flashchip *flash);
 int write_sst_fwhub(struct flashchip *flash, uint8_t *buf);
 
 /* w39v040c.c */
-int probe_w39v040c(struct flashchip *flash);
+int probe_w39v040c(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_w39v040c(struct flashchip *flash);
 int write_w39v040c(struct flashchip *flash, uint8_t *buf);
 
 /* w39V080fa.c */
-int probe_winbond_fwhub(struct flashchip *flash);
+int probe_winbond_fwhub(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_winbond_fwhub(struct flashchip *flash);
 int write_winbond_fwhub(struct flashchip *flash, uint8_t *buf);
 
 /* w29ee011.c */
-int probe_w29ee011(struct flashchip *flash);
+int probe_w29ee011(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 
 /* w49f002u.c */
 int write_49f002(struct flashchip *flash, uint8_t *buf);
@@ -855,7 +855,7 @@
 int wbsio_spi_write_1(struct flashchip *flash, uint8_t *buf);
 
 /* stm50flw0x0x.c */
-int probe_stm50flw0x0x(struct flashchip *flash);
+int probe_stm50flw0x0x(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id);
 int erase_stm50flw0x0x(struct flashchip *flash);
 int write_stm50flw0x0x(struct flashchip *flash, uint8_t *buf);
 
Index: flashrom-probe_params_manuf_model/pm49fl00x.c
===================================================================
--- flashrom-probe_params_manuf_model/pm49fl00x.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/pm49fl00x.c	(Arbeitskopie)
@@ -38,9 +38,9 @@
 	}
 }
 
-int probe_49fl00x(struct flashchip *flash)
+int probe_49fl00x(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
-	int ret = probe_jedec(flash);
+	int ret = probe_jedec(flash, manufacture_id, model_id);
 
 	if (ret == 1)
 		map_flash_registers(flash);
Index: flashrom-probe_params_manuf_model/en29f002a.c
===================================================================
--- flashrom-probe_params_manuf_model/en29f002a.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/en29f002a.c	(Arbeitskopie)
@@ -28,7 +28,7 @@
 
 #include "flash.h"
 
-int probe_en29f512(struct flashchip *flash)
+int probe_en29f512(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
@@ -49,7 +49,7 @@
 
 	printf_debug("%s: id1 0x%02x, id2 0x%02x\n", __FUNCTION__, id1, id2);
 
-	if (id1 == flash->manufacture_id && id2 == flash->model_id)
+	if (id1 == manufacture_id && id2 == model_id)
 		return 1;
 
 	return 0;
@@ -61,7 +61,7 @@
  */
 
 /* This does not seem to function properly for EN29F002NT. */
-int probe_en29f002a(struct flashchip *flash)
+int probe_en29f002a(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
@@ -82,7 +82,7 @@
 
 	printf_debug("%s: id1 0x%x, id2 0x%x\n", __FUNCTION__, id1, id2);
 
-	if (id1 == flash->manufacture_id && id2 == flash->model_id)
+	if (id1 == manufacture_id && id2 == model_id)
 		return 1;
 
 	return 0;
Index: flashrom-probe_params_manuf_model/jedec.c
===================================================================
--- flashrom-probe_params_manuf_model/jedec.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/jedec.c	(Arbeitskopie)
@@ -85,7 +85,7 @@
 	usleep(200);
 }
 
-int probe_jedec(struct flashchip *flash)
+int probe_jedec(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
@@ -153,7 +153,7 @@
 		printf_debug(", id2 is normal flash content");
 
 	printf_debug("\n");
-	if (largeid1 == flash->manufacture_id && largeid2 == flash->model_id)
+	if (largeid1 == manufacture_id && largeid2 == model_id)
 		return 1;
 
 	return 0;
Index: flashrom-probe_params_manuf_model/w29ee011.c
===================================================================
--- flashrom-probe_params_manuf_model/w29ee011.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/w29ee011.c	(Arbeitskopie)
@@ -21,7 +21,7 @@
 #include <string.h>
 #include "flash.h"
 
-int probe_w29ee011(struct flashchip *flash)
+int probe_w29ee011(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
@@ -64,7 +64,7 @@
 
 	printf_debug("%s: id1 0x%02x, id2 0x%02x\n", __FUNCTION__, id1, id2);
 
-	if (id1 == flash->manufacture_id && id2 == flash->model_id)
+	if (id1 == manufacture_id && id2 == model_id)
 		return 1;
 
 	return 0;
Index: flashrom-probe_params_manuf_model/sst49lfxxxc.c
===================================================================
--- flashrom-probe_params_manuf_model/sst49lfxxxc.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/sst49lfxxxc.c	(Arbeitskopie)
@@ -115,7 +115,7 @@
 	return 0;
 }
 
-int probe_49lfxxxc(struct flashchip *flash)
+int probe_49lfxxxc(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 
@@ -131,7 +131,7 @@
 
 	printf_debug("%s: id1 0x%02x, id2 0x%02x\n", __FUNCTION__, id1, id2);
 
-	if (!(id1 == flash->manufacture_id && id2 == flash->model_id))
+	if (!(id1 == manufacture_id && id2 == model_id))
 		return 0;
 
 	map_flash_registers(flash);
Index: flashrom-probe_params_manuf_model/sharplhf00l04.c
===================================================================
--- flashrom-probe_params_manuf_model/sharplhf00l04.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/sharplhf00l04.c	(Arbeitskopie)
@@ -33,7 +33,7 @@
 	printf("%s", status & 0x2 ? "WP|TBL#|WP#,ABORT:" : "UNLOCK:");
 }
 
-int probe_lhf00l04(struct flashchip *flash)
+int probe_lhf00l04(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
@@ -62,7 +62,7 @@
 
 	printf_debug("%s: id1 0x%02x, id2 0x%02x\n", __FUNCTION__, id1, id2);
 
-	if (id1 != flash->manufacture_id || id2 != flash->model_id)
+	if (id1 != manufacture_id || id2 != model_id)
 		return 0;
 
 	map_flash_registers(flash);
Index: flashrom-probe_params_manuf_model/spi.c
===================================================================
--- flashrom-probe_params_manuf_model/spi.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/spi.c	(Arbeitskopie)
@@ -193,13 +193,13 @@
 	return 0;
 }
 
-int probe_spi_rdid(struct flashchip *flash)
+int probe_spi_rdid(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	return probe_spi_rdid_generic(flash, 3);
 }
 
 /* support 4 bytes flash ID */
-int probe_spi_rdid4(struct flashchip *flash)
+int probe_spi_rdid4(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	/* only some SPI chipsets support 4 bytes commands */
 	switch (flashbus) {
@@ -217,7 +217,7 @@
 	return 0;
 }
 
-int probe_spi_rems(struct flashchip *flash)
+int probe_spi_rems(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	unsigned char readarr[JEDEC_REMS_INSIZE];
 	uint32_t id1, id2;
@@ -230,7 +230,7 @@
 
 	printf_debug("%s: id1 0x%x, id2 0x%x\n", __FUNCTION__, id1, id2);
 
-	if (id1 == flash->manufacture_id && id2 == flash->model_id) {
+	if (id1 == manufacture_id && id2 == model_id) {
 		/* Print the status register to tell the
 		 * user about possible write protection.
 		 */
@@ -240,14 +240,14 @@
 	}
 
 	/* Test if this is a pure vendor match. */
-	if (id1 == flash->manufacture_id &&
-	    GENERIC_DEVICE_ID == flash->model_id)
+	if (id1 == manufacture_id &&
+	    GENERIC_DEVICE_ID == model_id)
 		return 1;
 
 	return 0;
 }
 
-int probe_spi_res(struct flashchip *flash)
+int probe_spi_res(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	unsigned char readarr[3];
 	uint32_t id2;
@@ -264,7 +264,7 @@
 
 	id2 = readarr[0];
 	printf_debug("%s: id 0x%x\n", __FUNCTION__, id2);
-	if (id2 != flash->model_id)
+	if (id2 != model_id)
 		return 0;
 
 	/* Print the status register to tell the
Index: flashrom-probe_params_manuf_model/w39v040c.c
===================================================================
--- flashrom-probe_params_manuf_model/w39v040c.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/w39v040c.c	(Arbeitskopie)
@@ -20,7 +20,7 @@
 
 #include "flash.h"
 
-int probe_w39v040c(struct flashchip *flash)
+int probe_w39v040c(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2, lock;
@@ -47,7 +47,7 @@
 	if (!oddparity(id1))
 		printf_debug(", id1 parity violation");
 	printf_debug("\n");
-	if (flash->manufacture_id == id1 && flash->model_id == id2) {
+	if (manufacture_id == id1 && model_id == id2) {
 		printf("%s: Boot block #TBL is %slocked, rest of chip #WP is %slocked.\n",
 			__func__, lock & 0x4 ? "" : "un", lock & 0x8 ? "" : "un");
 		return 1;
Index: flashrom-probe_params_manuf_model/sst28sf040.c
===================================================================
--- flashrom-probe_params_manuf_model/sst28sf040.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/sst28sf040.c	(Arbeitskopie)
@@ -88,7 +88,7 @@
 	return 0;
 }
 
-int probe_28sf040(struct flashchip *flash)
+int probe_28sf040(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
@@ -106,7 +106,7 @@
 	myusec_delay(10);
 
 	printf_debug("%s: id1 0x%02x, id2 0x%02x\n", __FUNCTION__, id1, id2);
-	if (id1 == flash->manufacture_id && id2 == flash->model_id)
+	if (id1 == manufacture_id && id2 == model_id)
 		return 1;
 
 	return 0;
Index: flashrom-probe_params_manuf_model/stm50flw0x0x.c
===================================================================
--- flashrom-probe_params_manuf_model/stm50flw0x0x.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/stm50flw0x0x.c	(Arbeitskopie)
@@ -38,7 +38,7 @@
 	usleep(200);
 }
 
-int probe_stm50flw0x0x(struct flashchip *flash)
+int probe_stm50flw0x0x(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
@@ -81,7 +81,7 @@
 	printf_debug("%s: id1 0x%02x, id2 0x%02x\n", __FUNCTION__, largeid1,
 		     largeid2);
 
-	if (largeid1 != flash->manufacture_id || largeid2 != flash->model_id)
+	if (largeid1 != manufacture_id || largeid2 != model_id)
 		return 0;
 
 	map_flash_registers(flash);
Index: flashrom-probe_params_manuf_model/am29f040b.c
===================================================================
--- flashrom-probe_params_manuf_model/am29f040b.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/am29f040b.c	(Arbeitskopie)
@@ -61,7 +61,7 @@
 	return 0;
 }
 
-int probe_29f040b(struct flashchip *flash)
+int probe_29f040b(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
@@ -78,7 +78,7 @@
 	myusec_delay(10);
 
 	printf_debug("%s: id1 0x%02x, id2 0x%02x\n", __FUNCTION__, id1, id2);
-	if (id1 == flash->manufacture_id && id2 == flash->model_id)
+	if (id1 == manufacture_id && id2 == model_id)
 		return 1;
 
 	return 0;
Index: flashrom-probe_params_manuf_model/sst_fwhub.c
===================================================================
--- flashrom-probe_params_manuf_model/sst_fwhub.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/sst_fwhub.c	(Arbeitskopie)
@@ -79,11 +79,11 @@
 }
 
 /* probe_jedec works fine for probing */
-int probe_sst_fwhub(struct flashchip *flash)
+int probe_sst_fwhub(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	int i;
 
-	if (probe_jedec(flash) == 0)
+	if (probe_jedec(flash, manufacture_id, model_id) == 0)
 		return 0;
 
 	map_flash_registers(flash);
Index: flashrom-probe_params_manuf_model/w39v080fa.c
===================================================================
--- flashrom-probe_params_manuf_model/w39v080fa.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/w39v080fa.c	(Arbeitskopie)
@@ -20,7 +20,7 @@
 
 #include "flash.h"
 
-int probe_winbond_fwhub(struct flashchip *flash)
+int probe_winbond_fwhub(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
@@ -43,7 +43,7 @@
 
 	printf_debug("%s: id1 0x%x, id2 0x%x\n", __FUNCTION__, id1, id2);
 
-	if (id1 != flash->manufacture_id || id2 != flash->model_id)
+	if (id1 != manufacture_id || id2 != model_id)
 		return 0;
 
 	map_flash_registers(flash);
Index: flashrom-probe_params_manuf_model/flashrom.c
===================================================================
--- flashrom-probe_params_manuf_model/flashrom.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/flashrom.c	(Arbeitskopie)
@@ -184,7 +184,7 @@
 		if (force)
 			break;
 
-		if (flash->probe(flash) != 1)
+		if (flash->probe(flash, flash->manufacture_id, flash->model_id) != 1)
 			goto notfound;
 
 		if (first_flash == flashchips
Index: flashrom-probe_params_manuf_model/82802ab.c
===================================================================
--- flashrom-probe_params_manuf_model/82802ab.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/82802ab.c	(Arbeitskopie)
@@ -41,7 +41,7 @@
 	printf("%s", status & 0x2 ? "WP|TBL#|WP#,ABORT:" : "UNLOCK:");
 }
 
-int probe_82802ab(struct flashchip *flash)
+int probe_82802ab(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
@@ -69,7 +69,7 @@
 
 	printf_debug("%s: id1 0x%02x, id2 0x%02x\n", __FUNCTION__, id1, id2);
 
-	if (id1 != flash->manufacture_id || id2 != flash->model_id)
+	if (id1 != manufacture_id || id2 != model_id)
 		return 0;
 
 	map_flash_registers(flash);
Index: flashrom-probe_params_manuf_model/mx29f002.c
===================================================================
--- flashrom-probe_params_manuf_model/mx29f002.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/mx29f002.c	(Arbeitskopie)
@@ -20,7 +20,7 @@
 
 #include "flash.h"
 
-int probe_29f002(struct flashchip *flash)
+int probe_29f002(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
@@ -37,7 +37,7 @@
 	myusec_delay(10);
 
 	printf_debug("%s: id1 0x%02x, id2 0x%02x\n", __FUNCTION__, id1, id2);
-	if (id1 == flash->manufacture_id && id2 == flash->model_id)
+	if (id1 == manufacture_id && id2 == model_id)
 		return 1;
 
 	return 0;
Index: flashrom-probe_params_manuf_model/m29f400bt.c
===================================================================
--- flashrom-probe_params_manuf_model/m29f400bt.c	(Revision 551)
+++ flashrom-probe_params_manuf_model/m29f400bt.c	(Arbeitskopie)
@@ -52,7 +52,7 @@
 	}
 }
 
-int probe_m29f400bt(struct flashchip *flash)
+int probe_m29f400bt(struct flashchip *flash, uint32_t manufacture_id, uint32_t model_id)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
@@ -77,7 +77,7 @@
 
 	printf_debug("%s: id1 0x%02x, id2 0x%02x\n", __FUNCTION__, id1, id2);
 
-	if (id1 == flash->manufacture_id && id2 == flash->model_id)
+	if (id1 == manufacture_id && id2 == model_id)
 		return 1;
 
 	return 0;
