[flashrom] [PATCH] Combine block_erase*_en29lv640b and block_erase*_m29f400bt respectively.

Stefan Tauner stefan.tauner at alumni.tuwien.ac.at
Thu May 29 23:44:48 CEST 2014


This patch combines two identical block and chip erase functions respectively:
 - Merge block_erase_m29f400bt and block_erase_en29lv640b into
   erase_block_shifted_jedec.
 - Merge block_erase_chip_m29f400bt and block_erase_chip_en29lv640b into
   erase_chip_block_shifted_jedec.

Leave their implementations in en29lv640b.c for now.

Signed-off-by: Stefan Tauner <stefan.tauner at alumni.tuwien.ac.at>
---
 chipdrivers.h |  6 ++----
 en29lv640b.c  | 10 ++++------
 flashchips.c  | 28 ++++++++++++++--------------
 m29f400bt.c   | 51 ---------------------------------------------------
 4 files changed, 20 insertions(+), 75 deletions(-)

diff --git a/chipdrivers.h b/chipdrivers.h
index 7fe3202..ee86f83 100644
--- a/chipdrivers.h
+++ b/chipdrivers.h
@@ -147,8 +147,6 @@ int erase_chip_block_jedec(struct flashctx *flash, unsigned int page, unsigned i
 
 /* m29f400bt.c */
 int probe_m29f400bt(struct flashctx *flash);
-int block_erase_m29f400bt(struct flashctx *flash, unsigned int start, unsigned int len);
-int block_erase_chip_m29f400bt(struct flashctx *flash, unsigned int start, unsigned int len);
 int write_m29f400bt(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
 void protect_m29f400bt(struct flashctx *flash, chipaddr bios);
 
@@ -199,8 +197,8 @@ int unlock_stm50_nonuniform(struct flashctx *flash);
 
 /* en29lv640b.c */
 int probe_en29lv640b(struct flashctx *flash);
-int block_erase_en29lv640b(struct flashctx *flash, unsigned int start, unsigned int len);
-int block_erase_chip_en29lv640b(struct flashctx *flash, unsigned int start, unsigned int len);
+int erase_block_shifted_jedec(struct flashctx *flash, unsigned int start, unsigned int len);
+int erase_chip_block_shifted_jedec(struct flashctx *flash, unsigned int start, unsigned int len);
 int write_en29lv640b(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
 
 #endif /* !__CHIPDRIVERS_H__ */
diff --git a/en29lv640b.c b/en29lv640b.c
index 110aa18..a274f62 100644
--- a/en29lv640b.c
+++ b/en29lv640b.c
@@ -86,7 +86,7 @@ int probe_en29lv640b(struct flashctx *flash)
 	return 0;
 }
 
-int erase_en29lv640b(struct flashctx *flash)
+static int erase_chip_shifted_jedec(struct flashctx *flash)
 {
 	chipaddr bios = flash->virtual_memory;
 
@@ -105,8 +105,7 @@ int erase_en29lv640b(struct flashctx *flash)
 	return 0;
 }
 
-int block_erase_en29lv640b(struct flashctx *flash, unsigned int start,
-			   unsigned int len)
+int erase_block_shifted_jedec(struct flashctx *flash, unsigned int start, unsigned int len)
 {
 	chipaddr bios = flash->virtual_memory;
 	chipaddr dst = bios + start;
@@ -126,12 +125,11 @@ int block_erase_en29lv640b(struct flashctx *flash, unsigned int start,
 	return 0;
 }
 
-int block_erase_chip_en29lv640b(struct flashctx *flash, unsigned int address,
-			        unsigned int blocklen)
+int erase_chip_block_shifted_jedec(struct flashctx *flash, unsigned int address, unsigned int blocklen)
 {
 	if ((address != 0) || (blocklen != flash->chip->total_size * 1024)) {
 		msg_cerr("%s called with incorrect arguments\n", __func__);
 		return -1;
 	}
-	return erase_en29lv640b(flash);
+	return erase_chip_shifted_jedec(flash);
 }
diff --git a/flashchips.c b/flashchips.c
index 78c18ca..4a1e9f6 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -4730,10 +4730,10 @@ const struct flashchip flashchips[] = {
 					{8 * 1024, 8},
 					{64 * 1024, 127},
 				},
-				.block_erase = block_erase_en29lv640b,
+				.block_erase = erase_block_shifted_jedec,
 			}, {
 				.eraseblocks = { {8 * 1024 * 1024, 1} },
-				.block_erase = block_erase_chip_en29lv640b,
+				.block_erase = erase_chip_block_shifted_jedec,
 			},
 		},
 		.write		= write_en29lv640b,
@@ -4827,10 +4827,10 @@ const struct flashchip flashchips[] = {
 					{32 * 1024, 1},
 					{64 * 1024, 7},
 				},
-				.block_erase = block_erase_m29f400bt,
+				.block_erase = erase_block_shifted_jedec,
 			}, {
 				.eraseblocks = { {512 * 1024, 1} },
-				.block_erase = block_erase_chip_m29f400bt,
+				.block_erase = erase_chip_block_shifted_jedec,
 			},
 		},
 		.write		= write_m29f400bt,
