diff --git a/82802ab.c b/82802ab.c
index b274d56..58d3467 100644
--- a/82802ab.c
+++ b/82802ab.c
@@ -190,7 +190,6 @@
 				   bios + i * page_size, page_size);
 	}
 	printf("\n");
-	protect_jedec(bios);
 	free(tmpbuf);
 
 	return 0;
diff --git a/flash.h b/flash.h
index 008af28..1a1d8f8 100644
--- a/flash.h
+++ b/flash.h
@@ -647,8 +647,7 @@
 uint8_t oddparity(uint8_t val);
 void toggle_ready_jedec(chipaddr dst);
 void data_polling_jedec(chipaddr dst, uint8_t data);
-void unprotect_jedec(chipaddr bios);
-void protect_jedec(chipaddr bios);
+void start_program_jedec(chipaddr bios);
 int write_byte_program_jedec(chipaddr bios, uint8_t *src,
 			     chipaddr dst);
 int probe_jedec(struct flashchip *flash);
diff --git a/jedec.c b/jedec.c
index f352c6b..0a5eda0 100644
--- a/jedec.c
+++ b/jedec.c
@@ -64,25 +64,11 @@
 	}
 }
 
-void unprotect_jedec(chipaddr bios)
-{
-	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(0x20, bios + 0x5555);
-
-	programmer_delay(200);
-}
-
-void protect_jedec(chipaddr bios)
+void start_program_jedec(chipaddr bios)
 {
 	chip_writeb(0xAA, bios + 0x5555);
 	chip_writeb(0x55, bios + 0x2AAA);
 	chip_writeb(0xA0, bios + 0x5555);
-
-	programmer_delay(200);
 }
 
 int probe_jedec(struct flashchip *flash)
@@ -270,9 +256,7 @@
 
 retry:
 	/* Issue JEDEC Data Unprotect comand */
-	chip_writeb(0xAA, bios + 0x5555);
-	chip_writeb(0x55, bios + 0x2AAA);
-	chip_writeb(0xA0, bios + 0x5555);
+	start_program_jedec(bios);
 
 	/* transfer data from source to destination */
 	for (i = 0; i < page_size; i++) {
@@ -312,9 +296,7 @@
 
 retry:
 	/* Issue JEDEC Byte Program command */
-	chip_writeb(0xAA, bios + 0x5555);
-	chip_writeb(0x55, bios + 0x2AAA);
-	chip_writeb(0xA0, bios + 0x5555);
+	start_program_jedec(bios);
 
 	/* transfer data from source to destination */
 	chip_writeb(*src, dst);
@@ -353,7 +335,6 @@
 	int i, failed = 0;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	chipaddr bios = flash->virtual_memory;
 
 	if (erase_chip_jedec(flash)) {
 		fprintf(stderr,"ERASE FAILED!\n");
@@ -369,7 +350,6 @@
 		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_jedec(bios);
 
 	return failed;
 }
diff --git a/m29f400bt.c b/m29f400bt.c
index 28e5da4..5c36db9 100644
--- a/m29f400bt.c
+++ b/m29f400bt.c
@@ -20,15 +20,6 @@
 
 #include "flash.h"
 
-void protect_m29f400bt(chipaddr bios)
-{
-	chip_writeb(0xAA, bios + 0xAAA);
-	chip_writeb(0x55, bios + 0x555);
-	chip_writeb(0xA0, bios + 0xAAA);
-
-	programmer_delay(200);
-}
-
 void write_page_m29f400bt(chipaddr bios, uint8_t *src,
 			  chipaddr dst, int page_size)
 {
@@ -194,7 +185,6 @@
 	write_page_m29f400bt(bios, buf + 0x7c000, bios + 0x7c000, 16 * 1024);
 
 	printf("\n");
-	//protect_m29f400bt (bios);
 
 	return 0;
 }
@@ -248,7 +238,6 @@
 	write_page_m29f400bt(bios, buf + 0x30000, bios + 0x30000, 64 * 1024);
 
 	printf("\n");
-	//protect_m29f400bt (bios);
 
 	return 0;
 }
diff --git a/sharplhf00l04.c b/sharplhf00l04.c
index c4c0f03..1234ae4 100644
--- a/sharplhf00l04.c
+++ b/sharplhf00l04.c
@@ -179,7 +179,6 @@
 		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_jedec(bios);
 
 	return 0;
 }
diff --git a/stm50flw0x0x.c b/stm50flw0x0x.c
index 44819e5..0ae6eb8 100644
--- a/stm50flw0x0x.c
+++ b/stm50flw0x0x.c
@@ -31,15 +31,6 @@
 #include "flash.h"
 #include "flashchips.h"
 
-void protect_stm50flw0x0x(chipaddr bios)
-{
-	chip_writeb(0xAA, bios + 0x5555);
-	chip_writeb(0x55, bios + 0x2AAA);
-	chip_writeb(0xA0, bios + 0x5555);
-
-	programmer_delay(200);
-}
-
 int probe_stm50flw0x0x(struct flashchip *flash)
 {
 	int result = probe_jedec(flash);
@@ -189,7 +180,6 @@
 	int i;
 	int total_size = flash->total_size * 1024;
 	int page_size = flash->page_size;
-	chipaddr bios = flash->virtual_memory;
 
 	printf("Erasing page:\n");
 	for (i = 0; i < total_size / page_size; i++) {
@@ -206,7 +196,6 @@
 		}
 	}
 	printf("\n");
-	protect_stm50flw0x0x(bios);
 
 	return 0;
 }
@@ -250,7 +239,6 @@
 					bios + i * page_size, page_size);
 	}
 	printf("\n");
-	protect_stm50flw0x0x(bios);
 	free(tmpbuf);
 
 	return rc;
