diff --git a/82802ab.c b/82802ab.c
index ac42bb9453af47059faad9aec2bff16bd1b5baba..26006422d0a974287a2d7aed4c9be439a9f84a15 100644
--- a/82802ab.c
+++ b/82802ab.c
@@ -162,13 +162,7 @@ int write_page_82802ab(struct flashchip *flash, uint8_t *src, int start, int len
 
 int write_82802ab(struct flashchip *flash, uint8_t *buf)
 {
-	int i;
-
-	for (i = 0; i < flash->total_size; i++) {
-                write_page_82802ab(flash, buf + i * 1024, i * 1024, 1024);
-	}
-
-	return 0;
+	return write_page_82802ab(flash, buf, 0, flash->total_size * 1024);
 }
 
 int unlock_28f004s5(struct flashchip *flash)
diff --git a/jedec.c b/jedec.c
index 7e956e264e96fc3863101ae16db1f334f36bd32f..6146fc448807c2404e571c2873794f3993223156 100644
--- a/jedec.c
+++ b/jedec.c
@@ -411,16 +411,11 @@ int write_jedec(struct flashchip *flash, uint8_t *buf)
 
 int write_jedec_1(struct flashchip *flash, uint8_t * buf)
 {
-	int i;
 	int mask;
 
 	mask = getaddrmask(flash);
 
-	for (i = 0; i < flash->total_size; i++) {
-		write_sector_jedec_common(flash, buf + i * 1024, i * 1024, 1024, mask);
-	}
-
-	return 0;
+	return write_sector_jedec_common(flash, buf, 0, flash->total_size * 1024, mask);
 }
 
 /* erase chip with block_erase() prototype */
diff --git a/m29f400bt.c b/m29f400bt.c
index 98e07625eb0e98d7c0a9b8c0c0500f92f560ea2d..e990d9d23cf4f63d3db3c9adb87f5934e1a1c4cd 100644
--- a/m29f400bt.c
+++ b/m29f400bt.c
@@ -142,18 +142,5 @@ int block_erase_chip_m29f400bt(struct flashchip *flash, unsigned int address, un
 
 int write_m29f400bt(struct flashchip *flash, uint8_t *buf)
 {
-	int i;
-	int total_size = flash->total_size * 1024;
-	int page_size = flash->page_size;
-
-	for (i = 0; i < (total_size / page_size) - 1; i++) {
-		write_page_m29f400bt(flash, buf + i * page_size, i * page_size, page_size);
-	}
-
-	write_page_m29f400bt(flash, buf + 0x70000, 0x70000, 32 * 1024);
-	write_page_m29f400bt(flash, buf + 0x78000, 0x78000, 8 * 1024);
-	write_page_m29f400bt(flash, buf + 0x7a000, 0x7a000, 8 * 1024);
-	write_page_m29f400bt(flash, buf + 0x7c000, 0x7c000, 16 * 1024);
-
-	return 0;
+	return write_page_m29f400bt(flash, buf, 0, flash->total_size * 1024);
 }
diff --git a/sharplhf00l04.c b/sharplhf00l04.c
index bb3e35937997e9edeb8c3530115eda859c2f654e..f21950aa46b7c6e2b1f48ff5f9f45a5a18a50301 100644
--- a/sharplhf00l04.c
+++ b/sharplhf00l04.c
@@ -56,16 +56,3 @@ int erase_lhf00l04_block(struct flashchip *flash, unsigned int blockaddr, unsign
 	}
 	return 0;
 }
-
-int write_lhf00l04(struct flashchip *flash, uint8_t *buf)
-{
-	int i;
-	int total_size = flash->total_size * 1024;
-	int page_size = flash->page_size;
-
-	for (i = 0; i < total_size / page_size; i++) {
-		write_page_82802ab(flash, buf + i * page_size, i * page_size, page_size);
-	}
-
-	return 0;
-}
diff --git a/sst28sf040.c b/sst28sf040.c
index 2de876b3e80d978e7ceb63258c94ea13a1f4c2e0..ba220939deceaf473e7bd689f5476adce29b4af4 100644
--- a/sst28sf040.c
+++ b/sst28sf040.c
@@ -118,15 +118,9 @@ static int erase_28sf040(struct flashchip *flash)
 
 int write_28sf040(struct flashchip *flash, uint8_t *buf)
 {
-	int i;
-	int total_size = flash->total_size * 1024;
-	int page_size = flash->page_size;
-
 	unprotect_28sf040(flash);
 
-	for (i = 0; i < total_size / page_size; i++) {
-		write_sector_28sf040(flash, buf + i * page_size, i * page_size, page_size);
-	}
+	write_sector_28sf040(flash, buf, 0, flash->total_size * 1024);
 
 	protect_28sf040(flash);
 
diff --git a/sst49lfxxxc.c b/sst49lfxxxc.c
index ec7d3da618f116533923998152d6f33085da18f6..c682be3d65fe259a43d14d62fe71757653cfc3f5 100644
--- a/sst49lfxxxc.c
+++ b/sst49lfxxxc.c
@@ -78,15 +78,10 @@ int erase_sector_49lfxxxc(struct flashchip *flash, unsigned int address, unsigne
 
 int write_49lfxxxc(struct flashchip *flash, uint8_t *buf)
 {
-	int i;
-	int total_size = flash->total_size * 1024;
-	int page_size = flash->page_size;
 	chipaddr bios = flash->virtual_memory;
 
 	write_lockbits_49lfxxxc(flash, 0);
-	for (i = 0; i < total_size / page_size; i++) {
-		write_page_82802ab(flash, buf + i * page_size, i * page_size, page_size);
-	}
+	write_page_82802ab(flash, buf, 0, flash->total_size * 1024);
 
 	chip_writeb(0xFF, bios);