@@ -4859,10 +4859,10 @@ const struct flashchip flashchips[] = {
 					{8 * 1024, 2},
 					{16 * 1024, 1},
 				},
-				.block_erase = block_erase_m29f400bt,
+				.block_erase = erase_block_shifted_jedec,
 			}, {
 				.eraseblocks = { {512 * 1024, 1} },
-				.block_erase = block_erase_chip_m29f400bt,
+				.block_erase = erase_chip_block_shifted_jedec,
 			},
 		},
 		.write		= write_m29f400bt,
@@ -4891,10 +4891,10 @@ const struct flashchip flashchips[] = {
 					{32 * 1024, 1},
 					{64 * 1024, 31},
 				},
-				.block_erase = block_erase_m29f400bt,
+				.block_erase = erase_block_shifted_jedec,
 			}, {
 				.eraseblocks = { {2048 * 1024, 1} },
-				.block_erase = block_erase_chip_m29f400bt,
+				.block_erase = erase_chip_block_shifted_jedec,
 			},
 		},
 		.write		= write_m29f400bt, /* Supports a fast mode too */
@@ -4923,10 +4923,10 @@ const struct flashchip flashchips[] = {
 					{8 * 1024, 2},
 					{16 * 1024, 1},
 				},
-				.block_erase = block_erase_m29f400bt,
+				.block_erase = erase_block_shifted_jedec,
 			}, {
 				.eraseblocks = { {2048 * 1024, 1} },
-				.block_erase = block_erase_chip_m29f400bt,
+				.block_erase = erase_chip_block_shifted_jedec,
 			},
 		},
 		.write		= write_m29f400bt, /* Supports a fast mode too */
@@ -11292,10 +11292,10 @@ const struct flashchip flashchips[] = {
 					{32 * 1024, 1},
 					{64 * 1024, 7},
 				},
-				.block_erase = block_erase_m29f400bt,
+				.block_erase = erase_block_shifted_jedec,
 			}, {
 				.eraseblocks = { {512 * 1024, 1} },
-				.block_erase = block_erase_chip_m29f400bt,
+				.block_erase = erase_chip_block_shifted_jedec,
 			}
 		},
 		.write		= write_m29f400bt,
@@ -11324,10 +11324,10 @@ const struct flashchip flashchips[] = {
 					{8 * 1024, 2},
 					{16 * 1024, 1},
 				},
-				.block_erase = block_erase_m29f400bt,
+				.block_erase = erase_block_shifted_jedec,
 			}, {
 				.eraseblocks = { {512 * 1024, 1} },
-				.block_erase = block_erase_chip_m29f400bt,
+				.block_erase = erase_chip_block_shifted_jedec,
 			}
 		},
 		.write		= write_m29f400bt,
diff --git a/m29f400bt.c b/m29f400bt.c
index c2236e5..399a7e0 100644
--- a/m29f400bt.c
+++ b/m29f400bt.c
@@ -85,54 +85,3 @@ int probe_m29f400bt(struct flashctx *flash)
 
 	return 0;
 }
-
-int erase_m29f400bt(struct flashctx *flash)
-{
-	chipaddr bios = flash->virtual_memory;
-
-	chip_writeb(flash, 0xAA, bios + 0xAAA);
-	chip_writeb(flash, 0x55, bios + 0x555);
-	chip_writeb(flash, 0x80, bios + 0xAAA);
-
-	chip_writeb(flash, 0xAA, bios + 0xAAA);
-	chip_writeb(flash, 0x55, bios + 0x555);
-	chip_writeb(flash, 0x10, bios + 0xAAA);
-
-	programmer_delay(10);
-	toggle_ready_jedec(flash, bios);
-
-	/* FIXME: Check the status register for errors. */
-	return 0;
-}
-
-int block_erase_m29f400bt(struct flashctx *flash, unsigned int start,
-			  unsigned int len)
-{
-	chipaddr bios = flash->virtual_memory;
-	chipaddr dst = bios + start;
-
-	chip_writeb(flash, 0xAA, bios + 0xAAA);
-	chip_writeb(flash, 0x55, bios + 0x555);
-	chip_writeb(flash, 0x80, bios + 0xAAA);
-
-	chip_writeb(flash, 0xAA, bios + 0xAAA);
-	chip_writeb(flash, 0x55, bios + 0x555);
-	chip_writeb(flash, 0x30, dst);
-
-	programmer_delay(10);
-	toggle_ready_jedec(flash, bios);
-
-	/* FIXME: Check the status register for errors. */
-	return 0;
-}
-
-int block_erase_chip_m29f400bt(struct flashctx *flash, unsigned int address,
-			       unsigned int blocklen)
-{
-	if ((address != 0) || (blocklen != flash->chip->total_size * 1024)) {
-		msg_cerr("%s called with incorrect arguments\n",
-			__func__);
-		return -1;
-	}
-	return erase_m29f400bt(flash);
-}
-- 
Kind regards, Stefan Tauner





More information about the flashrom mailing list