diff --git a/chipdrivers.h b/chipdrivers.h
index e04b6c0..64c8845 100644
--- a/chipdrivers.h
+++ b/chipdrivers.h
@@ -122,9 +122,6 @@
 int printlock_w39v040c(struct flashchip *flash);
 
 /* w39V080fa.c */
-int probe_winbond_fwhub(struct flashchip *flash);
-int erase_winbond_fwhub(struct flashchip *flash);
-int write_winbond_fwhub(struct flashchip *flash, uint8_t *buf);
 int unlock_winbond_fwhub(struct flashchip *flash);
 
 /* w29ee011.c */
diff --git a/w39v080fa.c b/w39v080fa.c
index 0163766..047f86b 100644
--- a/w39v080fa.c
+++ b/w39v080fa.c
@@ -111,69 +111,3 @@
 
 	return 0;
 }
-
-static int erase_sector_winbond_fwhub(struct flashchip *flash,
-				      unsigned int sector)
-{
-	chipaddr bios = flash->virtual_memory;
-	/* Remember: too much sleep can waste your day. */
-
-	printf("0x%08x\b\b\b\b\b\b\b\b\b\b", sector);
-
-	/* Sector Erase */
-	chip_writeb(0xAA, bios + 0x5555);
-	chip_writeb(0x55, bios + 0x2AAA);
-	chip_writeb(0x80, bios + 0x5555);
-
-	chip_writeb(0xAA, bios + 0x5555);
-	chip_writeb(0x55, bios + 0x2AAA);
-	chip_writeb(0x30, bios + sector);
-
-	/* wait for Toggle bit ready */
-	toggle_ready_jedec(bios);
-
-	if (check_erased_range(flash, sector, flash->page_size)) {
-		fprintf(stderr, "ERASE FAILED!\n");
-		return -1;
-	}
-	return 0;
-}
-
-int erase_winbond_fwhub(struct flashchip *flash)
-{
-	int i, total_size = flash->total_size * 1024;
-
-	unlock_winbond_fwhub(flash);
-
-	printf("Erasing:     ");
-
-	for (i = 0; i < total_size; i += flash->page_size) {
-		if (erase_sector_winbond_fwhub(flash, i)) {
-			fprintf(stderr, "ERASE FAILED!\n");
-			return -1;
-		}
-	}
-
-	printf("\n");
-
-	return 0;
-}
-
-int write_winbond_fwhub(struct flashchip *flash, uint8_t *buf)
-{
-	int i;
-	int total_size = flash->total_size * 1024;
-	chipaddr bios = flash->virtual_memory;
-
-	if (erase_winbond_fwhub(flash))
-		return -1;
-
-	printf("Programming: ");
-	for (i = 0; i < total_size; i += flash->page_size) {
-		printf("0x%08x\b\b\b\b\b\b\b\b\b\b", i);
-		write_sector_jedec_common(flash, buf + i, bios + i, flash->page_size, 0xffff);
-	}
-	printf("\n");
-
-	return 0;
-}
