diff --git a/Makefile b/Makefile
index cdf3f31..c269229 100644
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@
 
 OBJS  = flash_enable.o udelay.o jedec.o sst28sf040.o am29f040b.o mx29f002.o  \
 	sst39sf020.o m29f400bt.o w49f002u.o 82802ab.o msys_doc.o pm49fl004.o \
-	sst49lf040.o sst_fwhub.o layout.o lbtable.o flashchips.o flash_rom.o
+	sst49lf040.o sst_fwhub.o layout.o lbtable.o flashchips.o flash_rom.o sharplhf00l04.o
 
 all: pciutils dep $(PROGRAM)
 
diff --git a/flash.h b/flash.h
index f477da5..8a6f766 100644
--- a/flash.h
+++ b/flash.h
@@ -34,6 +34,9 @@
 #define MX_ID             0xC2
 #define MX_29F002         0xB0
 
+#define SHARP_ID            0xB0
+#define SHARP_LHF00L04      0xCF
+
 #define SST_ID            0xBF	/* SST Manufacturer ID code   */
 #define SST_29EE020A      0x10	/* SST 29EE020 device code      */
 #define SST_28SF040       0x04	/* SST 29EE040 device code    */
diff --git a/flashchips.c b/flashchips.c
index 823154a..ba003bf 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -36,6 +36,7 @@
 #include "sst49lf040.h"
 #include "pm49fl004.h"
 #include "mx29f002.h"
+#include "sharplhf00l04.h"
 #include "sst_fwhub.h"
 
 struct flashchip flashchips[] = {
@@ -85,6 +86,8 @@
 	 NULL, 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},
 	{NULL,}
 };
 
diff --git a/sharplhf00l04.c b/sharplhf00l04.c
new file mode 100644
index 0000000..e7e5eed
--- /dev/null
+++ b/sharplhf00l04.c
@@ -0,0 +1,155 @@
+/*
+ * sst28sf040.c: driver for SST28SF040C flash models.
+ *
+ *
+ * Copyright 2000 Silicon Integrated System Corporation
+ * Copyright 2005 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 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:
+ *	8 MEgabit (1024K x 8) SHARP LHF00L04, data sheet
+ *
+ */
+
+#include <stdio.h>
+#include <stdint.h>
+#include "flash.h"
+#include "debug.h"
+
+
+#define AUTO_PG_ERASE1		0x20
+#define AUTO_PG_ERASE2		0xD0
+#define AUTO_PGRM		0x10
+#define CHIP_ERASE		0x30
+#define RESET			0xFF
+#define READ_ID			0x90
+
+static __inline__ void protect_lhf00l04(volatile uint8_t *bios)
+{
+	/* ask compiler not to optimize this */
+//	volatile uint8_t tmp;
+
+}
+
+static __inline__ void unprotect_lhf00l04(volatile uint8_t *bios)
+{
+	/* ask compiler not to optimize this */
+//	volatile uint8_t tmp;
+}
+
+static __inline__ int erase_sector_lhf00l04(volatile uint8_t *bios,
+					   unsigned long address)
+{
+
+	return (0);
+}
+
+static __inline__ int write_sector_lhf00l04(volatile uint8_t *bios,
+					   uint8_t *src,
+					   volatile uint8_t *dst,
+					   unsigned int page_size)
+{
+	int i;
+
+	for (i = 0; i < page_size; i++) {
+		/* transfer data from source to destination */
+		if (*src == 0xFF) {
+			dst++, src++;
+			/* If the data is 0xFF, don't program it */
+			continue;
+		}
+		/*issue AUTO PROGRAM command */
+		*dst = AUTO_PGRM;
+		*dst++ = *src++;
+
+		/* wait for Toggle bit ready */
+//		toggle_ready_jedec(bios);
+	}
+
+	return (0);
+}
+
+int probe_lhf00l04(struct flashchip *flash)
+{
+	volatile uint8_t *bios = flash->virt_addr;
+	uint8_t id1, id2, tmp;
+
+	/* save the value at the beginning of the Flash */
+	tmp = *bios;
+
+	*bios = RESET;
+	myusec_delay(10);
+
+	*bios = READ_ID;
+	myusec_delay(10);
+	id1 = *(volatile uint8_t *) bios;
+	myusec_delay(10);
+	id2 = *(volatile uint8_t *) (bios + 0x01);
+
+	*bios = RESET;
+	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)
+		return 1;
+
+	/* if there is no lhf00l04, restore the original value */
+	*bios = tmp;
+	return 0;
+}
+
+int erase_lhf00l04(struct flashchip *flash)
+{
+	volatile uint8_t *bios = flash->virt_addr;
+
+	unprotect_lhf00l04(bios);
+	*bios = CHIP_ERASE;
+	*bios = CHIP_ERASE;
+	protect_lhf00l04(bios);
+
+	myusec_delay(10);
+//	toggle_ready_jedec(bios);
+
+	return (0);
+}
+
+int write_lhf00l04(struct flashchip *flash, uint8_t *buf)
+{
+	int i;
+	int total_size = flash->total_size * 1024, page_size =
+	    flash->page_size;
+	volatile uint8_t *bios = flash->virt_addr;
+
+	unprotect_lhf00l04(bios);
+
+	printf("Programming Page: ");
+	for (i = 0; i < total_size / page_size; i++) {
+		/* erase the page before programming */
+		erase_sector_lhf00l04(bios, i * page_size);
+
+		/* write to the sector */
+		printf("%04d at address: 0x%08x", i, i * page_size);
+		write_sector_lhf00l04(bios, buf + i * page_size,
+				     bios + i * page_size, page_size);
+		printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
+	}
+	printf("\n");
+
+	protect_lhf00l04(bios);
+
+	return (0);
+}
diff --git a/sharplhf00l04.h b/sharplhf00l04.h
new file mode 100644
index 0000000..d615dfa
--- /dev/null
+++ b/sharplhf00l04.h
@@ -0,0 +1,8 @@
+#ifndef __SHARPLHF00L04_H__
+#define __SHARPLHF00L04_H__ 1
+
+extern int probe_lhf00l04(struct flashchip *flash);
+extern int erase_lhf00l04(struct flashchip *flash);
+extern int write_lhf00l04(struct flashchip *flash, uint8_t *buf);
+
+#endif				/* !__SHARPLHF00L04_H__ */
