From 3678ad8e38abee296221cd33e2cbc1e5181f715f Mon Sep 17 00:00:00 2001 From: Li-Ta Lo Date: Tue, 11 Jan 2005 02:48:22 +0000 Subject: [PATCH] *** empty log message *** git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1852 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- util/flash_and_burn/flash_rom.c | 2 +- util/flash_and_burn/sst49lf040.c | 19 +++++++++++++++++-- util/flash_and_burn/sst49lf040.h | 1 + 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/util/flash_and_burn/flash_rom.c b/util/flash_and_burn/flash_rom.c index 35a9f5098..ceb56ad8f 100644 --- a/util/flash_and_burn/flash_rom.c +++ b/util/flash_and_burn/flash_rom.c @@ -66,7 +66,7 @@ struct flashchip flashchips[] = { {"SST39VF020", SST_ID, SST_39VF020, NULL, 256, 4096, probe_jedec, erase_chip_jedec, write_39sf020,NULL}, {"SST49LF040", SST_ID, SST_49LF040, NULL, 512, 4096, - probe_jedec, erase_chip_jedec, write_49lf040,NULL}, + probe_jedec, erase_49lf040, write_49lf040,NULL}, {"SST49LF080A", SST_ID, SST_49LF080A, NULL, 1024, 4096, probe_jedec, erase_chip_jedec, write_49lf040,NULL}, {"SST49LF002A/B", SST_ID, SST_49LF002A, NULL, 256, 16 * 1024, diff --git a/util/flash_and_burn/sst49lf040.c b/util/flash_and_burn/sst49lf040.c index 624a8655e..f19b91e1c 100644 --- a/util/flash_and_burn/sst49lf040.c +++ b/util/flash_and_burn/sst49lf040.c @@ -30,6 +30,21 @@ #include "jedec.h" #include "sst49lf040.h" +int erase_49lf040(struct flashchip *flash) +{ + int i; + int total_size = flash->total_size * 1024; + int page_size = flash->page_size; + volatile char *bios = flash->virt_addr; + + for (i = 0; i < total_size / page_size; i++) { + /* Chip erase only works in parallel programming mode + * for the 49lf040. Use sector-erase instead */ + erase_sector_jedec(bios, i * page_size); + } + return 0; +} + int write_49lf040(struct flashchip *flash, unsigned char *buf) { int i; @@ -40,8 +55,8 @@ int write_49lf040(struct flashchip *flash, unsigned char *buf) printf("Programming Page: "); for (i = 0; i < total_size / page_size; i++) { /* erase the page before programming - * Chip erase only works in parallel programming mode for the 49lf040. - * Use sector-erase instead */ + * Chip erase only works in parallel programming mode + * for the 49lf040. Use sector-erase instead */ erase_sector_jedec(bios, i * page_size); /* write to the sector */ diff --git a/util/flash_and_burn/sst49lf040.h b/util/flash_and_burn/sst49lf040.h index 9e3cfa423..79dfec99f 100644 --- a/util/flash_and_burn/sst49lf040.h +++ b/util/flash_and_burn/sst49lf040.h @@ -1,6 +1,7 @@ #ifndef __SST49LF040_H__ #define __SST49LF040_H__ 1 +extern int erase_49lf040(struct flashchip *flash); extern int write_49lf040(struct flashchip *flash, unsigned char *buf); #endif /* !__SST49LF040_H__ */ -- 2.25.1