diff --git a/Makefile b/Makefile
index 18a6396..f4e2769 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,5 @@
-OBJS = jedec.o sst28sf040.o am29f040b.o mx29f002.c sst39sf020.o m29f400bt.o
+OBJS = jedec.o sst28sf040.o am29f040b.o mx29f002.c sst39sf020.o m29f400bt.o \
+	w49f002u.o
 OBJS += 82802ab.o
 CC = gcc -O2 -g
 
diff --git a/flash.h b/flash.h
index f30ab67..6c735fb 100644
--- a/flash.h
+++ b/flash.h
@@ -34,6 +34,7 @@
 
 #define WINBOND_ID        0xDA	/* Winbond Manufacture ID code	*/
 #define W_29C020C         0x45	/* Winbond w29c020c device code*/
+#define W_49F002U         0x0B	/* Winbond w29c020c device code*/
 
 #define ST_ID       	  0x20	
 #define ST_M29F400BT      0xD5
@@ -53,3 +54,7 @@
 extern int probe_29f002 (struct flashchip * flash);
 extern int erase_29f002 (struct flashchip * flash);
 extern int write_29f002 (struct flashchip * flash, char * buf);
+
+extern int probe_49f002 (struct flashchip * flash);
+extern int erase_49f002 (struct flashchip * flash);
+extern int write_49f002 (struct flashchip * flash, char * buf);
diff --git a/flash_rom.c b/flash_rom.c
index 85a016a..08841f6 100644
--- a/flash_rom.c
+++ b/flash_rom.c
@@ -55,6 +55,8 @@
      probe_39sf020, erase_39sf020, write_39sf020},
     {"W29C020C",    WINBOND_ID, W_29C020C,    NULL, 256, 128,
      probe_jedec,   erase_jedec,   write_jedec},
+    {"W49F002U",    WINBOND_ID, W_49F002U,    NULL, 256, 128,
+     probe_49f002,   erase_49f002,   write_49f002},
     {"M29F400BT",   ST_ID, ST_M29F400BT ,    NULL, 512, 64*1024,
      probe_m29f400bt,   erase_m29f400bt,   write_linuxbios_m29f400bt},
     {"82802ab",   137, 173 ,    NULL, 512, 64*1024,
diff --git a/w49f002u.c b/w49f002u.c
new file mode 100644
index 0000000..887a15b
--- /dev/null
+++ b/w49f002u.c
@@ -0,0 +1,112 @@
+/*
+ * w49f002u.c: driver for Winbond 49F002U flash models
+ *
+ *
+ * Copyright 2000 Silicon Integrated System Corporation
+ *
+ *	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.
+ *
+ *	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.
+ *
+ *
+ * Reference:
+ *	W49F002U data sheet
+ *
+ * $Id
+ */
+
+#include "flash.h"
+#include "jedec.h"
+
+int probe_49f002 (struct flashchip * flash)
+{
+	volatile char * bios = flash->virt_addr;
+	unsigned char id1, id2, id3;
+
+	*(bios + 0x5555) = 0xAA;
+	*(bios + 0x2AAA) = 0x55;
+	*(bios + 0x5555) = 0x90;
+    
+	id1 = *(volatile unsigned char *) bios;
+	id2 = *(volatile unsigned char *) (bios + 0x01);
+ 
+	*bios = 0xF0;
+
+	myusec_delay(10);
+
+	printf(__FUNCTION__ "id1 %d, id2 %d\n", id1, id2);
+	if (id1 == flash->manufacture_id && id2 == flash->model_id)
+		return 1;
+
+	return 0;
+}
+
+int erase_49f002 (struct flashchip * flash)
+{
+	volatile char * bios = flash->virt_addr;
+
+ again:
+	*(bios + 0x5555) = 0xAA;
+	*(bios + 0x2AAA) = 0x55;
+	*(bios + 0x5555) = 0x80;
+	*(bios + 0x5555) = 0xAA;
+	*(bios + 0x2AAA) = 0x55;
+	*(bios + 0x5555) = 0x10;
+
+	myusec_delay(100);
+	toggle_ready_jedec(bios);
+
+	//   while ((*bios & 0x40) != 0x40)
+	//;
+
+#if 0
+	toggle_ready_jedec(bios);
+	*(bios + 0x0ffff) = 0x30;
+	*(bios + 0x1ffff) = 0x30;
+	*(bios + 0x2ffff) = 0x30;
+	*(bios + 0x37fff) = 0x30;
+	*(bios + 0x39fff) = 0x30;
+	*(bios + 0x3bfff) = 0x30;
+#endif
+
+}
+
+int write_49f002 (struct flashchip * flash, char * buf)
+{
+    int i;
+    int total_size = flash->total_size * 1024, page_size = flash->page_size;
+    volatile char * bios = flash->virt_addr;
+    volatile char * dst = bios, * src = buf;
+
+    *bios = 0xF0;
+    myusec_delay(10);
+    erase_49f002(flash);
+    //*bios = 0xF0;
+#if 1
+   printf ("Programming Page: ");
+    for (i = 0; i < total_size; i++) {
+	/* write to the sector */
+	printf ("address: 0x%08lx", i);
+	*(bios + 0x5555) = 0xAA;
+	*(bios + 0x2AAA) = 0x55;
+	*(bios + 0x5555) = 0xA0;
+	*dst++ = *buf++;
+
+	/* wait for Toggle bit ready */
+	toggle_ready_jedec(dst);
+
+	printf ("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
+    }
+#endif
+    printf("\n");
+}
