--- 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 + * Copyright (C) 2007 Reinder E.N. de Haan * * 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)