--- flashrom/pm49fl004.c 2007-12-06 23:19:15.000000000 +0100
+++ ../flashrom/pm49fl004.c 2007-12-06 23:13:25.000000000 +0100
@@ -3,6 +3,7 @@
*
* Copyright (C) 2004 Tyan Corporation
* Copyright (C) 2007 Nikolay Petukhov <nikolay.petukhov@gmail.com>
+ * Copyright (C) 2007 Reinder E.N. de Haan <lb_reha@mveas.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -51,19 +52,32 @@
int erase_49fl00x(struct flashchip *flash)
{
+ int i;
int total_size = flash->total_size * 1024;
int page_size = flash->page_size;
- int ret;
+ volatile uint8_t *bios = flash->virtual_memory;
/* unprotected */
write_lockbits_49fl00x(flash->virtual_registers, total_size, 0, page_size);
- ret = erase_chip_jedec(flash);
+// erase_chip_jedec will not work ... datasheet says "Chip erase is available in A/A Mux Mode only"
+ printf("Erasing page: ");
+ for (i = 0; i < total_size / page_size; i++) {
+ if ((i >= exclude_start_page) && (i < exclude_end_page))
+ continue;
+
+ /* erase the page */
+ erase_block_jedec(bios, i * page_size);
+ printf("%04d at address: 0x%08x", i, i * page_size);
+ 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");
+ fflush(stdout);
+ }
+ printf("\n");
/* protected */
write_lockbits_49fl00x(flash->virtual_registers, total_size, 1, page_size);
- return ret;
+ return 0;
}
int write_49fl00x(struct flashchip *flash, uint8_t *buf)