diff --git a/chipdrivers.h b/chipdrivers.h
index 059100e852537afca15a8f50f4ff4dee3cb9b3f5..a378803907f58fbe7fb09fd633915a0a8bd65709 100644
--- a/chipdrivers.h
+++ b/chipdrivers.h
@@ -87,10 +87,8 @@ void write_page_m29f400bt(chipaddr bios, uint8_t *src,
 			  chipaddr dst, int page_size);
 
 /* pm49fl00x.c */
-int probe_49fl00x(struct flashchip *flash);
-int erase_49fl00x(struct flashchip *flash);
-int write_49fl00x(struct flashchip *flash, uint8_t *buf);
 int unlock_49fl00x(struct flashchip *flash);
+int lock_49fl00x(struct flashchip *flash);
 
 /* sharplhf00l04.c */
 int probe_lhf00l04(struct flashchip *flash);
diff --git a/flashchips.c b/flashchips.c
index 45e67c64e5d47d11a0d9a91072504f59974c54d3..5005997294904cb9623aea7203011005897172de 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -1306,7 +1306,8 @@ struct flashchip flashchips[] = {
 				.block_erase = erase_chip_block_jedec,
 			}
 		},
-		.write		= write_49fl00x,
+		.unlock		= unlock_49fl00x,
+		.write		= write_jedec_1,
 		.read		= read_memmapped,
 	},
 
@@ -3347,7 +3348,7 @@ struct flashchip flashchips[] = {
 			}
 		},
 		.unlock		= unlock_49fl00x,
-		.write		= write_49fl00x,
+		.write		= write_jedec_1,
 		.read		= read_memmapped,
 	},
 
@@ -3377,7 +3378,7 @@ struct flashchip flashchips[] = {
 			}
 		},
 		.unlock		= unlock_49fl00x,
-		.write		= write_49fl00x,
+		.write		= write_jedec_1,
 		.read		= read_memmapped,
 	},
 
diff --git a/pm49fl00x.c b/pm49fl00x.c
index 17a49f0a945a325605d557de6bc60dd0bb039dcd..5e5eec8358a145f45031c6f33d84e6f35a346e51 100644
--- a/pm49fl00x.c
+++ b/pm49fl00x.c
@@ -43,6 +43,12 @@ int unlock_49fl00x(struct flashchip *flash)
 	return 0;
 }
 
+int lock_49fl00x(struct flashchip *flash)
+{
+	write_lockbits_49fl00x(flash->virtual_registers, flash->total_size * 1024, 1, flash->page_size);
+	return 0;
+}
+
 int erase_49fl00x(struct flashchip *flash)
 {
 	int i;