diff --git a/82802ab.c b/82802ab.c
index fceb715..9512c67 100644
--- a/82802ab.c
+++ b/82802ab.c
@@ -48,7 +48,8 @@
 
 int probe_82802ab(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
+	volatile uint8_t *registers;
 	uint8_t id1, id2;
 
 #if 0
@@ -65,28 +66,28 @@
 	id1 = *(volatile uint8_t *)bios;
 	id2 = *(volatile uint8_t *)(bios + 0x01);
 
-#if 1
+	/* Leave ID mode */
 	*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
 	*(volatile uint8_t *)(bios + 0x2AAA) = 0x55;
 	*(volatile uint8_t *)(bios + 0x5555) = 0xF0;
 
-#endif
 	myusec_delay(10);
 
 	printf_debug("%s: id1 0x%x, id2 0x%x\n", __FUNCTION__, id1, id2);
 
 	if (id1 == flash->manufacture_id && id2 == flash->model_id) {
 		size_t size = flash->total_size * 1024;
+
 		// we need to mmap the write-protect space. 
-		bios = mmap(0, size, PROT_WRITE | PROT_READ, MAP_SHARED,
+		registers = mmap(0, size, PROT_WRITE | PROT_READ, MAP_SHARED,
 			    fd_mem, (off_t) (0 - 0x400000 - size));
-		if (bios == MAP_FAILED) {
+		if (registers == MAP_FAILED) {
 			// it's this part but we can't map it ...
 			perror("Error MMAP memory using " MEM_DEV);
 			exit(1);
 		}
 
-		flash->virt_addr_2 = bios;
+		flash->virtual_registers = registers;
 		return 1;
 	}
 
@@ -123,8 +124,8 @@
 }
 int erase_82802ab_block(struct flashchip *flash, int offset)
 {
-	volatile uint8_t *bios = flash->virt_addr + offset;
-	volatile uint8_t *wrprotect = flash->virt_addr_2 + offset + 2;
+	volatile uint8_t *bios = flash->virtual_memory + offset;
+	volatile uint8_t *wrprotect = flash->virtual_registers + offset + 2;
 	uint8_t status;
 
 	// clear status register
@@ -141,7 +142,7 @@
 	*(volatile uint8_t *)(bios) = 0xd0;
 	myusec_delay(10);
 	// now let's see what the register is
-	status = wait_82802ab(flash->virt_addr);
+	status = wait_82802ab(flash->virtual_memory);
 	//print_82802ab_status(status);
 	printf("DONE BLOCK 0x%x\n", offset);
 	return (0);
@@ -178,7 +179,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	erase_82802ab(flash);
 	if (*bios != 0xff) {
diff --git a/am29f040b.c b/am29f040b.c
index ae9fb07..cba4a28 100644
--- a/am29f040b.c
+++ b/am29f040b.c
@@ -75,7 +75,7 @@
 
 int probe_29f040b(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 	uint8_t id1, id2;
 
 	*(bios + 0x555) = 0xAA;
@@ -98,7 +98,7 @@
 
 int erase_29f040b(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	*(bios + 0x555) = 0xAA;
 	*(bios + 0x2AA) = 0x55;
@@ -118,7 +118,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	printf("Programming page ");
 	for (i = 0; i < total_size / page_size; i++) {
diff --git a/flash.h b/flash.h
index 6ced0f1..ad9f61a 100644
--- a/flash.h
+++ b/flash.h
@@ -36,7 +36,6 @@
 	int manufacture_id;
 	int model_id;
 
-	volatile uint8_t *virt_addr;
 	int total_size;
 	int page_size;
 
@@ -45,7 +44,11 @@
 	int (*write) (struct flashchip *flash, uint8_t *buf);
 	int (*read) (struct flashchip *flash, uint8_t *buf);
 
-	volatile uint8_t *virt_addr_2;
+	/* some flash devices have an additional
+	 * register space
+	 */
+	volatile uint8_t *virtual_memory;
+	volatile uint8_t *virtual_registers;
 };
 
 extern struct flashchip flashchips[];
diff --git a/flashchips.c b/flashchips.c
index 07fc56d..ec88d81 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -3,22 +3,21 @@
  *
  * Copyright 2000 Silicon Integrated System Corporation
  * Copyright 2004 Tyan Corp
- *	yhlu yhlu@tyan.com add exclude start and end option
- * Copyright 2005 coresystems GmbH <stepan@openbios.org>
+ * Copyright 2005-2007 coresystems GmbH <stepan@openbios.org>
  * 
- *	This program is free software; you can redistribute it and/or modify
- *	it under the terms of the GNU General Public License as published by
- *	the Free Software Foundation; either version 2 of the License, or
- *	(at your option) any later version.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
- *	This program is distributed in the hope that it will be useful,
- *	but WITHOUT ANY WARRANTY; without even the implied warranty of
- *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *	GNU General Public License for more details.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- *	You should have received a copy of the GNU General Public License
- *	along with this program; if not, write to the Free Software
- *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
  */
 
@@ -41,108 +40,107 @@
 #include "sst_fwhub.h"
 
 struct flashchip flashchips[] = {
-	{"Am29F040B",	AMD_ID, 	AM_29F040B,	NULL, 512, 64 * 1024,
-	 probe_29f040b, erase_29f040b,	write_29f040b,	NULL},
-	{"Am29F016D",	AMD_ID, 	AM_29F016D,	NULL, 2048, 64 * 1024,
-	 probe_29f040b, erase_29f040b,	write_29f040b,	NULL},
-	{"AE49F2008",	ASD_ID,	        ASD_AE49F2008,	NULL, 256, 128,
-	 probe_jedec,	erase_chip_jedec, write_jedec,	NULL},
-	{"At29C040A",	ATMEL_ID,	AT_29C040A,	NULL, 512, 256,
-	 probe_jedec,	erase_chip_jedec, write_jedec,	NULL},
-	{"At29C020",	ATMEL_ID,	AT_29C020,	NULL, 256, 256,
-	 probe_jedec,	erase_chip_jedec, write_jedec,	NULL},
-	{"Mx29f002",	MX_ID,		MX_29F002,	NULL, 256, 64 * 1024,
-	 probe_29f002,	erase_29f002, 	write_29f002,	NULL},
-	{"SST29EE020A", SST_ID,		SST_29EE020A,	NULL, 256, 128,
-	 probe_jedec,	erase_chip_jedec, write_jedec,	NULL},
-	{"SST28SF040A", SST_ID,		SST_28SF040,	NULL, 512, 256,
-	 probe_28sf040, erase_28sf040, write_28sf040,	NULL},
-	{"SST39SF010A", SST_ID,		SST_39SF010,	NULL, 128, 4096,
-	 probe_jedec,	erase_chip_jedec, write_39sf020,NULL},
-	{"SST39SF020A", SST_ID,		SST_39SF020,	NULL, 256, 4096,
-	 probe_jedec,	erase_chip_jedec, write_39sf020,NULL},
-	{"SST39SF040",  SST_ID,		SST_39SF040,	NULL, 512, 4096,
-	 probe_jedec,	erase_chip_jedec, write_39sf020,NULL},
-	{"SST39VF020",	SST_ID,		SST_39VF020,	NULL, 256, 4096,
-	 probe_jedec,	erase_chip_jedec, write_39sf020,NULL},
+	{"Am29F040B",	AMD_ID, 	AM_29F040B,	512, 64 * 1024,
+	 probe_29f040b, erase_29f040b,	write_29f040b},
+	{"Am29F016D",	AMD_ID, 	AM_29F016D,	2048, 64 * 1024,
+	 probe_29f040b, erase_29f040b,	write_29f040b},
+	{"AE49F2008",	ASD_ID,	        ASD_AE49F2008,	256, 128,
+	 probe_jedec,	erase_chip_jedec, write_jedec},
+	{"At29C040A",	ATMEL_ID,	AT_29C040A,	512, 256,
+	 probe_jedec,	erase_chip_jedec, write_jedec},
+	{"At29C020",	ATMEL_ID,	AT_29C020,	256, 256,
+	 probe_jedec,	erase_chip_jedec, write_jedec},
+	{"Mx29f002",	MX_ID,		MX_29F002,	256, 64 * 1024,
+	 probe_29f002,	erase_29f002, 	write_29f002},
+	{"SST29EE020A", SST_ID,		SST_29EE020A,	256, 128,
+	 probe_jedec,	erase_chip_jedec, write_jedec},
+	{"SST28SF040A", SST_ID,		SST_28SF040,	512, 256,
+	 probe_28sf040, erase_28sf040, write_28sf040},
+	{"SST39SF010A", SST_ID,		SST_39SF010,	128, 4096,
+	 probe_jedec,	erase_chip_jedec, write_39sf020},
+	{"SST39SF020A", SST_ID,		SST_39SF020,	256, 4096,
+	 probe_jedec,	erase_chip_jedec, write_39sf020},
+	{"SST39SF040",  SST_ID,		SST_39SF040,	512, 4096,
+	 probe_jedec,	erase_chip_jedec, write_39sf020},
+	{"SST39VF020",	SST_ID,		SST_39VF020,	256, 4096,
+	 probe_jedec,	erase_chip_jedec, write_39sf020},
 // assume similar to 004B, ignoring data sheet
-	{"SST49LF040B",	SST_ID,		SST_49LF040B, 	NULL, 512, 64 * 1024,
-	 probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub,NULL},
+	{"SST49LF040B",	SST_ID,		SST_49LF040B, 	512, 64 * 1024,
+	 probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
 
-	{"SST49LF040",	SST_ID,		SST_49LF040, 	NULL, 512, 4096,
-	 probe_jedec, 	erase_49lf040, write_49lf040,NULL},
-	{"SST49LF020A",	SST_ID,		SST_49LF020A, 	NULL, 256, 16 * 1024,
-	 probe_jedec, 	erase_49lf040, write_49lf040,NULL},
-	{"SST49LF080A",	SST_ID,		SST_49LF080A,	NULL, 1024, 4096,
-	 probe_jedec,	erase_49lf040, write_49lf040,NULL},
-	{"SST49LF002A/B", SST_ID,	SST_49LF002A,	NULL, 256, 16 * 1024,
-	 probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub, NULL},
-	{"SST49LF003A/B", SST_ID,	SST_49LF003A,	NULL, 384, 64 * 1024,
-	 probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub,NULL},
-	{"SST49LF004A/B", SST_ID,	SST_49LF004A,	NULL, 512, 64 * 1024,
-	 probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub,NULL},
-	{"SST49LF008A", SST_ID,		SST_49LF008A, 	NULL, 1024, 64 * 1024 ,
-	 probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub, NULL},
-	{"Pm49FL002",	PMC_ID,		PMC_49FL002,	NULL, 256, 16 * 1024,
-	 probe_jedec,	erase_chip_jedec, write_49fl004,NULL},
-	{"SST49LF004C", SST_ID,	SST_49LF004C,	NULL, 512, 4 * 1024,
-	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc,NULL},
-	{"SST49LF008C", SST_ID,		SST_49LF008C, 	NULL, 1024, 4 * 1024 ,
-	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc, NULL},
-	{"SST49LF016C", SST_ID,		SST_49LF016C, 	NULL, 2048, 4 * 1024 ,
-	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc, NULL},
-	{"SST49LF160C", SST_ID,		SST_49LF160C, 	NULL, 2048, 4 * 1024 ,
-	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc, NULL},
-	{"Pm49FL004",	PMC_ID,		PMC_49FL004,	NULL, 512, 64 * 1024,
-	 probe_jedec,	erase_chip_jedec, write_49fl004,NULL},
-	{"W29C011",	WINBOND_ID,	W_29C011,	NULL, 128, 128,
-	 probe_jedec,	erase_chip_jedec, write_jedec,	NULL},
-	{"W29C020C", 	WINBOND_ID, 	W_29C020C,	NULL, 256, 128,
-	 probe_jedec, 	erase_chip_jedec, write_jedec,	NULL},
-	{"W49F002U", 	WINBOND_ID, 	W_49F002U,	NULL, 256, 128,
-	 probe_jedec,	erase_chip_jedec, write_49f002, NULL},
-	{"W49V002A", 	WINBOND_ID, 	W_49V002A,	NULL, 256, 128,
-	 probe_jedec,	erase_chip_jedec, write_49f002, NULL},
-	{"W49V002FA", 	WINBOND_ID, 	W_49V002FA,	NULL, 256, 128,
-	 probe_jedec,	erase_chip_jedec, write_49f002, NULL},
-	{"W39V040FA", 	WINBOND_ID, 	W_39V040FA,	NULL, 512, 64*1024,
-	 probe_jedec,	erase_chip_jedec, write_39sf020, NULL},
-	{"W39V040A", 	WINBOND_ID, 	W_39V040A,	NULL, 512, 64*1024,
-	 probe_jedec,	erase_chip_jedec, write_39sf020, NULL},
-	{"W39V040B",    WINBOND_ID,     W_39V040B,      NULL, 512, 64*1024,
-	 probe_jedec,   erase_chip_jedec, write_39sf020, NULL},
-	{"W39V080A", 	WINBOND_ID, 	W_39V080A,	NULL, 1024, 64*1024,
-	 probe_jedec,	erase_chip_jedec, write_39sf020, NULL},
-	{"M29F002B",	ST_ID, 		ST_M29F002B,	NULL, 256, 64 * 1024,
-	 probe_jedec,	erase_chip_jedec, write_jedec,	NULL},
-	{"M29F002T/NT",	ST_ID, 		ST_M29F002T,	NULL, 256, 64 * 1024,
-	 probe_jedec,	erase_chip_jedec, write_jedec,	NULL},
-	{"M29F400BT",	ST_ID,		ST_M29F400BT,	NULL, 512, 64 * 1024,
-	 probe_m29f400bt, erase_m29f400bt, write_linuxbios_m29f400bt, NULL},
-	{"M29F040B",	ST_ID, 		ST_M29F040B,	NULL, 512, 64 * 1024,
-	 probe_29f040b, erase_29f040b,	write_29f040b,	NULL},
-	{"82802ab",	137,		173,		NULL, 512, 64 * 1024,
-	 probe_82802ab, erase_82802ab,	write_82802ab,	NULL},
-	{"82802ac",	137,		172,		NULL, 1024, 64 * 1024,
-	 probe_82802ab, erase_82802ab,	write_82802ab,	NULL},
-	{"F49B002UA",   EMST_ID,        EMST_F49B002UA, NULL, 256, 4096,
-         probe_jedec,   erase_chip_jedec, write_49f002, NULL},
+	{"SST49LF040",	SST_ID,		SST_49LF040, 	512, 4096,
+	 probe_jedec, 	erase_49lf040, write_49lf040},
+	{"SST49LF020A",	SST_ID,		SST_49LF020A, 	256, 16 * 1024,
+	 probe_jedec, 	erase_49lf040, write_49lf040},
+	{"SST49LF080A",	SST_ID,		SST_49LF080A,	1024, 4096,
+	 probe_jedec,	erase_49lf040, write_49lf040},
+	{"SST49LF002A/B", SST_ID,	SST_49LF002A,	256, 16 * 1024,
+	 probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
+	{"SST49LF003A/B", SST_ID,	SST_49LF003A,	384, 64 * 1024,
+	 probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
+	{"SST49LF004A/B", SST_ID,	SST_49LF004A,	512, 64 * 1024,
+	 probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
+	{"SST49LF008A", SST_ID,		SST_49LF008A, 	1024, 64 * 1024 ,
+	 probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
+	{"Pm49FL002",	PMC_ID,		PMC_49FL002,	256, 16 * 1024,
+	 probe_jedec,	erase_chip_jedec, write_49fl004},
+	{"SST49LF004C", SST_ID,		SST_49LF004C,	512, 4 * 1024,
+	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
+	{"SST49LF008C", SST_ID,		SST_49LF008C, 	1024, 4 * 1024 ,
+	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
+	{"SST49LF016C", SST_ID,		SST_49LF016C, 	2048, 4 * 1024 ,
+	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
+	{"SST49LF160C", SST_ID,		SST_49LF160C, 	2048, 4 * 1024 ,
+	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
+	{"Pm49FL004",	PMC_ID,		PMC_49FL004,	512, 64 * 1024,
+	 probe_jedec,	erase_chip_jedec, write_49fl004},
+	{"W29C011",	WINBOND_ID,	W_29C011,	128, 128,
+	 probe_jedec,	erase_chip_jedec, write_jedec},
+	{"W29C020C", 	WINBOND_ID, 	W_29C020C,	256, 128,
+	 probe_jedec, 	erase_chip_jedec, write_jedec},
+	{"W49F002U", 	WINBOND_ID, 	W_49F002U,	256, 128,
+	 probe_jedec,	erase_chip_jedec, write_49f002},
+	{"W49V002A", 	WINBOND_ID, 	W_49V002A,	256, 128,
+	 probe_jedec,	erase_chip_jedec, write_49f002},
+	{"W49V002FA", 	WINBOND_ID, 	W_49V002FA,	256, 128,
+	 probe_jedec,	erase_chip_jedec, write_49f002},
+	{"W39V040FA", 	WINBOND_ID, 	W_39V040FA,	512, 64*1024,
+	 probe_jedec,	erase_chip_jedec, write_39sf020},
+	{"W39V040A", 	WINBOND_ID, 	W_39V040A,	512, 64*1024,
+	 probe_jedec,	erase_chip_jedec, write_39sf020},
+	{"W39V040B",    WINBOND_ID,     W_39V040B,      512, 64*1024,
+	 probe_jedec,   erase_chip_jedec, write_39sf020},
+	{"W39V080A", 	WINBOND_ID, 	W_39V080A,	1024, 64*1024,
+	 probe_jedec,	erase_chip_jedec, write_39sf020},
+	{"M29F002B",	ST_ID, 		ST_M29F002B,	256, 64 * 1024,
+	 probe_jedec,	erase_chip_jedec, write_jedec},
+	{"M29F002T/NT",	ST_ID, 		ST_M29F002T,	256, 64 * 1024,
+	 probe_jedec,	erase_chip_jedec, write_jedec},
+	{"M29F400BT",	ST_ID,		ST_M29F400BT,	512, 64 * 1024,
+	 probe_m29f400bt, erase_m29f400bt, write_linuxbios_m29f400bt},
+	{"M29F040B",	ST_ID, 		ST_M29F040B,	512, 64 * 1024,
+	 probe_29f040b, erase_29f040b,	write_29f040b},
+	{"82802ab",	137,		173,		512, 64 * 1024,
+	 probe_82802ab, erase_82802ab,	write_82802ab},
+	{"82802ac",	137,		172,		1024, 64 * 1024,
+	 probe_82802ab, erase_82802ab,	write_82802ab},
+	{"F49B002UA",   EMST_ID,        EMST_F49B002UA, 256, 4096,
+         probe_jedec,   erase_chip_jedec, write_49f002},
 #ifndef DISABLE_DOC
 	{"MD-2802 (M-Systems DiskOnChip Millennium Module)",
-	 MSYSTEMS_ID, MSYSTEMS_MD2802,
-	 NULL, 8, 8 * 1024,
+	 		MSYSTEMS_ID,	MSYSTEMS_MD2802,8, 8 * 1024,
 	 probe_md2802, erase_md2802, write_md2802, read_md2802},
 #endif
-	{"LHF00L04",	SHARP_ID,		SHARP_LHF00L04,		NULL, 1024, 64 * 1024,
-	 probe_lhf00l04, erase_lhf00l04,	write_lhf00l04,	NULL},
-	{"S29C51001T", 	SYNCMOS_ID, 	S29C51001T,	NULL, 128, 128,
-	 probe_jedec,	erase_chip_jedec, write_49f002, NULL},
-	{"S29C51002T", 	SYNCMOS_ID, 	S29C51002T,	NULL, 256, 128,
-	 probe_jedec,	erase_chip_jedec, write_49f002, NULL},
-	{"S29C51004T", 	SYNCMOS_ID, 	S29C51004T,	NULL, 512, 128,
-	 probe_jedec,	erase_chip_jedec, write_49f002, NULL},
-	{"S29C31004T", 	SYNCMOS_ID, 	S29C31004T,	NULL, 512, 128,
-	 probe_jedec,	erase_chip_jedec, write_49f002, NULL},
+	{"LHF00L04",	SHARP_ID,	SHARP_LHF00L04,	1024, 64 * 1024,
+	 probe_lhf00l04, erase_lhf00l04,  write_lhf00l04},
+	{"S29C51001T", 	SYNCMOS_ID, 	S29C51001T,	128, 128,
+	 probe_jedec,	erase_chip_jedec, write_49f002},
+	{"S29C51002T", 	SYNCMOS_ID, 	S29C51002T,	256, 128,
+	 probe_jedec,	erase_chip_jedec, write_49f002},
+	{"S29C51004T", 	SYNCMOS_ID, 	S29C51004T,	512, 128,
+	 probe_jedec,	erase_chip_jedec, write_49f002},
+	{"S29C31004T", 	SYNCMOS_ID, 	S29C31004T,	512, 128,
+	 probe_jedec,	erase_chip_jedec, write_49f002},
 	{NULL,}
 };
 
diff --git a/flashrom.c b/flashrom.c
index cf895a0..cd97dda 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -139,7 +139,7 @@
 			perror("Error: Can't mmap " MEM_DEV ".");
 			exit(1);
 		}
-		flash->virt_addr = bios;
+		flash->virtual_memory = bios;
 
 		if (flash->probe(flash) == 1) {
 			printf("%s found at physical address: 0x%lx\n",
@@ -157,7 +157,7 @@
 {
 	int idx;
 	int total_size = flash->total_size * 1024;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	printf("Verifying flash ");
 
@@ -388,7 +388,7 @@
 		}
 		printf("Reading Flash...");
 		if (flash->read == NULL)
-			memcpy(buf, (const char *)flash->virt_addr, size);
+			memcpy(buf, (const char *)flash->virtual_memory, size);
 		else
 			flash->read(flash, buf);
 
@@ -430,7 +430,7 @@
 	// ////////////////////////////////////////////////////////////
 	if (exclude_end_position - exclude_start_position > 0)
 		memcpy(buf + exclude_start_position,
-		       (const char *)flash->virt_addr + exclude_start_position,
+		       (const char *)flash->virtual_memory + exclude_start_position,
 		       exclude_end_position - exclude_start_position);
 
 	exclude_start_page = exclude_start_position / flash->page_size;
@@ -442,7 +442,7 @@
 
 	// This should be moved into each flash part's code to do it 
 	// cleanly. This does the job.
-	handle_romentries(buf, (uint8_t *) flash->virt_addr);
+	handle_romentries(buf, (uint8_t *) flash->virtual_memory);
 
 	// ////////////////////////////////////////////////////////////
 
diff --git a/jedec.c b/jedec.c
index 41fda42..c4afadf 100644
--- a/jedec.c
+++ b/jedec.c
@@ -35,7 +35,7 @@
 
 int probe_jedec(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 	uint8_t id1, id2;
 
 	/* Issue JEDEC Product ID Entry command */
@@ -113,7 +113,7 @@
 
 int erase_chip_jedec(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	/*  Issue the JEDEC Chip Erase command   */
 	*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
@@ -230,7 +230,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	erase_chip_jedec(flash);
 	// dumb check if erase was successful.
diff --git a/m29f400bt.c b/m29f400bt.c
index 26809d1..86f9f96 100644
--- a/m29f400bt.c
+++ b/m29f400bt.c
@@ -29,7 +29,7 @@
 
 int probe_m29f400bt(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 	uint8_t id1, id2;
 
 	*(volatile uint8_t *)(bios + 0xAAA) = 0xAA;
@@ -57,7 +57,7 @@
 
 int erase_m29f400bt(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	*(volatile uint8_t *)(bios + 0xAAA) = 0xAA;
 	*(volatile uint8_t *)(bios + 0x555) = 0x55;
@@ -96,7 +96,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	//erase_m29f400bt (flash);
 	printf("Programming Page:\n ");
@@ -148,7 +148,7 @@
 
 int write_linuxbios_m29f400bt(struct flashchip *flash, uint8_t *buf)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	printf("Programming Page:\n ");
 	/*********************************
diff --git a/msys_doc.c b/msys_doc.c
index 04c5604..64bc87e 100644
--- a/msys_doc.c
+++ b/msys_doc.c
@@ -33,7 +33,7 @@
 
 int probe_md2802(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 	uint8_t chipid;
 #ifndef MSYSTEMS_DOC_NO_55AA_CHECKING
 	uint8_t id_0x55, id_0xAA;
@@ -149,7 +149,7 @@
 
 int erase_md2802(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	return (1);
 	*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
@@ -166,7 +166,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	return (1);
 	erase_md2802(flash);
diff --git a/mx29f002.c b/mx29f002.c
index 8535474..db5f31b 100644
--- a/mx29f002.c
+++ b/mx29f002.c
@@ -33,7 +33,7 @@
 
 int probe_29f002(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 	uint8_t id1, id2;
 
 	*(bios + 0x5555) = 0xAA;
@@ -56,7 +56,7 @@
 
 int erase_29f002(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	*(bios + 0x555) = 0xF0;
 	*(bios + 0x555) = 0xAA;
@@ -89,7 +89,7 @@
 {
 	int i;
 	int total_size = flash->total_size * 1024;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 	volatile uint8_t *dst = bios;
 
 	*bios = 0xF0;
diff --git a/pm49fl004.c b/pm49fl004.c
index 9995177..b50fa25 100644
--- a/pm49fl004.c
+++ b/pm49fl004.c
@@ -34,7 +34,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	printf("Programming Page: ");
 	for (i = 0; i < total_size / page_size; i++) {
diff --git a/sharplhf00l04.c b/sharplhf00l04.c
index 5be1cbc..fd3a714 100644
--- a/sharplhf00l04.c
+++ b/sharplhf00l04.c
@@ -47,10 +47,12 @@
 
 int probe_lhf00l04(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
+	volatile uint8_t *registers;
 	uint8_t id1, id2;
 
 #if 0
+	/* Enter ID mode */
 	*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
 	*(volatile uint8_t *)(bios + 0x2AAA) = 0x55;
 	*(volatile uint8_t *)(bios + 0x5555) = 0x90;
@@ -64,12 +66,11 @@
 	id1 = *(volatile uint8_t *)bios;
 	id2 = *(volatile uint8_t *)(bios + 0x01);
 
-#if 1
+	/* Leave ID mode */
 	*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
 	*(volatile uint8_t *)(bios + 0x2AAA) = 0x55;
 	*(volatile uint8_t *)(bios + 0x5555) = 0xF0;
 
-#endif
 	myusec_delay(10);
 
 	printf_debug("%s: id1 0x%x, id2 0x%x\n", __FUNCTION__, id1, id2);
@@ -77,15 +78,15 @@
 	if (id1 == flash->manufacture_id && id2 == flash->model_id) {
 		size_t size = flash->total_size * 1024;
 		// we need to mmap the write-protect space. 
-		bios = mmap(0, size, PROT_WRITE | PROT_READ, MAP_SHARED,
+		registers = mmap(0, size, PROT_WRITE | PROT_READ, MAP_SHARED,
 			    fd_mem, (off_t) (0 - 0x400000 - size));
-		if (bios == MAP_FAILED) {
+		if (registers == MAP_FAILED) {
 			// it's this part but we can't map it ...
 			perror("Error MMAP /dev/mem");
 			exit(1);
 		}
 
-		flash->virt_addr_2 = bios;
+		flash->virtual_registers = registers;
 		printf("bios %p, *bios 0x%x, bios[1] 0x%x\n", bios, *bios,
 		       bios[1]);
 		return 1;
@@ -124,14 +125,14 @@
 }
 int erase_lhf00l04_block(struct flashchip *flash, int offset)
 {
-	volatile uint8_t *bios = flash->virt_addr + offset;
-	volatile uint8_t *wrprotect = flash->virt_addr_2 + offset + 2;
+	volatile uint8_t *bios = flash->virtual_memory + offset;
+	volatile uint8_t *wrprotect = flash->virtual_registers + offset + 2;
 	uint8_t status;
 
 	// clear status register
 	*bios = 0x50;
 	printf("Erase at %p\n", bios);
-	status = wait_lhf00l04(flash->virt_addr);
+	status = wait_lhf00l04(flash->virtual_memory);
 	print_lhf00l04_status(status);
 	// clear write protect
 	printf("write protect is at %p\n", (wrprotect));
@@ -144,7 +145,7 @@
 	*(volatile uint8_t *)(bios) = 0xd0;
 	myusec_delay(10);
 	// now let's see what the register is
-	status = wait_lhf00l04(flash->virt_addr);
+	status = wait_lhf00l04(flash->virtual_memory);
 	print_lhf00l04_status(status);
 	printf("DONE BLOCK 0x%x\n", offset);
 	return (0);
@@ -181,7 +182,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	erase_lhf00l04(flash);
 	if (*bios != 0xff) {
diff --git a/sst28sf040.c b/sst28sf040.c
index 7b3db15..31d1e9c 100644
--- a/sst28sf040.c
+++ b/sst28sf040.c
@@ -105,7 +105,7 @@
 
 int probe_28sf040(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 	uint8_t id1, id2, tmp;
 
 	/* save the value at the beginning of the Flash */
@@ -134,7 +134,7 @@
 
 int erase_28sf040(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	unprotect_28sf040(bios);
 	*bios = CHIP_ERASE;
@@ -152,7 +152,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	unprotect_28sf040(bios);
 
diff --git a/sst39sf020.c b/sst39sf020.c
index 9c71659..1277f10 100644
--- a/sst39sf020.c
+++ b/sst39sf020.c
@@ -52,7 +52,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	erase_chip_jedec(flash);
 
diff --git a/sst49lf040.c b/sst49lf040.c
index 0d31d82..3abb423 100644
--- a/sst49lf040.c
+++ b/sst49lf040.c
@@ -34,7 +34,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	for (i = 0; i < total_size / page_size; i++) {
 		/* Chip erase only works in parallel programming mode
@@ -49,7 +49,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	printf("Programming Page: ");
 	for (i = 0; i < total_size / page_size; i++) {
diff --git a/sst49lfxxxc.c b/sst49lfxxxc.c
index 52f865a..efa2a61 100644
--- a/sst49lfxxxc.c
+++ b/sst49lfxxxc.c
@@ -132,7 +132,9 @@
 
 int probe_49lfxxxc(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
+	volatile uint8_t *registers;
+
 	uint8_t id1, id2;
 	size_t size = flash->total_size * 1024;
 
@@ -148,25 +150,25 @@
 	if (!(id1 == flash->manufacture_id && id2 == flash->model_id))
 		return 0;
 
-	bios = mmap(0, size, PROT_WRITE | PROT_READ, MAP_SHARED,
+	registers = mmap(0, size, PROT_WRITE | PROT_READ, MAP_SHARED,
 		    fd_mem, (off_t) (0xFFFFFFFF - 0x400000 - size + 1));
-	if (bios == MAP_FAILED) {
+	if (registers == MAP_FAILED) {
 		// it's this part but we can't map it ...
 		perror("Error MMAP /dev/mem");
 		exit(1);
 	}
-	flash->virt_addr_2 = bios;
+	flash->virtual_registers = registers;
 	return 1;
 }
 
 int erase_49lfxxxc(struct flashchip *flash)
 {
-	volatile uint8_t *bios = flash->virt_addr;
-	volatile uint8_t *bios2 = flash->virt_addr_2;
+	volatile uint8_t *bios = flash->virtual_memory;
+	volatile uint8_t *registers = flash->virtual_registers;
 	int i;
 	unsigned int total_size = flash->total_size * 1024;
 
-	write_lockbits_49lfxxxc(bios2, total_size, 0);
+	write_lockbits_49lfxxxc(registers, total_size, 0);
 	for (i = 0; i < total_size; i += flash->page_size)
 		if (erase_sector_49lfxxxc(bios, i) != 0)
 			return (-1);
@@ -180,9 +182,9 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
-	write_lockbits_49lfxxxc(flash->virt_addr_2, total_size, 0);
+	write_lockbits_49lfxxxc(flash->virtual_registers, total_size, 0);
 	printf("Programming Page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		/* erase the page before programming */
diff --git a/sst_fwhub.c b/sst_fwhub.c
index 530f726..72a8453 100644
--- a/sst_fwhub.c
+++ b/sst_fwhub.c
@@ -46,33 +46,33 @@
 /* probe_jedec works fine for probing */
 int probe_sst_fwhub(struct flashchip *flash)
 {
-	volatile uint8_t *bios;
+	volatile uint8_t *registers;
 	size_t size = flash->total_size * 1024;
 
 	if (probe_jedec(flash) == 0)
 		return 0;
 
-	bios = mmap(0, size, PROT_WRITE | PROT_READ, MAP_SHARED,
+	registers = mmap(0, size, PROT_WRITE | PROT_READ, MAP_SHARED,
 		    fd_mem, (off_t) (0xFFFFFFFF - 0x400000 - size + 1));
-	if (bios == MAP_FAILED) {
+	if (registers == MAP_FAILED) {
 		// it's this part but we can't map it ...
 		perror("Error MMAP /dev/mem");
 		exit(1);
 	}
 
-	flash->virt_addr_2 = bios;
+	flash->virtual_registers = registers;
 	return 1;
 }
 
 int erase_sst_fwhub_block(struct flashchip *flash, int offset)
 {
-	volatile uint8_t *wrprotect = flash->virt_addr_2 + offset + 2;
+	volatile uint8_t *wrprotect = flash->virtual_registers + offset + 2;
 
 	// clear write protect
 	*(wrprotect) = 0;
 
-	erase_block_jedec(flash->virt_addr, offset);
-	toggle_ready_jedec(flash->virt_addr);
+	erase_block_jedec(flash->virtual_memory, offset);
+	toggle_ready_jedec(flash->virtual_memory);
 
 	return (0);
 }
@@ -92,7 +92,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	// FIXME: We want block wide erase instead of ironing the whole chip
 	erase_sst_fwhub(flash);
diff --git a/w49f002u.c b/w49f002u.c
index 9a698ae..2549501 100644
--- a/w49f002u.c
+++ b/w49f002u.c
@@ -36,7 +36,7 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	volatile uint8_t *bios = flash->virt_addr;
+	volatile uint8_t *bios = flash->virtual_memory;
 
 	erase_chip_jedec(flash);
 
